Overview
A client-mode connector for the Smartsheet API 2.0 that puts plant data into the sheets operations teams already work in. A typical flow appends a row to a shift log, downtime tracker or quality-check sheet whenever the broker sees an event, updates status and readings on that row as things change, keeps sheet-summary KPIs such as OEE, scrap or uptime current, adds a comment and a dashboard link to the row, asks the shift lead to confirm the cause with an update request, and moves closed rows to an archive sheet. The same connector reads sheets, rows, cell history, reports and dashboards back into the broker, and registers Smartsheet webhooks that post sheet changes to a Coreflux server connector. One connector carries 44 events (27 GET, 12 POST, 5 PUT; 17 writes, no DELETE). Topics usedevops/smartsheet/<object>/<verb>; each response is published on <source topic>/response.
The template was checked against Smartsheet’s OpenAPI reference and a local mock.
ServerInfo was called live, without a token, on the US, EU and AU hosts. Every event was sent to api.smartsheet.com with a dummy token, and each one answered 401 with error code 1002 (invalid token). Without a token, 18 events also showed that Smartsheet connectors their path and method: the real path was refused (401 or 403) while the same path with a bad suffix answered 404. Nothing has run with a real token yet, so status stays blocked until an authenticated read and a row write pass.Setup
- In Smartsheet, open Account > Apps & Integrations > API Access and generate an API access token. The token acts as the user who created it, so use a service account (for example
plant-integration@example.com) that is shared on the sheets you automate. OAuth 2.0 access tokens work the same way. - Keep the token in a broker secret (for example
SMARTSHEET_ACCESS_TOKEN) and inject it in a LoT action withGET SECRET. Never retain topics that carry it. - Read the sheet once with
SheetGetorColumnsListto get its column ids. Rows are written by column id, not by column title.
Authentication
Every event sendsAuthorization: Bearer <token> built from the access_token field of the payload:
ServerInfo also works with an empty access_token, which makes it a simple reachability check.
Regions
The template points athttps://api.smartsheet.com (paths under /2.0/). For Smartsheet Regions Europe change BASE_ADDRESS to https://api.smartsheet.eu; for Smartsheet Regions Australia use https://api.smartsheet.au. Each region issues its own tokens, so a token from one region does not work on another.
Query parameters and bodies
Events that take query parameters read them, already URL-encoded, fromquery (for example rowsModifiedSince=2026-10-05T06%3A00%3A00Z&level=2). Leave query empty for defaults. Writes send JSON from body. Smartsheet ids are 64-bit integers: send them as JSON numbers inside body, and as plain digits in path fields such as sheet and row. Values are sent as given, so URL-encode query yourself.
Examples
Append a downtime row when a press stops (devops/smartsheet/rows/add):
result, which holds the new rows and their id values. Keep the row id to update the row later.
Close the row when the press restarts (devops/smartsheet/rows/update):
devops/smartsheet/sheets/get):
devops/smartsheet/sheets/version/get first if you only need to know whether anything changed.
Update a KPI in the sheet summary (devops/smartsheet/sheets/summary/fields/update):
devops/smartsheet/webhooks/create, then devops/smartsheet/webhooks/update with {"enabled": true}):
Smartsheet-Change-Agent: coreflux-broker. Callbacks for changes made through this connector then carry changeAgent coreflux-broker, so the server connector can skip them and avoid update loops.
Events
Limits
Smartsheet allows 300 requests per minute per token for most operations. Cell history and file attachments count ten times, which leaves 30 requests per minute. Above that Smartsheet answers429 with error code 4003. Batch rows into one RowsAdd or RowsUpdate call instead of one call per value. Lists are paginated: use page and pageSize (or includeAll=true) on most lists, and maxItems and lastKey on workspaces, folder children and dashboards.
Not packaged
- All DELETE endpoints (sheets, rows, columns, discussions, comments, attachments, webhooks) on purpose. Archive closed rows with
RowsMoveinstead. - File uploads (multipart or binary) to sheets, rows and comments.
RowAttachmentAddUrlattaches links only. - Sharing, groups, user administration, favorites, proofs, automation rules, cross-sheet references, publish settings, sheet import, event reporting (enterprise audit) and OAuth token exchange.
- The incoming webhook direction: Smartsheet posts callbacks to a separate
ENABLE_SERVERREST_API connector, which must answer the verification challenge.
Suggested branches
feat/rest-api-route-smartsheet for the broker template and feat/docs-rest-api-smartsheet for this page.
