The organisation's changes, oldest first, for polling
Any member, or an API key with the read scope (ADR-026). The organisation's changes in the order
they became visible, oldest first, as {id, occurred_at, entity_type, entity_id, action}: no values,
no actors, no personal data; read the entity for its current state. Keep next_cursor of the last
page and ask again later: a change appears only once every transaction that started before it has
finished, so a cursor never skips a change that commits late. next_cursor is set whenever the page
has items, also on the last page; an empty page keeps the cursor you sent (next_cursor null). Without
cursor the feed starts at the beginning of the organisation's history.
apiKeyAutorisierungBearer <Token>Organisation API key sent as Authorization: Bearer bp_live_… (ADR-017). Accepted only by the
operations that list this scheme, with the scope in their x-api-key-scope.
limit?integerMaximum number of items to return.
1 <= value <= 20050cursor?stringOpaque cursor from a previous page's next_cursor.
1 <= length <= 512types?array<>Only these actions (all when omitted).
items <= 9One page of changes.
application/json- response
items*array<>next_cursor*|Cursor for the next page, or null when this is the last page.
curl -X GET 'https://example.com/api/v1/changes'{ "items": [ { "action": "battery.created", "entity_id": "8161163a-f227-466f-bc01-090a01e80165", "entity_type": "battery", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "occurred_at": "2019-08-24T14:15:22Z" } ], "next_cursor": "string"}Check the signatures of a version on the server GET
No authentication. A convenience: the same check works offline with the public JSON and `/.well-known/batterypass/keys.json` (ADR-004, ADR-013). Without `version_no`, the current version.
Upload a spreadsheet of units POST
Editor and above, or an API key with the `import` scope (ADR-026). A CSV (UTF-8, UTF-16 or Windows-1252; `;`, `,`, tab or `|` separated) or XLSX file of at most 10 MB, 10 000 rows and 200 columns; the first non-empty row holds the headers. The answer is the import with a mapping proposed from the headers (registry CSV headers, aliases, labels; units such as `(kWh)` are converted), or taken from the import preset named in `preset` (the ERP registry): a preset maps the columns it knows by their headers and leaves the others unmapped. A key stages the import only: members of the organisation commit it and approve its values in the portal, so declared data still enters through a member's decision.