# node-red-odbcwritenow -------- Node-RED node for downloading MYOB data from ODBCWriteNow / MYOBSync. This package provides one node type: `odbcwritenow-get`. ## What It Does The node builds and calls: ```text https://myobsync.accede.com.au/download/{what}/json/{page}?apikey={apikey}[&filters=...][&datefrom=...][&dateto=...][&orderby=...] ``` It then: - sends parsed JSON rows to output 1 - sends "no data" completion messages to output 2 ## Prerequisites - Node-RED `>= 4.0.0` - Valid ODBCWriteNow / MYOBSync API key ## Install Install in your Node-RED user directory: ```bash cd ~/.node-red npm install @accede/node-red-contrib-odbcwritenow ``` Restart Node-RED after installation. ## Node Configuration Editor fields: - `Name` (optional) - `What` (required): dataset/resource name, for example `sales_invoice_item` - `OrderBy` (optional): default sort expression - `MaxRetries` (optional, default `3`): number of retries for timeout/token errors - `RetryBackoffMs` (optional, default `500`): base delay in milliseconds; each retry uses exponential backoff (`base * 2^attempt`) - `APIKey` (required unless provided in `msg.apikey`) ## Runtime Inputs (`msg`) You can override behavior per message: - `msg.page` (default `0`) - `msg.apikey` (overrides configured API key) - `msg.orderby` (overrides configured order by) - `msg.filters` - `msg.datefrom` - `msg.dateto` ## Outputs `odbcwritenow-get` has 2 outputs: 1. Data output - `msg.payload`: parsed JSON array returned by the API - `msg.rows`: number of rows in `payload` - `msg.page`, `msg.what`, `msg.retry` 2. No-data output - emitted when response contains `"no data found"` - `msg.payload = []` - `msg.nodata = true` - `msg.complete = true` ## Status Behavior - Blue ring: currently fetching - Green dot: rows returned - Green ring: no data found - Red ring: timeout/token error retries or request/parsing error ## Notes - Base URL is currently fixed to `https://myobsync.accede.com.au`. - Timeout and token error responses are retried using bounded exponential backoff. ## License ISC. See [LICENSE](LICENSE).