Verni
Biznis portal
Početak

Verni API
dokumentacija

Verni B2B API omogućava kompaniji koja već ima aplikaciju za porudžbine da doda loyalty program bez sopstvenog razvoja. Partner nam javlja posete, a mi vodimo brojanje i nagrade.

Programi lojalnosti

  • Program poseta: kupac skuplja posete, a kad pređe prag dobija nagradu.
  • Program potrošnje: kupac dobija nagradu kad ukupna potrošnja pređe zadati iznos.
  • Program cashback-a: kupac dobija procenat računa nazad na svoj balans.

Vaučeri

Kad kupac pređe prag, može da napravi vaučer za nagradu.

Uključivanje

  1. Mi registrujemo partnerov lokal u Verni portalu.
  2. U portalu podešavamo program lojalnosti i nagrade.
  3. Partneru predajemo API ključ vezan za njegov lokal.
Jedan ključ važi za jedan lokal, pa partner sa više lokala dobija po jedan ključ za svaki. Partner ne pravi nalog i ne podešava ništa kod sebe, osim poziva ka našem API-ju.

Autentikacija

Svaki poziv mora da sadrži API ključ u Authorization zaglavlju. Ključ je vezan za jedan lokal, pa se lokal nikad ne šalje u pozivu.

Neispravan, opozvan ili istekao ključ vraća 401. Ograničenje je 120 poziva u minuti po ključu, a prekoračenje vraća 429 sa Retry-After zaglavljem.

Ključ čuvajte na serveru, nikad u mobilnoj ili web aplikaciji koju korisnici preuzimaju. Ako je ključ procurio, javite nam da ga opozovemo i izdamo novi.
BASE URL
https://sandbox-api.verni.rs/v1
FORMAT
Content-Type: application/json
Accept: application/json
AUTORIZACIJA
Authorization: Bearer vrn_live_...
Lokal

GET /me

Vraća detalje lokala za koji je izdat API ključ. Koristite ga da proverite da li je ključ ispravan i da dobijete podatke o lokalu.

Odgovor

  • id, name, slug: identifikacija lokala.
  • type: tip lokala, npr. restaurant.
  • is_enabled: da li je lokal aktivan u Verni sistemu.
  • email, phone, address, city, postal_code, website_url: kontakt i adresa, mogu biti null.
  • logo_url: adresa logotipa lokala.
  • lat, lng: koordinate, ili null.

Greške

  • 401: ključ nedostaje, neispravan, opozvan ili istekao.
  • 429: prekoračeno ograničenje poziva.
ZAHTEV
curl https://sandbox-api.verni.rs/v1/me \
  -H "Authorization: Bearer vrn_live_..." \
  -H "Accept: application/json"
200 OK
{
  "data": {
    "id": 42,
    "name": "Pizzeria Napoli",
    "slug": "pizzeria-napoli",
    "type": "restaurant",
    "is_enabled": true,
    "email": "[email protected]",
    "phone": "+381601234567",
    "address": "Knez Mihailova 10",
    "city": "Beograd",
    "postal_code": "11000",
    "website_url": null,
    "logo_url": "https://app.verni.rs/storage/logos/napoli.png",
    "lat": 44.8176,
    "lng": 20.4569
  }
}
401 UNAUTHORIZED
{
  "message": "Invalid API key."
}
ISPROBAJ
Unesite API ključ u zaglavlju i pošaljite zahtev.
Programi

GET /reward-programs

Vraća programe lojalnosti lokala za koji je izdat API ključ. Vraćaju se samo uključeni programi koji su trenutno aktivni, a welcome program je uvek prvi.

Odgovor

  • id, name, description: identifikacija i opis programa, opis može biti null.
  • is_welcome: da li je ovo welcome program, tj. nagrada za prvu posetu.
  • trigger.visit_count: broj poseta potreban za nagradu, ili null.
  • trigger.amount_spent: ukupna potrošnja potrebna za nagradu, ili null.
  • trigger.menu_items: stavke menija sa traženom količinom (id, name, quantity). Prazna lista ako program ne koristi stavke menija.
  • reward.type: reward_product (besplatan proizvod), discount_percent (popust u procentima) ili discount_fixed (fiksni popust).
  • reward.value, reward.description: vrednost nagrade i njen opis.
  • active_from, active_until: period važenja u ISO 8601 formatu, ili null ako nije ograničen.

Greške

  • 401: ključ nedostaje, neispravan, opozvan ili istekao.
  • 429: prekoračeno ograničenje poziva.
ZAHTEV
curl https://sandbox-api.verni.rs/v1/reward-programs \
  -H "Authorization: Bearer vrn_live_..." \
  -H "Accept: application/json"
200 OK
{
  "data": [
    {
      "id": 7,
      "name": "Dobrodošlica",
      "description": null,
      "is_welcome": true,
      "trigger": {
        "visit_count": 1,
        "amount_spent": null,
        "menu_items": []
      },
      "reward": {
        "type": "discount_percent",
        "value": 10,
        "description": "10% popusta na prvu porudžbinu"
      },
      "active_from": null,
      "active_until": null
    },
    {
      "id": 8,
      "name": "Svaka peta pizza",
      "description": "Skupi 5 pizza, šesta je besplatna.",
      "is_welcome": false,
      "trigger": {
        "visit_count": null,
        "amount_spent": null,
        "menu_items": [
          { "id": 31, "name": "Margarita", "quantity": 5 }
        ]
      },
      "reward": {
        "type": "reward_product",
        "value": 1,
        "description": "Besplatna Margarita"
      },
      "active_from": "2026-11-01T00:00:00+01:00",
      "active_until": null
    }
  ]
}
401 UNAUTHORIZED
{
  "message": "Invalid API key."
}
ISPROBAJ
Unesite API ključ u zaglavlju i pošaljite zahtev.