Skip to content

List reports

Try it

Lists the reports this key may run, with the query parameters each takes.

GEThttps://tablebuddy.radioworkflow.com/api/v1/reports
Read

Every report this key may run, in the report catalog's order, with the query parameters its span takes: run one with run-report. Report 24, Labor (labor), is listed only for a key that also carries payroll:read, made by someone who holds Pay rates and payroll. The tax report is titled with the restaurant's own tax label.

Authentication

Key
Authorization: Bearer <key>, or the same key in x-api-key. A key acts as the person who made it, cut down to this endpoint’s scope, and never as an owner. How keys work
Scope
reports:readRead reports
The key's creator needs
View reports (reports.view)
With payroll:read
With payroll:read (Read pay, labor cost and labor %) also on the key, what it grants counts here too. No other scope on the key changes what this endpoint does.

Request headers

Authorizationrequired
Bearer <key>. x-api-key: <key> works too; Authorization wins when both are sent.
Idempotency-Keyignored
Ignored: a read changes nothing, so there is nothing to repeat. Idempotency

Query parameters

None. A query string is answered 422 invalid_request.

Response

200OK

Not paged: every report the key may run, at once.

currencystringISO 4217
The restaurant's currency: every amount in this answer is in its minor units.
minor_digitsinteger0–3
Digits after the point when an amount is shown: 2 for USD (cents), 0 for JPY.
dataarray of object
The reports, in the catalog's order.
data[].idenum
The report: run it with run-report.
26 accepted values
daily-salesmonthly-salessales-by-rangeproduct-performanceitem-quantitiesinventorypurchasessuppliersfinancial-summaryorder-statusvatservice-chargediscountscash-collectionbank-collectionpayment-methodsgateway-settlementbank-settlementpending-settlementcashier-collectiondaily-closingtipspayableslabormenu-engineeringfood-usage
data[].titlestring
Its title, with the restaurant's own tax label for the tax report.
data[].descriptionstring
What it answers.
data[].spanenum
What days it covers: one day, one month, a range, or right now.
daymonthrangenow
data[].parametersarray of enum
The query parameters it takes.
daymonthfromtorangeview

An answer may gain fields within v1: ignore the ones you do not know. Versioning

Response headers

request-idalways
This request’s id. Quote it when asking for help.
Cache-Controlalways
no-store: an answer is never cached.
RateLimit-Limit, RateLimit-Remaining, RateLimit-Resetonce the key is known
The key’s units a minute, what is left of this minute’s, and the seconds until the window starts again. Never on a 401. Rate limits
x-error-codeon an error
The error’s code, the same as error.code in the body.
Retry-Afteron a 429
Seconds to wait before sending the same request again.
WWW-Authenticateon a 401, and a 403 insufficient_scope
The Bearer challenge, naming what was wrong with the key or the scope it lacks.

Errors

403insufficient_scope
The key does not carry the endpoint's scope.

Fix: Scopes are fixed when a key is made: make a new key with the scope.

403issuer_access_ended
The key's creator has left the restaurant, was suspended, or was removed and invited back.

Fix: Make a new key from an active account.

403issuer_permission_changed
The key's creator no longer holds any permission that could put this scope on a key.

Fix: Ask an owner to restore the permission, or make a new key from an account that holds it.

403permission_required
The key's permissions for this endpoint (its creator's, cut down to the endpoint's scope) do not include what this endpoint, or this argument, needs. The message names it.

Fix: Use a key with the named scope, from a creator who holds the named permission.

422invalid_request
A query parameter is sent: this endpoint takes none.

Fix: Send the request with no query string.

Possible on every endpoint
401missing_api_keyNo Authorization: Bearer header and no x-api-key header.
401invalid_api_keyThe key is unknown, revoked or expired (answered alike).
429rate_limitedOver the key's 60 units a minute, or over 30 unknown keys a minute from one network (an address; an IPv6 caller's /64).
500internal_errorSomething failed on our side. Nothing kept the Idempotency-Key.

Every code, and when to retry

Request
curl -X GET "$TABLEBUDDY_URL/api/v1/reports" \
  -H "Authorization: Bearer $TABLEBUDDY_API_KEY"
Response200
{
  "currency": "USD",
  "minor_digits": 2,
  "data": [
    {
      "id": "payment-methods",
      "title": "Collection by payment method",
      "description": "What each payment method took, what was refunded on it, and its share.",
      "span": "range",
      "parameters": [
        "from",
        "to",
        "range",
        "view"
      ]
    }
  ]
}