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.
To Vám dává flexibilitu propojit své systémy a automatizovat procesy.

Externí dokumentace API

Integrace na základě API klíče Vám poskytuje přístup ke Kalendáři, projektům, klientům a komponentám. To Vám dává flexibilitu 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í filtrů
  9. Model oprávnění
  10. Práce s chybami
  11. Integrační vzory
  12. Stabilita & 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á hlavička autorizace
401Neaktivní API klíč
403Chybějící oprávnění k prostředku
402Společnost je neaktivní

2. Stránkování

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

Parametry

ParametrPopisVýchozíMax
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í.

Koncové body

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

Ukázka odpovědi

{
  "id": "7d0f4d55-3b66-4c71-a86d-2b0ef2fca6d5",
  "category": "meeting",
  "subject": "Úvodní návštěva na místě",
  "description": "Projednání požadavků na instalaci a kontrola střechy.",
  "client": {
    "id": "4ab8e7cb-0a27-48f1-a0f6-6d6ecf5d8c6a",
    "name": "Solar Corp",
    "address": "Hlavní 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 ukončení 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 cenové 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 parametr 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 záznamy projektů souvisejících s klientem (např. fotovoltaické instalace). Pouze pro čtení.

Koncové body

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

Ukázka odpovědi

{
  "id": "d8e22cb9-1d88-4a3d-a3fd-f954d1f23d59",
  "name": "Fotovoltaická instalace - kancelář ve Varšavě",
  "address": "Aleje Jerozolimskie 120, Varšava",
  "latitude": 52.2297,
  "longitude": 21.0122,
  "client": {
    "id": "4ab8e7cb-0a27-48f1-a0f6-6d6ecf5d8c6a",
    "name": "Solar Corp",
    "address": "Hlavní 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žívaná 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 byla zachována 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
orderintegerHodnota pořadí stavu

Objekt měny:

PoleTypPopis
codestringMěnový kód ISO
namestringNázev měny

Filtry

ParametrTypPopis
created_afterdatetimeFiltrovat podle data vytvoření (dolní mez)
created_beforedatetimeFiltrovat podle data vytvoření (horní mez)
updated_afterdatetimeFiltrovat podle data aktualizace (dolní mez)
updated_beforedatetimeFiltrovat podle data aktualizace (horní mez)
clientUUIDFiltrovat podle ID klienta
statusUUIDFiltrovat podle ID stavu
namestringČástečná shoda názvu bez ohledu na velikost 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í a zápisu.

Koncové body

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)

Ukázka 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í 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}/

Zahrňte pouze pole, která chcete aktualizovat:

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

Pravidla souřadnic

  • latitude a longitude musí být vždy uvedeny společně.
  • Zadání pouze jedné souřadnice způsobí validační chybu.
  • Pokud není nastavena poloha, obě pole se vracejí jako null.

Filtry

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

6. API komponent

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

Koncový bod

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

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

Typy komponent

Jsou podporovány tři typy komponent: panel, inverter a other.


Fotovoltaický 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)
lengthdecimalAnoDélka panelu (m)
widthdecimalAnoŠířka panelu (m)
weightdecimal | nullNeHmotnost (kg)
efficiencydecimalAnoÚčinnost přeměny
short_circuit_currentdecimalAnoZkratový proud (A)
open_circuit_voltagedecimalAnoNapětí naprázdno (V)
current_temperature_coefficientdecimal | nullNeTeplotní koeficient proudu
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)
number_of_dc_inputsintegerAnoPočet DC vstupů

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.
  • Před vytvořením se ověří všechna pole specifická pro panel.

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é značky

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 používají u klientů a projektů. Ukládají se jako geografický bod a vracejí se jako samostatná pole:

"latitude": 52.2297,
"longitude": 21.0122

Práce s hodnotou null

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


8. Chování filtrů

Obecná pravidla

  • Všechny filtry jsou volitelné, pokud není uvedeno jinak.
  • Více filtrů se kombinuje logikou AND.
  • Hodnoty vícevýběrových filtrů (např. category) interně používají logiku OR.
  • Neplatné hodnoty filtrů vrací prázdné výsledky nebo validační chybu v závislosti na typu pole.

Filtry časového rozsahu

Dostupné napříč endpointy:

Filtrovací poleChování
created_after / created_beforeRozsahový filtr nad časovým razítkem vytvoření
updated_after / updated_beforeRozsahový filtr nad časovým razítkem poslední aktualizace
start_at_after / start_at_beforeRozsahový filtr nad časem začátku události
end_at_after / end_at_beforeRozsahový filtr nad časem ukončení události

Textové vyhledávací filtry

Částečná shoda názvu a telefonního čísla bez ohledu na velikost písmen u name a phone:

?name=solar

Odpovídá: "Solar Corp", "Můj solární projekt" atd.


9. Model oprávnění

Oprávnění API klíče se konfigurují samostatně 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. Práce s chybami

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íSpolečnost je neaktivní
403AutorizaceAPI klíči chybí požadované oprávnění k prostředku
4xxValidaceChyby na úrovni pole se vracejí 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 apod.) patří do stejného rozsahu společnosti.

11. Integrační vzory

Strategie synchronizace

Doporučený postup pro synchronizaci dat:

  1. Načtěte výpisový endpoint (stránkovaně).
  2. Uložte id jako externí referenci.
  3. Pro přírůstkové synchronizace používejte pole updated.

Práce se stránkováním

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

Pro načtení pouze záznamů změněných od poslední synchronizace použijte datumové filtry:

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

Doporučené postupy filtrování

  • Pro synchronizace s vysokým objemem upřednostňujte filtry založené na ID (client, status) před textovým vyhledáváním.
  • Kombinací více filtrů zmenšíte velikost výsledné množiny.
  • Vyhněte se širokým textovým vyhledáváním na velkých datových sadách.

12. Stabilita & 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í
  • Schéma autentizace

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

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

Politika verzování

V URL není aktuálně zveřejněna žádná explicitní verze. Zlomové změny zavedou nový jmenný prostor endpointů:

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

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


Konec dokumentace

Kontaktujte nás

Potřebujete pomoc?

support@easysolar.app

Neváhejte se na nás obrátit a náš specializovaný tým na vaše dotazy rychle odpoví.

Prodávejte automaticky s AI

Vytvořte automatizovaného AI obchodního zástupce za 2 minuty

Přidejte generátor fotovoltaických nabídek s AI na svůj stávající web. Nastavte své ceny, vyberte své 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 a každého zájemce.

Roof edge detection for solar panels