Cornvilla

Dla programistów

REST API Cornvilla.

Podłącz ERP, sklep albo własną aplikację: zamówienia ze wszystkich kanałów, produkty, stany na lokacjach, przesyłki i zwroty. Zwykłe REST API z JSON-em i opisem OpenAPI. Logowanie OAuth2 (Client ID i Client Secret), jak w Apilo czy Allegro. API jest w cenie każdego pakietu — także w okresie próbnym.

Start w 5 minut

  1. 1

    Dodaj aplikację

    W panelu Cornvilla: Ustawienia → API → Dodaj aplikację. Nadaj nazwę i zaznacz uprawnienia. Dostaniesz Client ID i Client Secret — secret widać tylko raz, zapisz go po stronie serwera.

  2. 2

    Pobierz token

    Wyślij POST https://api.cornvilla.com/v1/oauth/token z grant_type=client_credentials i danymi aplikacji (nagłówek Basic albo treść). Token jest ważny godzinę.

  3. 3

    Wywołuj API

    Dodawaj nagłówek Authorization: Bearer <token>, np. GET https://api.cornvilla.com/v1/me albo GET https://api.cornvilla.com/v1/orders?status=pending. Po wygaśnięciu tokenu pobierz nowy.

# 1. Token (Client ID i Client Secret z Ustawienia → API)
curl -X POST "https://api.cornvilla.com/v1/oauth/token" \
  -u "cv_0123456789abcdef:CLIENT_SECRET" \
  -d "grant_type=client_credentials"

{ "access_token": "cvat_…", "token_type": "Bearer", "expires_in": 3600, "scope": "orders:read stock:read" }

# 2. Wywołanie
curl "https://api.cornvilla.com/v1/me" -H "Authorization: Bearer cvat_…"

{
  "company": { "id": "…", "slug": "twoja-firma", "name": "Twoja Firma Sp. z o.o." },
  "app": { "name": "ERP", "clientId": "cv_0123456789abcdef", "scopes": ["orders:read", "stock:read"] },
  "limits": { "requestsPerMinute": 120 },
  "warehouse": { "id": "…", "code": "GL", "name": "Magazyn główny", "isMain": true, "active": true }
}

Aplikacje i uprawnienia

Każdy system dostaje własną aplikację z Client ID i Client Secret (OAuth2 client_credentials, jak Apilo czy Allegro). Uprawnienia: zamówienia, produkty, stany, przesyłki, zwroty, magazyn — osobno odczyt i zapis. Nowy secret albo usunięcie aplikacji odcina dostęp od razu.

Limity

Limit zapytań na minutę zależy od pakietu (od 60/min) i liczy się na aplikację. Każda odpowiedź ma nagłówki X-RateLimit-Limit, X-RateLimit-Remaining i X-RateLimit-Reset; po przekroczeniu dostaniesz 429 z Retry-After.

Bezpieczeństwo

Tylko HTTPS. Client Secret trzymaj po stronie serwera, nigdy w przeglądarce ani w repozytorium. Dane odbiorców przesyłek (uprawnienie shipments:read) są danymi osobowymi — pobieraj je tylko, gdy ich potrzebujesz.

Wersje i zmiany

Adresy zaczynają się od /v1. W tej wersji tylko dodajemy pola i adresy; nic nie usuwamy ani nie zmieniamy znaczenia. Webhooki (zmiana statusu zamówienia, przesyłka, stan) — w przygotowaniu.

Zasady wspólne

  • Adres bazowy: https://api.cornvilla.com/v1. Treści i odpowiedzi w JSON (UTF-8), daty w ISO 8601 ze strefą, kwoty w groszach.
  • Stronicowanie: page (od 1) i pageSize (do 200); odpowiedź: items, page, pageSize, total.
  • Synchronizacja przyrostowa: GET /orders?updatedSince=2026-11-07T10:00:00Z zwraca tylko zamówienia zmienione po tej chwili.
  • Wiele magazynów: domyślnie magazyn główny; id innego magazynu (z GET /warehouses) przekaż w nagłówku X-Warehouse.
  • Wszystkie adresy: Dokumentacja API — parametry, treść, odpowiedzi i przykłady dla każdego adresu.
  • Identyfikatory: obiekty mają stałe id (UUID). Produkty znajdziesz też po dokładnym sku albo ean, zamówienia po numerze przez q.

Błędy

Każdy błąd to JSON { "code": "…", "message": "…" } — code jest stały (do obsługi w kodzie), message po polsku (do pokazania).

HTTPcodeKiedy
401UNAUTHORIZED / INVALID_TOKENBrak tokenu albo token nieprawidłowy, wygasły (po godzinie) lub unieważniony nowym sekretem — pobierz nowy.
401invalid_clientPrzy POST /oauth/token: zły Client ID albo Client Secret, aplikacja usunięta.
403FORBIDDEN_SCOPEAplikacja nie ma uprawnienia wymaganego przez ten adres (np. orders:write).
400VALIDATION_ERRORBłędne dane w zapytaniu albo treści — komunikat wskazuje pole.
404NOT_FOUNDNie ma takiego zamówienia / produktu / adresu.
409CONFLICTOperacja niemożliwa w tym stanie (np. anulowanie wysłanego zamówienia).
402TENANT_READONLYKonto firmy tylko do odczytu (nieprzedłużone) — zapisy odrzucone.
429RATE_LIMIT_EXCEEDEDPrzekroczony limit zapytań na minutę — odczekaj tyle, ile mówi nagłówek Retry-After.

Zobacz swój magazyn w Cornvilla jeszcze dziś.

Załóż konto próbne i przejdź całą ścieżkę na przykładowych danych — albo napisz, pokażemy system na Twoich.