Publiczne API v1
Publiczne REST API jest przeznaczone do połączeń serwer-serwer, na przykład z oprogramowaniem CRM lub fakturowania.
Podstawowy URL: https://auto.manisma.com/api/v1
Nie używaj bezpośrednio API Directus i nie umieszczaj klucza API w frontendowym JavaScript.
Tworzenie klucza API
Otwórz jako Admin Zarządzanie → Klucze API. Nadaj kluczowi rozpoznawalną nazwę i wybierz zakresy:
read: oznacza klucz przeznaczony do odczytu;write: tworzenie lub zmienianie zapisywalnych zasobów i używanie endpointów planowania.plan: żądanie propozycji planowania.
Dla normalnego połączenia odczytu/zapisu wybierz oba zakresy. Uwaga: obecny backend v1 sprawdza write jawnie dla POST/PATCH, ale zezwala na GET dla każdego ważnego aktywnego klucza; read jest więc obecnie oznaczeniem administracyjnym, a nie osobnym technicznym blokowaniem. Surowy klucz zaczyna się od msk_, jest wyświetlany tylko raz i nie można go odzyskać. W razie utraty utwórz nowy klucz i dezaktywuj lub usuń stary.
Uwierzytelnianie
Użyj jednego z tych nagłówków:
Authorization: Bearer msk_...
X-API-Key: msk_...
Wszystkie wyniki są po stronie serwera ograniczane do organizacji klucza. Id innego tenanta zwraca ten sam 404 co nieznane id.
Zasoby i metody
| Zasób | GET lista/szczegóły | POST | PATCH |
|---|---|---|---|
/clients |
Tak | Tak | Tak |
/jobs |
Tak | Tak | Tak |
/assets |
Tak | Tak | Tak |
/task_types |
Tak | Tak | Tak |
/materials |
Tak | Tak | Tak |
/asset_models |
Tak | Nie | Nie |
/technicians |
Tak | Nie | Nie |
W v1 nie ma endpointu DELETE.
Listy i paginacja
GET /clients?limit=50&page=1
limit: od 1 do 100, domyślnie 50;page: zaczyna się od 1.search: dla list klientów i materiałów, wyszukiwanie częściowe bez rozróżniania wielkości liter w dosłownym tekście. Znak procentu wyszukuje znak procentu. Klienci są dopasowywani po nazwie, e-mailu lub numerze klienta, a materiały po SKU lub nazwie.
{
"data": [],
"meta": { "total": 0, "page": 1, "limit": 50 }
}
Odpowiedź szczegółowa lub zapisu używa { "data": { ... } }.
Klienci
Pola odczytu: id, tenant_id, customer_number, name, client_type, email, phone, vat_number, status, created_at, updated_at.
POST /clients wymaga name. Dozwolone pola zapisu to name, customer_number, client_type, email, phone, vat_number oraz status. W PATCH wszystkie są opcjonalne, ale musi być obecne co najmniej jedno prawidłowe pole. Nieznane pola oraz dostarczone tenant_id są ignorowane.
POST /addresses tworzy adres klienta i wymaga client_id. Klient musi należeć do tego samego tenanta.
curl -X POST 'https://auto.manisma.com/api/v1/clients' \
-H 'Authorization: Bearer msk_...' \
-H 'Content-Type: application/json' \
-d '{"name":"Bakkerij Peeters","client_type":"b2b","email":"info@example.com"}'
Zlecenia
Pola odczytu obejmują id, tenant, numer zlecenia, id klienta, tytuł, opis, priorytet, status, oczekiwany czas trwania, id technika głównego, wymaganą liczbę techników, planowanie, id adresu serwisowego, id typu zadania, wymagane umiejętności oraz znaczniki czasu. Notatki wewnętrzne i technika nie są udostępniane.
POST /jobs wymaga title. Dozwolone pola:
job_number, client_id, title, description, priority, status, estimated_duration_minutes, required_technicians, scheduled_date, scheduled_start, scheduled_end, service_address_id, task_type_id, required_skills.
Gdy status jest pominięty, używane jest unplanned. Gdy job_number jest pominięty, Manisma generuje numer z ustawionym prefiksem tenanta. W PATCH pola job_number, status oraz assigned_technician_id nie mogą być zmieniane.
Klucze obce dla klienta, adresu serwisowego i typu zadania muszą należeć do tego samego tenanta.
POST /jobs/:id/assign planuje zlecenie z użyciem technician_id, scheduled_start i scheduled_end. POST /jobs/:id/unassign usuwa przypisanie i zwraca zlecenie do kolejki niezaplanowanych; nie usuwa zlecenia.
Propozycja planowania
POST /plan zwraca propozycję planowania i niczego nie zmienia: nie tworzy ani nie przenosi żadnego zlecenia. Wymaga osobnego zakresu plan i jest ograniczony do 3 wywołań na organizację w ciągu 10 minut; kolejne wywołania zwracają jasny błąd 429. Nie używa AI Manisma ani nie zużywa akcji AI zawartych w Twoim planie Manisma, ponieważ Twój wywołujący asystent wykonuje pracę myślową.
Inne zasoby
-
assets: urządzenia zainstalowane u klienta; zapisywalne przez POST i PATCH. -
task_types: zapisywalne przez POST i PATCH. -
materials: zapisywalne przez POST i PATCH; cena zakupu i stan magazynowy są dostępne do odczytu i zapisu. -
asset_models: tylko do odczytu. -
technicians: nazwa, e-mail, telefon, status aktywny i umiejętności. Godziny pracy, adresy i id użytkownika nie są publiczne.
Błędy i limity
| Status | Znaczenie |
|---|---|
| 400 | Nieprawidłowa treść, brak wymaganego pola lub PATCH bez prawidłowego pola. |
| 401 | Brak klucza, klucz nieprawidłowy lub dezaktywowany. |
| 403 | Prawidłowy klucz bez wymaganego zakresu write lub plan. |
| 404 | Rekord nieznany lub należący do innego tenanta. |
| 429 | Przekroczony limit. |
| 502 | Tymczasowy problem z bazową usługą danych. |
| 503 | Ograniczanie liczby żądań planowania jest tymczasowo niedostępne. |
API jest ograniczone do 600 żądań na minutę na źródłowy IP. Buduj retry z wykładniczym backoffem dla 429, 502 i tymczasowych błędów sieci. Nie ponawiaj błędów walidacji bez poprawienia żądania.