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
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
Pobierz token
Wyślij
POST https://api.cornvilla.com/v1/oauth/tokenzgrant_type=client_credentialsi danymi aplikacji (nagłówek Basic albo treść). Token jest ważny godzinę. - 3
Wywołuj API
Dodawaj nagłówek
Authorization: Bearer <token>, np.GET https://api.cornvilla.com/v1/mealboGET 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) ipageSize(do 200); odpowiedź:items,page,pageSize,total. - Synchronizacja przyrostowa:
GET /orders?updatedSince=2026-11-07T10:00:00Zzwraca tylko zamówienia zmienione po tej chwili. - Wiele magazynów: domyślnie magazyn główny; id innego magazynu (z
GET /warehouses) przekaż w nagłówkuX-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ładnymskualboean, zamówienia po numerze przezq.
Błędy
Każdy błąd to JSON { "code": "…", "message": "…" } — code jest stały (do obsługi w kodzie), message po polsku (do pokazania).
| HTTP | code | Kiedy |
|---|---|---|
| 401 | UNAUTHORIZED / INVALID_TOKEN | Brak tokenu albo token nieprawidłowy, wygasły (po godzinie) lub unieważniony nowym sekretem — pobierz nowy. |
| 401 | invalid_client | Przy POST /oauth/token: zły Client ID albo Client Secret, aplikacja usunięta. |
| 403 | FORBIDDEN_SCOPE | Aplikacja nie ma uprawnienia wymaganego przez ten adres (np. orders:write). |
| 400 | VALIDATION_ERROR | Błędne dane w zapytaniu albo treści — komunikat wskazuje pole. |
| 404 | NOT_FOUND | Nie ma takiego zamówienia / produktu / adresu. |
| 409 | CONFLICT | Operacja niemożliwa w tym stanie (np. anulowanie wysłanego zamówienia). |
| 402 | TENANT_READONLY | Konto firmy tylko do odczytu (nieprzedłużone) — zapisy odrzucone. |
| 429 | RATE_LIMIT_EXCEEDED | Przekroczony 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.