Dokumentacija vanjskog API-ja
Integrirajte svoje sustave s EasySolar API-jem
Integracija putem API ključa omogućuje vam pristup kalendaru, projektima, klijentima i komponentama.
To vam daje fleksibilnost za integraciju s vašim sustavima i automatizaciju procesa.
Dokumentacija vanjskog API-ja
Integracija putem API ključa omogućuje vam pristup kalendaru, projektima, klijentima i komponentama. To vam daje fleksibilnost za integraciju s vašim sustavima i automatizaciju procesa.
Sadržaj
- Autentikacija
- Paginacija
- API kalendara
- API projekata
- API klijenata
- API komponenti
- Konvencije podataka
- Ponašanje filtriranja
- Model dopuštenja
- Rukovanje pogreškama
- Obrasci integracije
- Stabilnost i verzioniranje
1. Autentikacija
Svi zahtjevi moraju sadržavati API ključ u zaglavlju zahtjeva.
Authorization: Api-Key <raw_api_key>
Napomene: - API ključeve stvaraju i njima upravljaju vlasnici i administratori tvrtke. - Svaki je ključ ograničen na određena dopuštenja za resurse. - Svi su zahtjevi automatski ograničeni na tvrtku povezanu s API ključem.
Pogreške autentikacije
| Status | Razlog |
|---|---|
401 | Nedostaje API ključ ili je neispravan |
401 | Neispravno oblikovano zaglavlje autorizacije |
401 | Neaktivan API ključ |
403 | Nedostaje dopuštenje za resurs |
402 | Tvrtka je neaktivna |
2. Paginacija
Krajnje točke za popis (Kalendar, Projekti, Klijenti) koriste limit/offset paginaciju.
Parametri
| Parametar | Opis | Zadano | Maks. |
|---|---|---|---|
limit | Broj rezultata za prikaz | 100 | 500 |
offset | Pomak paginacije | 0 | — |
Struktura odgovora
{
"count": 123,
"next": null,
"previous": null,
"results": []
}
Kada je next null, stigli ste do posljednje stranice.
3. API kalendara
Predstavlja zakazane događaje kao što su sastanci, pozivi i instalacije. Samo za čitanje.
Krajnje točke
GET https://api-production.easysolar-app.com/integrations/calendar/
GET https://api-production.easysolar-app.com/integrations/calendar/{id}/
Potrebno dopuštenje: calendar_read
Primjer odgovora
{
"id": "7d0f4d55-3b66-4c71-a86d-2b0ef2fca6d5",
"category": "meeting",
"subject": "Početni obilazak lokacije",
"description": "Raspraviti zahtjeve za instalaciju i pregled krova.",
"client": {
"id": "4ab8e7cb-0a27-48f1-a0f6-6d6ecf5d8c6a",
"name": "Solar Corp",
"address": "Glavna ulica 10, Varšava",
"phone": "+48123456789",
"is_open": true
},
"participants": [
{
"first_name": "John",
"last_name": "Smith",
"email": "john.smith@example.com"
}
],
"start_at": "2026-06-15T09:00:00Z",
"end_at": "2026-06-15T10:00:00Z",
"full_day": false,
"created_at": "2026-06-01T12:30:45Z"
}
Referenca polja
| Polje | Vrsta | Opis |
|---|---|---|
id | UUID | Identifikator događaja |
category | string | Kategorija događaja (pogledajte vrijednosti u nastavku) |
subject | string | Naslov događaja |
description | string | Dodatne napomene o događaju |
client | object | null | Povezani klijent |
participants | array | Zaposlenici dodijeljeni događaju |
start_at | datetime | Vrijeme početka događaja (UTC) |
end_at | datetime | Vrijeme završetka događaja (UTC) |
full_day | boolean | Obuhvaća li događaj cijeli dan |
created_at | datetime | Vremenska oznaka stvaranja događaja |
Vrijednosti kategorije
| Vrijednost | Opis |
|---|---|
meeting | Sastanak |
call | Telefonski poziv |
installation | Termin za instalaciju |
contract | Potpisivanje ugovora |
quotation | Prezentacija ponude |
Ugniježđeni objekti
Objekt klijenta:
| Polje | Vrsta | Opis |
|---|---|---|
id | UUID | Identifikator klijenta |
name | string | Naziv klijenta |
address | string | Adresa klijenta |
phone | string | Broj telefona klijenta |
is_open | boolean | Status aktivnog klijenta |
Objekt sudionika:
| Polje | Vrsta | Opis |
|---|---|---|
first_name | string | Ime zaposlenika |
last_name | string | Prezime zaposlenika |
email | string | E-mail adresa zaposlenika |
Filtri
| Parametar | Vrsta | Opis |
|---|---|---|
start_at_after | datetime | Filtriraj događaje koji počinju nakon ovog vremena |
start_at_before | datetime | Filtriraj događaje koji počinju prije ovog vremena |
end_at_after | datetime | Filtriraj događaje koji završavaju nakon ovog vremena |
end_at_before | datetime | Filtriraj događaje koji završavaju prije ovog vremena |
category | string (multi) | Filtriraj prema kategoriji; ponovite za više vrijednosti |
client | UUID | Filtriraj prema ID-ju klijenta |
Primjer:
GET https://api-production.easysolar-app.com/integrations/calendar/?start_at_after=2026-01-01T00:00:00Z&category=meeting&category=call
Authorization: Api-Key <key>
4. API projekata
Predstavlja zapise projekata povezane s klijentima (npr. fotonaponske instalacije). Samo za čitanje.
Krajnje točke
GET https://api-production.easysolar-app.com/integrations/projects/
GET https://api-production.easysolar-app.com/integrations/projects/{id}/
Potrebno dopuštenje: projects_read
Primjer odgovora
{
"id": "d8e22cb9-1d88-4a3d-a3fd-f954d1f23d59",
"name": "Fotonaponska instalacija - Ured u Varšavi",
"address": "Aleje Jerozolimskie 120, Varšava",
"latitude": 52.2297,
"longitude": 21.0122,
"client": {
"id": "4ab8e7cb-0a27-48f1-a0f6-6d6ecf5d8c6a",
"name": "Solar Corp",
"address": "Glavna ulica 10, Varšava",
"phone": "+48123456789",
"is_open": true
},
"status": {
"name": "U tijeku",
"order": 2
},
"currency": {
"code": "PLN",
"name": "poljski zlot"
},
"total_price": "42500.00",
"payback_period": 8,
"created": "2026-05-01T09:00:00Z",
"updated": "2026-06-01T15:30:00Z"
}
Referenca polja
| Polje | Vrsta | Opis |
|---|---|---|
id | UUID | Identifikator projekta |
name | string | Naziv projekta |
address | string | Adresa projekta |
latitude | decimal | null | Geografska širina projekta |
longitude | decimal | null | Geografska dužina projekta |
client | object | Povezani klijent (pogledajte Objekt klijenta) |
status | object | Status projekta |
currency | object | Valuta koja se koristi za financijske vrijednosti |
total_price | decimal string | Trenutna ukupna cijena projekta |
payback_period | integer | null | Procijenjeno razdoblje povrata u godinama |
created | datetime | Vremenska oznaka stvaranja |
updated | datetime | Vremenska oznaka posljednjeg ažuriranja |
total_pricese vraća kao decimalni niz radi očuvanja preciznosti.payback_periodjenullako još nije izračunat.latitude/longitudesunullako lokacija nije postavljena.
Ugniježđeni objekti
Objekt statusa:
| Polje | Vrsta | Opis |
|---|---|---|
name | string | Prikazni naziv statusa |
order | integer | Vrijednost redoslijeda statusa |
Objekt valute:
| Polje | Vrsta | Opis |
|---|---|---|
code | string | ISO kod valute |
name | string | Naziv valute |
Filtri
| Parametar | Vrsta | Opis |
|---|---|---|
created_after | datetime | Filtriraj prema datumu stvaranja (donja granica) |
created_before | datetime | Filtriraj prema datumu stvaranja (gornja granica) |
updated_after | datetime | Filtriraj prema datumu ažuriranja (donja granica) |
updated_before | datetime | Filtriraj prema datumu ažuriranja (gornja granica) |
client | UUID | Filtriraj prema ID-ju klijenta |
status | UUID | Filtriraj prema ID-ju statusa |
name | string | Djelomično podudaranje naziva bez razlikovanja velikih i malih slova |
Primjer:
GET https://api-production.easysolar-app.com/integrations/projects/?client=<id>&name=solar
Authorization: Api-Key <key>
5. API klijenata
Predstavlja korisničke entitete. Podržava operacije čitanja i upisa.
Krajnje točke
GET https://api-production.easysolar-app.com/integrations/clients/
POST https://api-production.easysolar-app.com/integrations/clients/
GET https://api-production.easysolar-app.com/integrations/clients/{id}/
PATCH https://api-production.easysolar-app.com/integrations/clients/{id}/
Potrebna dopuštenja: clients_read (čitanje), clients_write (upis)
Primjer odgovora
{
"id": "4ab8e7cb-0a27-48f1-a0f6-6d6ecf5d8c6a",
"name": "Solar Corp",
"description": "Komercijalni klijent zainteresiran za fotonaponsku instalaciju na krovu.",
"address": "Glavna ulica 10, Varšava",
"latitude": 52.2297,
"longitude": 21.0122,
"phone": "+48123456789",
"is_open": true,
"created": "2026-05-01T10:15:00Z",
"updated": "2026-06-01T08:45:30Z"
}
Referenca polja
| Polje | Vrsta | Opis |
|---|---|---|
id | UUID | Identifikator klijenta |
name | string | Naziv klijenta |
description | string | Dodatne napomene |
address | string | Adresa klijenta |
latitude | decimal | null | Geografska širina klijenta |
longitude | decimal | null | Geografska dužina klijenta |
phone | string | null | Broj telefona klijenta |
is_open | boolean | Je li klijent trenutačno aktivan |
created | datetime | Vremenska oznaka stvaranja |
updated | datetime | Vremenska oznaka posljednjeg ažuriranja |
Kreiranje klijenta
POST https://api-production.easysolar-app.com/integrations/clients/
{
"name": "Naziv klijenta",
"description": "Komercijalni klijent",
"address": "Adresa",
"phone": "+48123456789",
"latitude": 52.2297,
"longitude": 21.0122
}
Ažuriranje klijenta
PATCH https://api-production.easysolar-app.com/integrations/clients/{id}/
Uključite samo polja koja želite ažurirati:
{
"address": "Nova adresa 15, Varšava",
"phone": "+48987654321"
}
Pravila za koordinate
latitudeilongitudeuvijek se moraju navoditi zajedno.- Navođenje samo jedne koordinate rezultira pogreškom validacije.
- Ako lokacija nije postavljena, oba se polja vraćaju kao
null.
Filtri
| Parametar | Vrsta | Opis |
|---|---|---|
created_after | datetime | Filtriraj prema datumu stvaranja (donja granica) |
created_before | datetime | Filtriraj prema datumu stvaranja (gornja granica) |
updated_after | datetime | Filtriraj prema datumu ažuriranja (donja granica) |
updated_before | datetime | Filtriraj prema datumu ažuriranja (gornja granica) |
is_open | boolean | Filtriraj prema aktivnom statusu (true ili false) |
name | string | Djelomično podudaranje naziva bez razlikovanja velikih i malih slova |
phone | string | Djelomično podudaranje telefonskog broja bez razlikovanja velikih i malih slova |
6. API komponenti
Stvara komponente za korištenje u projektima. Samo za upis.
Krajnja točka
POST https://api-production.easysolar-app.com/integrations/components/
Potrebno dopuštenje: components_write
Vrste komponenti
Podržane su tri vrste komponenti: panel, inverter i other.
Panel
{
"type": "panel",
"manufacturer_name": "Longi",
"name": "LR5-54HPH",
"net_unit_price": "120.00",
"nominal_power": "430.000",
"length": "1.7220",
"width": "1.1340",
"weight": "21.500",
"efficiency": "0.2100000",
"short_circuit_current": "13.52000",
"open_circuit_voltage": "37.85000",
"current_temperature_coefficient": "0.045000",
"voltage_temperature_coefficient": "-0.280000",
"power_temperature_coefficient": "-0.350000"
}
| Polje | Vrsta | Obavezno | Opis |
|---|---|---|---|
type | string | Da | Mora biti "panel" |
manufacturer_name | string | Da | Naziv proizvođača |
name | string | Da | Naziv modela panela |
net_unit_price | decimal | Ne | Neto jedinična cijena |
nominal_power | decimal | Da | Nazivna snaga (W) |
length | decimal | Da | Duljina panela (m) |
width | decimal | Da | Širina panela (m) |
weight | decimal | null | Ne | Masa (kg) |
efficiency | decimal | Da | Učinkovitost pretvorbe |
short_circuit_current | decimal | Da | Struja kratkog spoja (A) |
open_circuit_voltage | decimal | Da | Napon otvorenog kruga (V) |
current_temperature_coefficient | decimal | null | Ne | Temperaturni koeficijent struje |
voltage_temperature_coefficient | decimal | null | Ne | Temperaturni koeficijent napona |
power_temperature_coefficient | decimal | null | Ne | Temperaturni koeficijent snage |
Inverter
{
"type": "inverter",
"manufacturer_name": "SMA",
"name": "Sunny Tripower 5.0",
"net_unit_price": "900.00",
"nominal_power": "5000.000",
"number_of_dc_inputs": 2
}
| Polje | Vrsta | Obavezno | Opis |
|---|---|---|---|
type | string | Da | Mora biti "inverter" |
manufacturer_name | string | Da | Naziv proizvođača |
name | string | Da | Naziv modela invertera |
net_unit_price | decimal | Ne | Neto jedinična cijena |
nominal_power | decimal | Da | Nazivna snaga (W) |
number_of_dc_inputs | integer | Da | Broj DC ulaza |
Ostalo
{
"type": "other",
"name": "Montažni sustav",
"unit": "kom",
"net_unit_price": "50.00"
}
| Polje | Vrsta | Obavezno | Opis |
|---|---|---|---|
type | string | Da | Mora biti "other" |
name | string | Da | Naziv komponente |
unit | string | Ne | Mjerna jedinica |
net_unit_price | decimal | Ne | Neto jedinična cijena |
Odgovor
{
"id": "uuid",
"type": "panel | inverter | other",
"name": "string"
}
Napomene
- Proizvođači se automatski stvaraju ako ne postoje.
- Jedinstvenost proizvođača vrijedi unutar tvrtke.
- Sva polja specifična za panel validiraju se prije stvaranja.
7. Konvencije podataka
ID-jevi
Svi identifikatori resursa su UUID nizovi, stabilni i globalno jedinstveni unutar tvrtke:
"id": "550e8400-e29b-41d4-a716-446655440000"
Vremenske oznake
Sva polja datuma i vremena vraćaju se u formatu ISO 8601, uvijek u UTC-u:
"created": "2026-06-09T12:34:56Z"
Geolokacija
Koordinate se odnose na klijente i projekte. Pohranjuju se kao geografska točka i vraćaju kao zasebna polja:
"latitude": 52.2297,
"longitude": 21.0122
Obrada null vrijednosti
Polja koja nisu postavljena vraćaju se kao null — nikada nisu izostavljena iz odgovora.
8. Ponašanje filtriranja
Opća pravila
- Svi filtri su opcionalni ako nije drukčije navedeno.
- Više filtara kombinira se logikom AND.
- Vrijednosti višestrukog odabira filtra (npr.
category) interno koriste logiku OR. - Neispravne vrijednosti filtra vraćaju prazne rezultate ili pogrešku validacije, ovisno o vrsti polja.
Filtri raspona datuma
Dostupno na svim krajnjim točkama:
| Polja filtra | Ponašanje |
|---|---|
created_after / created_before | Filtar raspona za vremensku oznaku stvaranja |
updated_after / updated_before | Filtar raspona za vremensku oznaku posljednjeg ažuriranja |
start_at_after / start_at_before | Filtar raspona za vrijeme početka događaja |
end_at_after / end_at_before | Filtar raspona za vrijeme završetka događaja |
Filtri pretraživanja teksta
Djelomično podudaranje polja name i phone bez razlikovanja velikih i malih slova:
?name=solar
Podudara se s: "Solar Corp", "Moj solarni projekt", itd.
9. Model dopuštenja
Dopuštenja API ključa konfiguriraju se neovisno za svaki resurs:
| Resurs | Dopuštenje za čitanje | Dopuštenje za upis |
|---|---|---|
| Calendar | calendar_read | (nije podržano) |
| Projects | projects_read | (nije podržano) |
| Clients | clients_read | clients_write |
| Components | (nije podržano) | components_write |
10. Rukovanje pogreškama
Format pogreške
Opća pogreška:
{
"detail": "Poruka pogreške"
}
Pogreška validacije na razini polja:
{
"field_name": ["Poruka pogreške"]
}
Referenca pogrešaka
| Status | Kategorija | Značenje |
|---|---|---|
401 | Autentikacija | Neispravan, nedostajući ili neaktivan API ključ; neispravno zaglavlje |
402 | Poslovanje | Tvrtka je neaktivna |
403 | Autorizacija | API ključ nema potrebno dopuštenje za resurs |
4xx | Validacija | Pogreške na razini polja vraćaju se kao objekt |
Kontrolni popis integracije
Ako naiđete na pogreške, provjerite:
- API ključ ima odgovarajuća dopuštenja za resurs.
- Račun tvrtke je aktivan.
- Sve vrijednosti filtra (ID-jevi itd.) pripadaju istom opsegu tvrtke.
11. Obrasci integracije
Strategija sinkronizacije
Preporučeni pristup za sinkronizaciju podataka:
- Dohvatite krajnju točku popisa (s paginacijom).
- Pohranite
idkao vanjsku referencu. - Za inkrementalnu sinkronizaciju koristite polje
updated.
Rukovanje paginacijom
Krećite se kroz stranice povećavanjem offseta sve dok next nije null:
GET https://api-production.easysolar-app.com/integrations/clients/?limit=100&offset=0
GET https://api-production.easysolar-app.com/integrations/clients/?limit=100&offset=100
Inkrementalna sinkronizacija
Koristite filtre datuma za dohvat samo zapisa koji su se promijenili od posljednje sinkronizacije:
GET https://api-production.easysolar-app.com/integrations/projects/?updated_after=2026-01-01T00:00:00Z
Najbolje prakse filtriranja
- Za sinkronizacije velikog volumena prednost dajte filtrima temeljenima na ID-ju (
client,status) umjesto pretraživanja teksta. - Kombinirajte više filtara kako biste smanjili broj rezultata.
- Izbjegavajte široka pretraživanja teksta nad velikim skupovima podataka.
12. Stabilnost i verzioniranje
Stabilna jamstva
Sljedeće se neće mijenjati bez verzionirane migracije:
- URL-ovi krajnjih točaka
- Nazivi polja
- UUID format
- Struktura paginacije
- Shema autentikacije
Podložno promjenama (kompatibilno unatrag)
- Opcionalni filtri (mogu se dodati novi filtri)
- Obogaćivanje odgovora (mogu se dodati nova polja)
Politika verzioniranja
Trenutno u URL-u nije izložena eksplicitna verzija. Promjene koje narušavaju kompatibilnost uvest će novi imenski prostor krajnjih točaka:
https://api-production.easysolar-app.com/integrations/v2/...
Promjene koje proširuju funkcionalnost smatraju se kompatibilnima unatrag i mogu se uvesti bez promjene verzije.
Kraj dokumentacije
Kontaktirajte nas
Trebate pomoć?
Slobodno nam se obratite, a naš će predani tim brzo odgovoriti na vaše upite.
Prodavajte automatski uz AI
Kreirajte automatiziranog AI prodajnog asistenta za 2 minute
Dodajte AI generator ponuda za fotonaponske sustave na svoju postojeću web-stranicu. Postavite cijene, odaberite proizvode i prilagodite vizualni identitet svoje tvrtke. Vaši će klijenti odmah dobiti ponudu, a vi ćete za svaku ponudu i zainteresiranog klijenta odmah primiti obavijest e-poštom.



