Dokumentace externího API

Propojte své systémy s API EasySolar

Integrace založená na API klíči vám poskytuje přístup ke kalendáři, projektům, klientům a komponentám.
Díky tomu můžete flexibilně propojit své systémy a automatizovat procesy.

Externí dokumentace API

Integrace založená na API klíči vám poskytuje přístup ke kalendáři, projektům, klientům a komponentám. Díky tomu můžete flexibilně propojit své systémy a automatizovat procesy.


Obsah

  1. Autentizace
  2. Stránkování
  3. API kalendáře
  4. API projektů
  5. API klientů
  6. API komponent
  7. Datové konvence
  8. Chování filtrování
  9. Model oprávnění
  10. Ošetření chyb
  11. Integrační vzory
  12. Stabilita a verzování

1. Autentizace

Všechny požadavky musí v hlavičce obsahovat API klíč.

Authorization: Api-Key <raw_api_key>

Poznámky: - API klíče vytvářejí a spravují vlastníci společnosti a administrátoři. - Každý klíč je omezen na konkrétní oprávnění k prostředkům. - Všechny požadavky jsou automaticky omezeny na společnost přiřazenou k API klíči.

Chyby autentizace

StavDůvod
401Chybějící nebo neplatný API klíč
401Nesprávně formátovaná autorizační hlavička
401Neaktivní API klíč
403Chybí oprávnění k prostředku
402Společnost je neaktivní

2. Stránkování

Seznamové endpointy (Kalendář, Projekty, Klienti) používají stránkování limit/offset.

Parametry

ParametrPopisVýchozíMaximum
limitPočet výsledků k vrácení100500
offsetOffset stránkování0

Obálka odpovědi

{
  "count": 123,
  "next": null,
  "previous": null,
  "results": []
}

Když je next null, dosáhli jste poslední stránky.


3. API kalendáře

Představuje naplánované události, jako jsou schůzky, hovory a instalace. Pouze pro čtení.

Endpointy

GET https://api-production.easysolar-app.com/integrations/calendar/
GET https://api-production.easysolar-app.com/integrations/calendar/{id}/

Požadované oprávnění: calendar_read

Příklad odpovědi

{
  "id": "7d0f4d55-3b66-4c71-a86d-2b0ef2fca6d5",
  "category": "meeting",
  "subject": "Úvodní návštěva na místě",
  "description": "Probereme požadavky na instalaci a kontrolu střechy.",
  "client": {
    "id": "4ab8e7cb-0a27-48f1-a0f6-6d6ecf5d8c6a",
    "name": "Solar Corp",
    "address": "Hlavní ulice 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"
}

Přehled polí

PoleTypPopis
idUUIDIdentifikátor události
categorystringKategorie události (viz hodnoty níže)
subjectstringNázev události
descriptionstringDalší poznámky k události
clientobject | nullPropojený klient
participantsarrayZaměstnanci přiřazení k události
start_atdatetimeČas začátku události (UTC)
end_atdatetimeČas konce události (UTC)
full_daybooleanZda událost trvá celý den
created_atdatetimeČas vytvoření události

Hodnoty kategorií

HodnotaPopis
meetingSchůzka
callTelefonát
installationTermín instalace
contractPodpis smlouvy
quotationPrezentace nabídky

Vnořené objekty

Objekt klienta:

PoleTypPopis
idUUIDIdentifikátor klienta
namestringNázev klienta
addressstringAdresa klienta
phonestringTelefonní číslo klienta
is_openbooleanAktivní stav klienta

Objekt účastníka:

PoleTypPopis
first_namestringKřestní jméno zaměstnance
last_namestringPříjmení zaměstnance
emailstringE-mailová adresa zaměstnance

Filtry

ParametrTypPopis
start_at_afterdatetimeFiltrovat události začínající po tomto čase
start_at_beforedatetimeFiltrovat události začínající před tímto časem
end_at_afterdatetimeFiltrovat události končící po tomto čase
end_at_beforedatetimeFiltrovat události končící před tímto časem
categorystring (multi)Filtrovat podle kategorie; pro více hodnot opakujte
clientUUIDFiltrovat podle ID klienta

Příklad:

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 projektů

Představuje projektové záznamy související s klienty (např. fotovoltaické instalace). Pouze pro čtení.

Endpointy

GET https://api-production.easysolar-app.com/integrations/projects/
GET https://api-production.easysolar-app.com/integrations/projects/{id}/

Požadované oprávnění: projects_read

Příklad odpovědi

{
  "id": "d8e22cb9-1d88-4a3d-a3fd-f954d1f23d59",
  "name": "Fotovoltaická instalace - varšavská kancelář",
  "address": "Aleje Jerozolimskie 120, Varšava",
  "latitude": 52.2297,
  "longitude": 21.0122,
  "client": {
    "id": "4ab8e7cb-0a27-48f1-a0f6-6d6ecf5d8c6a",
    "name": "Solar Corp",
    "address": "Hlavní ulice 10, Varšava",
    "phone": "+48123456789",
    "is_open": true
  },
  "status": {
    "name": "Probíhá",
    "order": 2
  },
  "currency": {
    "code": "PLN",
    "name": "Polský zlotý"
  },
  "total_price": "42500.00",
  "payback_period": 8,
  "created": "2026-05-01T09:00:00Z",
  "updated": "2026-06-01T15:30:00Z"
}

Přehled polí

PoleTypPopis
idUUIDIdentifikátor projektu
namestringNázev projektu
addressstringAdresa projektu
latitudedecimal | nullZeměpisná šířka projektu
longitudedecimal | nullZeměpisná délka projektu
clientobjectPropojený klient (viz objekt klienta)
statusobjectStav projektu
currencyobjectMěna použitá pro finanční hodnoty
total_pricedecimal stringAktuální celková cena projektu
payback_periodinteger | nullOdhadovaná doba návratnosti v letech
createddatetimeČas vytvoření
updateddatetimeČas poslední aktualizace

total_price se vrací jako desetinný řetězec, aby se zachovala přesnost. payback_period je null, pokud ještě nebyla vypočítána. latitude/longitude jsou null, pokud není nastavena poloha.

Vnořené objekty

Objekt stavu:

PoleTypPopis
namestringZobrazovaný název stavu
orderintegerPořadová hodnota stavu

Objekt měny:

PoleTypPopis
codestringISO kód měny
namestringNázev měny

Filtry

ParametrTypPopis
created_afterdatetimeFiltrovat podle data vytvoření (spodní mez)
created_beforedatetimeFiltrovat podle data vytvoření (horní mez)
updated_afterdatetimeFiltrovat podle data aktualizace (spodní mez)
updated_beforedatetimeFiltrovat podle data aktualizace (horní mez)
clientUUIDFiltrovat podle ID klienta
statusUUIDFiltrovat podle ID stavu
namestringČástečná shoda názvu bez rozlišení velikosti písmen

Příklad:

GET https://api-production.easysolar-app.com/integrations/projects/?client=<id>&name=solar
Authorization: Api-Key <key>

5. API klientů

Představuje zákaznické entity. Podporuje operace čtení i zápisu.

Endpointy

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}/

Požadovaná oprávnění: clients_read (čtení), clients_write (zápis)

Příklad odpovědi

{
  "id": "4ab8e7cb-0a27-48f1-a0f6-6d6ecf5d8c6a",
  "name": "Solar Corp",
  "description": "Komerční zákazník se zájmem o střešní fotovoltaickou instalaci.",
  "address": "Hlavní ulice 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"
}

Přehled polí

PoleTypPopis
idUUIDIdentifikátor klienta
namestringNázev klienta
descriptionstringDalší poznámky
addressstringAdresa klienta
latitudedecimal | nullZeměpisná šířka klienta
longitudedecimal | nullZeměpisná délka klienta
phonestring | nullTelefonní číslo klienta
is_openbooleanZda je klient aktuálně aktivní
createddatetimeČas vytvoření
updateddatetimeČas poslední aktualizace

Vytvořit klienta

POST https://api-production.easysolar-app.com/integrations/clients/
{
  "name": "Název klienta",
  "description": "Komerční zákazník",
  "address": "Adresa",
  "phone": "+48123456789",
  "latitude": 52.2297,
  "longitude": 21.0122
}

Aktualizovat klienta

PATCH https://api-production.easysolar-app.com/integrations/clients/{id}/

Uveďte pouze pole, která chcete aktualizovat:

{
  "address": "Nová adresa 15, Varšava",
  "phone": "+48987654321"
}

Pravidla pro souřadnice

  • latitude a longitude musí být vždy uvedeny společně.
  • Pokud zadáte pouze jednu souřadnici, vznikne validační chyba.
  • Pokud není nastavena žádná poloha, obě pole se vrátí jako null.

Filtry

ParametrTypPopis
created_afterdatetimeFiltrovat podle data vytvoření (spodní mez)
created_beforedatetimeFiltrovat podle data vytvoření (horní mez)
updated_afterdatetimeFiltrovat podle data aktualizace (spodní mez)
updated_beforedatetimeFiltrovat podle data aktualizace (horní mez)
is_openbooleanFiltrovat podle aktivního stavu (true nebo false)
namestringČástečná shoda názvu bez rozlišení velikosti písmen
phonestringČástečná shoda telefonního čísla bez rozlišení velikosti písmen

6. API komponent

Vytváří komponenty pro použití v projektech. Pouze pro zápis.

Endpoint

POST https://api-production.easysolar-app.com/integrations/components/

Požadované oprávnění: components_write

Typy komponent

Podporovány jsou tři typy komponent: panel, inverter a 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"
}
PoleTypPovinnéPopis
typestringAnoMusí být "panel"
manufacturer_namestringAnoNázev výrobce
namestringAnoNázev modelu panelu
net_unit_pricedecimalNeČistá jednotková cena
nominal_powerdecimalAnoJmenovitý výkon (W). Musí být mezi 1.0 a 1000.0
lengthdecimalAnoDélka panelu (m). Musí být mezi 0.1 a 5.0
widthdecimalAnoŠířka panelu (m). Musí být mezi 0.1 a 5.0
weightdecimal | nullNeHmotnost (kg)
efficiencydecimalAnoÚčinnost přeměny. Musí jít o poměr mezi 0 a 1
short_circuit_currentdecimalAnoZkratový proud (A). Musí být mezi 0.00001 a 999.99999
open_circuit_voltagedecimalAnoNapětí naprázdno (V). Musí být mezi 0.00001 a 999.99999
current_temperature_coefficientdecimal | nullNeTeplotní koeficient proudu. Pokud je uveden, musí být mezi −99.999999 a 99.999999
voltage_temperature_coefficientdecimal | nullNeTeplotní koeficient napětí
power_temperature_coefficientdecimal | nullNeTeplotní koeficient výkonu

Střídač

{
  "type": "inverter",
  "manufacturer_name": "SMA",
  "name": "Sunny Tripower 5.0",
  "net_unit_price": "900.00",
  "nominal_power": "5000.000",
  "number_of_dc_inputs": 2
}
PoleTypPovinnéPopis
typestringAnoMusí být "inverter"
manufacturer_namestringAnoNázev výrobce
namestringAnoNázev modelu střídače
net_unit_pricedecimalNeČistá jednotková cena
nominal_powerdecimalAnoJmenovitý výkon (W). Musí být mezi 100.0 a 100000000.0
number_of_dc_inputsintegerAnoPočet DC vstupů. Musí být alespoň 1

Ostatní

{
  "type": "other",
  "name": "Montážní systém",
  "unit": "ks",
  "net_unit_price": "50.00"
}
PoleTypPovinnéPopis
typestringAnoMusí být "other"
namestringAnoNázev komponenty
unitstringNeMěrná jednotka
net_unit_pricedecimalNeČistá jednotková cena

Odpověď

{
  "id": "uuid",
  "type": "panel | inverter | other",
  "name": "string"
}

Poznámky

  • Výrobci se automaticky vytvářejí, pokud neexistují.
  • Jedinečnost výrobce je omezena na společnost.
  • Všechna pole specifická pro panel se před vytvořením validují.

7. Datové konvence

ID

Všechny identifikátory prostředků jsou řetězce UUID, stabilní a globálně jedinečné v rámci společnosti:

"id": "550e8400-e29b-41d4-a716-446655440000"

Časová razítka

Všechna pole typu datetime se vracejí ve formátu ISO 8601, vždy v UTC:

"created": "2026-06-09T12:34:56Z"

Geolokace

Souřadnice se vztahují na klienty a projekty. Jsou ukládány jako geografický bod a vracejí se jako samostatná pole:

"latitude": 52.2297,
"longitude": 21.0122

Práce s hodnotou null

Pole, která nejsou nastavena, se vracejí jako null — z odpovědi nejsou nikdy vynechána.


8. Chování filtrování

Obecná pravidla

  • Všechny filtry jsou volitelné, pokud není uvedeno jinak.
  • Více filtrů se kombinuje logikou AND.
  • Hodnoty vícenásobného výběru filtru (např. category) interně používají logiku OR.
  • Neplatné hodnoty filtru vrátí prázdné výsledky nebo validační chybu podle typu pole.

Filtry časového rozsahu

Dostupné napříč endpointy:

Filtrovací poleChování
created_after / created_beforeRozsahový filtr podle času vytvoření
updated_after / updated_beforeRozsahový filtr podle času poslední aktualizace
start_at_after / start_at_beforeRozsahový filtr podle času začátku události
end_at_after / end_at_beforeRozsahový filtr podle času konce události

Filtry textového vyhledávání

Částečná shoda názvu a telefonu bez rozlišení velikosti písmen:

?name=solar

Odpovídá: "Solar Corp", "Můj fotovoltaický projekt" atd.


9. Model oprávnění

Oprávnění API klíče se konfigurují nezávisle pro každý prostředek:

ProstředekOprávnění ke čteníOprávnění k zápisu
Kalendářcalendar_read(není podporováno)
Projektyprojects_read(není podporováno)
Klienticlients_readclients_write
Komponenty(není podporováno)components_write

10. Ošetření chyb

Formát chyb

Obecná chyba:

{
  "detail": "Chybová zpráva"
}

Validační chyba na úrovni pole:

{
  "field_name": ["Chybová zpráva"]
}

Přehled chyb

StavKategorieVýznam
401AutentizaceNeplatný, chybějící nebo neaktivní API klíč; nesprávně formátovaná hlavička
402Obchodní pravidlaSpolečnost je neaktivní
403AutorizaceAPI klíči chybí požadované oprávnění k prostředku
4xxValidaceChyby na úrovni pole jsou vraceny jako objekt

Kontrolní seznam integrace

Pokud narazíte na chyby, ověřte:

  1. API klíč má správná oprávnění k prostředkům.
  2. Účet společnosti je aktivní.
  3. Všechny hodnoty filtrů (ID atd.) patří do stejného rozsahu společnosti.

11. Integrační vzory

Strategie synchronizace

Doporučený postup pro synchronizaci dat:

  1. Načtěte seznamový endpoint (se stránkováním).
  2. Uložte id jako externí referenci.
  3. Pro přírůstkovou synchronizaci používejte pole updated.

Zpracování stránkování

Procházejte stránky zvyšováním offsetu, dokud není next 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

Přírůstková synchronizace

Použijte filtry podle data k načtení pouze záznamů změněných od poslední synchronizace:

GET https://api-production.easysolar-app.com/integrations/projects/?updated_after=2026-01-01T00:00:00Z

Osvědčené postupy filtrování

  • Při synchronizacích s velkým objemem dat upřednostňujte filtry založené na ID (client, status) před textovým vyhledáváním.
  • Kombinujte více filtrů, abyste zmenšili velikost výsledné sady.
  • Vyhněte se širokému textovému vyhledávání ve velkých datových sadách.

12. Stabilita a verzování

Stabilní záruky

Následující se nezmění bez verzované migrace:

  • URL endpointů
  • Názvy polí
  • Formát UUID
  • Struktura stránkování
  • Autentizační schéma

Může se změnit (bez narušení kompatibility)

  • Volitelné filtry (mohou být přidány nové filtry)
  • Rozšíření odpovědi (mohou být přidána nová pole)

Politika verzování

V URL není v současnosti uvedena žádná explicitní verze. Změny porušující kompatibilitu zavedou nový jmenný prostor endpointů:

https://api-production.easysolar-app.com/integrations/v2/...

Doplňující změny se považují za neporušující kompatibilitu a mohou být nasazeny bez navýšení verze.


Konec dokumentace

Kontaktujte nás

Potřebujete pomoc?

support@easysolar.app

Neváhejte nás kontaktovat a náš specializovaný tým na vaše dotazy obratem odpoví.

Prodávejte automaticky s AI

Vytvořte automatizovaného AI prodejce za 2 minuty

Přidejte generátor fotovoltaických nabídek s AI na svůj stávající web. Nastavte ceny, vyberte produkty a přizpůsobte branding své společnosti. Vaši zákazníci obdrží okamžitou nabídku a vy získáte okamžité e-mailové upozornění na každou nabídku i zájemce.

Detekce hran střechy pro fotovoltaické panely