Skip to main content
Technical Preview

Overview

Client-mode REST API connectors for Box: upload shift reports, batch records and setpoint tables from MQTT as files or new versions, download recipes and configs, list, copy and move folders and files to archive, tag files with metadata and query by it, search, share with shared links, read collaborations, comment, open review tasks, register V2 webhooks and poll the event stream. This is one of the templates in the Box REST API app (box). Deploy it alongside the other connectors of that app when they depend on each other (for example a token connector plus an API connector). See Box for the package overview.
Not yet verified against the live vendor API: No Box credentials (BOX_ACCESS_TOKEN, or BOX_CLIENT_ID + BOX_CLIENT_SECRET + BOX_ENTERPRISE_ID of an authorized Client Credentials app), so no authenticated GET and no upload could run. api.box.com authenticates before routing, so keyless probes can prove the auth scheme but not the paths: all 43 Bearer events answered 400 ‘Malformed auth header’ to an empty token and 401 invalid_token to a dummy token; on upload.box.com both upload paths answered 401 while the same paths + ‘_zz’ answered 400 ‘Invalid API request path’; /oauth2/token validated the client_credentials / refresh / jwt-bearer grants and box_subject_type live (400 invalid_client / invalid_request / invalid_grant).

Auth

  • schemes: [“Authorization: Bearer {value.json.access_token} on every event except OAuthToken (OAuth 2.0 access token; about 60 minutes)”, “OAuthToken: POST https://api.box.com/oauth2/token, application/x-www-form-urlencoded {value.json.form} = grant_type=client_credentials&client_id=…&client_secret=…&box_subject_type=enterprise|user&box_subject_id=<enterprise id|user id> (Client Credentials Grant, no refresh token) or grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=<signed JWT>&client_id&client_secret (JWT apps), no Authorization header”, “SharedItemGet additionally sends BoxApi: shared_link={value.json.shared_link}”]
  • secrets: [“BOX_ACCESS_TOKEN”, “BOX_CLIENT_ID”, “BOX_CLIENT_SECRET”, “BOX_ENTERPRISE_ID”]
  • scopes: [“root_readwrite (Read and write all files and folders)”, “manage_webhook (Manage webhooks)”, “manage_enterprise_properties (only for enterprise metadata templates)”]
  • note: Inject secrets with a LoT action (GET SECRET); never retain topics that carry the token or client secret; restrict storage/box/oauth/# with ACLs (the response carries the access token). The CCG service account has its own empty root: invite it (AutomationUser_…@boxdevedition.com, from UserMe) as Editor on the plant folders. App must be authorized in the Box Admin Console (automatic on free developer accounts) and reauthorized after scope changes.
Auth headers used by the template: Authorization: Bearer {value.json.access_token}.

Template parameters

BASE_ADDRESS default: https://upload.box.com.

Events

Deploy

Get the template card (JSON with template and metadata) from the broker, then deploy the connector:
The deployable connector from the REST API app, with BASE_ADDRESS already filled in:
Deploy it with -addRoute (do not include ADD METADATA).

Usage example

Call FileUpload by publishing a JSON payload to its request topic, and read the reply on the response topic:
Last modified on October 21, 2026