REVO API · Noutăți

Noutăți în API

Ce s-a schimbat în API-ul REVO, pe date. Versiunea 1 doar adaugă câmpuri, parametri și endpoint-uri. Nimic de aici nu strică o integrare existentă. Dacă vreodată trebuie o schimbare incompatibilă, ea vine ca /v2, cu cel puțin 6 luni în care merg ambele versiuni.

  1. v1.1: chei API pentru date (meniu, locații, vânzări, stocuri)

    • Scopes pe chei: locations:read, menu:read, sales:read, stock:read, orders:write. Cheile existente au primit orders:write, adică exact ce puteau face până acum. Un apel în afara scope-ului răspunde 403 insufficient_scope.
    • Endpoint-uri noi: GET /locations/{id}, /categories, /products, /products/{id}, /allergens, /sales/daily, /sales/products, /sales/orders, /sales/orders/{id}, /ingredients, /ingredients/{id}.
    • Liste cu cursor (next_cursor, has_more, limit până la 200), sincronizare cu updated_since și rânduri șterse marcate (deleted: true).
    • La sincronizare (updated_since sau include_deleted), filtrele care se schimbă odată cu datele (available și category_id la produse, below_min la stocuri) răspund 422: un produs pus pe 86 n-ar mai ajunge niciodată în copia ta. Sincronizezi tot și filtrezi la tine.
    • Un cursor modificat sau o dată imposibilă (updated_since, from, to) răspunde 422, niciodată 500. La fel GET /orders?updated_since= de la comenzi, cu un an ca 0000.
    • GET /me arată acum scopes, all_locations și rate_limits.
    • Cheile pentru date (fără orders:write) merg și când restaurantul are comenzile online oprite.
    • Regenerarea unei chei poate păstra cheia veche încă 24 de ore, ca un site live să nu se oprească până pui cheia nouă.
    • Limite noi: 600 de cereri pe minut pentru toate cheile unui restaurant; 30 pe minut pentru /sales/daily și /sales/products; după 30 de cereri cu o cheie greșită într-un minut, adresa de pe care vin primește 429.
    • Pe rutele de date, display_message e scris neutru („Cheia nu are acces la această locație.”); rutele de comenzi păstrează textele de până acum.
    • Un browser care deschide referința interactivă de pe revoapp.ro poate citi antetele X-RateLimit-*, Retry-After, ETag și Idempotent-Replayed.
    • Specificația OpenAPI 3.1 e publică: openapi.yaml · openapi.json, cu referința interactivă.
  2. v1.0: Comenzi online

    • API-ul de comenzi pentru site-ul și aplicația restaurantului: GET /me, /locations, /locations/{id}/menu (cu ETag), POST /orders (idempotent după external_id, prețuri calculate de REVO, expected_total), GET /orders, GET /orders/{id}, POST /orders/{id}/cancel, POST /webhooks/test.
    • Webhook-uri semnate pentru statusuri: order.accepted, order.rejected, order.ready, order.completed, order.cancelled, ping.
    • Chei de test (rvo_test_…): comenzile de test nu ajung la bucătărie, la casa de marcat, în stocuri sau în rapoarte.