Connect an HTTP endpoint
Two directions — TableDI pulls your endpoint on a schedule, or an external system pushes into an address TableDI gives you. Covers headers, the debug request, and using JSONPath to point at the array in the response.
Two directions
| Mode | Who starts it | Suits |
|---|---|---|
| As a client | TableDI requests a URL you give it, on a schedule | Third-party open APIs, a query endpoint in your own system |
| As a server | TableDI gives you an address and an external system POSTs to it | Devices, scripts, other systems that push |
Both are set up in the same four-step wizard as any other data connection.
Client mode
Connection Settings — paste the endpoint URL and the host and path are split out for you. For endpoints needing a token, add a header row (Key / Value, e.g. Authorization: Bearer …). Authentication differs per system; the endpoint's own documentation is the authority.
Channel Settings — a note, and the Request Frequency. Debug fires one request immediately and shows the raw response. Do not move past this step until something comes back; if it stays empty the wizard tells you so: No data received yet. Please verify channel settings.
Date Selection — the returned JSON appears in a preview and you tick the nodes that should enter the table. Endpoints usually return an object wrapping an array, so switch to Original Code and write one JSONPath straight at the array:
$.data.list[*]
Common shapes: $..name for a name at any depth; $.items[?(@.status == 'paid')] to filter; $.items[0:10] for the first ten. An invalid path is rejected with Enter a valid JSON Path, and there is a JSON Path Guide link beside the field. The full syntax is in the JSONPath section of the function reference.
Data Binding — fields onto columns, then finish.
Server mode
Choosing "as a server" makes TableDI generate a receiving address. Configure that as the push target in the external system, and every POST adds a row — or updates one, if the table has a primary key. Channel Settings can send one debug payload so you can confirm the shape before defining the structure and binding the columns.
Details worth knowing
- Every pull appends. An endpoint that returns "the current full state" rather than "new records since last time" will multiply your rows unless a primary key is set. This is the single most common mistake with HTTP connections.
- The desktop engine runs on your computer. The endpoint has to be reachable from here, and pulls only happen while the app is open. For unattended 24/7 syncing, use the team edition's cloud engine.
- Server mode's address is local too. In the desktop app it is only reachable from this machine; for an external system to push in, that is a team-edition setup.
- Rate limits are the provider's. Set Request Frequency to something the endpoint tolerates; too aggressive a schedule gets you throttled, and the channel shows Sync Error.