Dokumentácia · Referencia API

Wiresphere REST API

Kompletná vývojárska dokumentácia REST API Wiresphere. Toto API umožňuje spravovať produkty, transakcie, zákaznícke kontakty, platby a nastavenia obchodu v kontexte multi-tenant systému.

V skratke: OpenAPI 3.0.1 · základná URL https://api.wiresphere.com (PLACEHOLDER) · autentifikácia pomocou Bearer JWT (platnosť 24 h) · hlavička tenant-id povinná takmer vo všetkých koncových bodoch. Späť na prehľad dokumentácie.
Autentifikácia

API využíva autentifikáciu založenú na tokenoch (Bearer JWT). Tokeny sú platné 24 hodín.

1
Získanie tokenu

Odošlite username a password na autentifikačný koncový bod. V prípade administrátorských používateľov hlavička tenant-id nesmie byť odoslaná.

2
Použitie tokenu

Získaný token umiestnite do hlavičky Authorization všetkých zabezpečených požiadaviek:

Authorization: Bearer <ziskany-token>
3
Vypršanie platnosti tokenu

Tokeny sú platné 24 hodín. Expirovaný alebo neplatný token vedie k odpovedi 409 Conflict.

POST
/api/v1/auth/token-auth
Získanie tokenu — overenie prihlasovacích údajov používateľa a vrátenie JWT

Parametre hlavičky

NázovInTypPovinnýPopis
tenant-id header string Nie Kontext obchodu. Musí byť vynechaná pri autentifikácii administrátora.

Request Body (application/json)

{
  "username": "meno-pouzivatela",
  "password": "heslo"
}

Odpoveď

200 Token bol úspešne vytvorený
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
401 Neplatné prihlasovacie údaje
400 Chybná požiadavka
Koncept tenantov

API je multi-tenant (viacnájomné). Každá požiadavka (s výnimkou autentifikácie ako administrátor) musí identifikovať kontext obchodu pomocou hlavičky tenant-id.

Hlavička tenant-id

Hlavička tenant-id je povinným poľom takmer vo všetkých koncových bodoch. Určuje, v ktorom kontexte obchodu sa operácia vykonáva. Požiadavky bez tejto hlavičky sú odmietnuté.

tenant-id: id-mojho-obchodu
Inventár (produkty)

Správa inventára produktov obchodu. Podporuje operácie CRUD aj hromadné operácie.

GET
/api/v1/admin/inventory/
Získanie všetkých produktov (so stránkovaním)

Hlavičky

NázovInPovinnýPopis
tenant-idheaderID obchodu
AuthorizationheaderBearer <token>

Parametre dopytu

NázovTypPopis
pintegerStránka (predvolene: 0)
sintegerVeľkosť stránky (predvolene: 10)
fstring[]Filter: name, SKU, vatClass, status
ostring[]Triedenie: name, SKU, vatClass, status

Odpoveď (200)

{
  "totalElements": 42,
  "totalPages": 5,
  "size": 10,
  "number": 0,
  "first": true,
  "last": false,
  "content": [
    {
      "base": { /* Základné údaje produktu */ },
      "additional": { /* Dodatočné údaje */ }
    }
  ]
}
GET
/api/v1/admin/inventory/{sku}
Získanie jedného produktu podľa SKU

Parametre cesty

NázovInPopis
sku*pathJedinečný identifikátor produktu v obchode (Stock Keeping Unit)

Odpoveď (200) — ProductDataDTO

{
  "base": { /* Základné údaje produktu (názov, SKU, cena atď.) */ },
  "additional": { /* Rozšírené polia */ }
}
PUT
/api/v1/admin/inventory/
Vytvorenie alebo aktualizácia produktu (upsert)

Request Body (application/json) — ProductDataDTO

{
  "base": {
    // Povinné polia a údaje produktu (názov, SKU, cena, status atď.)
  },
  "additional": {
    // Voliteľné dodatočné polia
  }
}

Odpoveď

200 ID vytvoreného/aktualizovaného produktu (string)
DELETE
/api/v1/admin/inventory/
Odstránenie viacerých produktov na základe ich ID

Request Body (application/json)

["produktId1", "produktId2"]

Odpoveď

200 Potvrdenie (string)
GET
/api/v1/admin/inventory/operations
Získanie dostupných hromadných operácií

Vracia všetky zaregistrované hromadné operácie vrátane schém ich parametrov.

Odpoveď (200) — pole ProductOperationRegistrationDTO

[{
  "operationId": "set-status",
  "description": "Nastaví status produktov",
  "parameterTypes": { "status": "string" },
  "previewProperties": ["status"]
}]
POST
/api/v1/admin/inventory/operations/preview
Náhľad hromadnej operácie (dry run)

Simuluje hromadnú operáciu a zobrazuje stav pred/po — bez uloženia údajov.

Request Body

{
  "operationId": "set-status",
  "parameters": { "status": "ACTIVE" },
  "confirmAll": false
}
POST
/api/v1/admin/inventory/operations/execute
Vykonanie hromadnej operácie

Vykonáva hromadnú operáciu na filtrovaných produktoch. Trvalo mení údaje.

Parametre dopytu

NázovPopis
fFilter určujúci, ktorých produktov sa operácia týka

Request Body

{
  "operationId": "set-status",
  "parameters": { "status": "INACTIVE" }
}
Transakcie

Transakcie zahŕňajú všetky objednávky, zmluvy a faktúry. K dispozícii je verejný aj administrátorský koncový bod.

Dostupné hodnoty doctype

Pri filtrovaní podľa doctype sú známe nasledujúce hodnoty: ORDER, CONTRACT, INVOICE

GET
/api/v1/admin/transaction/
Získanie všetkých transakcií (admin) — so stránkovaním a filtrovaním

Polia filtrov (parameter f)

PoleFormátPopis
min_createdAtISO 8601Vytvorené od dátumu
max_createdAtISO 8601Vytvorené do dátumu
doctypeORDER/CONTRACT/INVOICETyp transakcie
docIdstringID dokumentu
processIdstringID procesu
processTypestringPipeline procesu
payload.channelstringPredajný kanál
payload.emailstringE-mailová adresa zákazníka

Polia triedenia (parameter o)

createdAt, docId, payload.netTotalPrice, payload.grossTotalPrice, payload.customer.name

Príklad

GET /api/v1/admin/transaction/?f=doctype::ORDER,min_createdAt::2024-01-01T00:00:00.000Z&o=createdAt::DESC&p=0&s=20
Authorization: Bearer <token>
tenant-id: moj-obchod
GET
/api/v1/admin/transaction/{processId}/{docId}
Získanie jednej transakcie

Parametre cesty

NázovPopis
processId*ID procesu (zoskupuje navzájom súvisiace transakcie)
docId*ID dokumentu konkrétnej transakcie
GET
/api/v1/admin/transaction/filter-values
Získanie jedinečných hodnôt (distinct) pre filtre

Parametre dopytu

NázovPovinnýPopis
propsPolia, pre ktoré sa majú určiť hodnoty distinct
andNiePredfilter AND
orNiePredfilter OR

Odpoveď (200)

{
  "doctype": ["ORDER", "INVOICE"],
  "payload.channel": ["online", "terminal"]
}
POST
/api/v1/admin/transaction/{processId}/{docId}/cancel
Zrušenie jednej transakcie

Parametre cesty

NázovPopis
processId*ID procesu
docId*ID dokumentu transakcie na zrušenie

Parametre dopytu

NázovPopis
reasonVoliteľný dôvod zrušenia
POST
/api/v1/admin/transaction/{processId}/cancel
Zrušenie celého procesu (všetkých transakcií)

Parametre cesty

NázovPopis
processId*ID procesu — zrušené budú všetky súvisiace transakcie

Parametre dopytu

NázovPopis
reasonVoliteľný dôvod zrušenia
GET
/api/v1/transaction/
Získanie transakcií (verejný koncový bod — Bearer token nie je potrebný)

Rovnaké možnosti filtrovania a triedenia ako v administrátorskom koncovom bode, avšak bez Bearer autentifikácie. Filtruje údaje dostupné v kontexte obchodu.

Osoby (CRM)

Správa osôb v CRM (zákazníci, kontakty). Existujú dve paralelné cesty kontrolérov s identickou funkcionalitou.

Paralelné koncové body

Osoby je možné spravovať cez dve cesty: /api/v1/admin/person/ a /api/v1/admin/business-contacts/people/. Obe poskytujú rovnakú funkcionalitu — pri nových integráciách odporúčame cestu business-contacts.

GET
/api/v1/admin/person/all
Získanie všetkých osôb (so stránkovaním)

Polia filtrov (parameter f)

personId, firstName, lastName, email

Odpoveď (200) — PageCrmPersonDTO

{
  "totalElements": 100,
  "content": [{
    "id": "507f1f77bcf86cd799439011",
    "firstName": "Ján",
    "lastName": "Novák",
    "email": "jan@example.com",
    "personId": "ext-123",
    "addresses": [],
    "communications": [],
    "organisations": [],
    "types": []
  }]
}
GET
/api/v1/admin/person/{id}
Získanie jednej osoby

Parametre cesty

NázovPopis
id*MongoDB ObjectId osoby
POST
/api/v1/admin/person
Vytvorenie osoby

Request Body (application/json) — PersonDTO

{
  "firstName": "Ján",
  "lastName": "Novák",
  "email": "jan@example.com",
  "salutation": "Pán",
  "title": "dr",
  "personId": "externe-id-123",
  "addresses": [{
    "street": "Ukážková",
    "streetNumber": "1",
    "zipCode": "811 01",
    "city": "Bratislava",
    "country": "SK",
    "type": "MAIN"
  }],
  "communications": [{
    "type": "PHONE",
    "value": "+48 123 456 789"
  }],
  "types": []
}
PUT
/api/v1/admin/person/{id}
Aktualizácia osoby

Rovnaké request body ako pri POST. Úplné nahradenie záznamu.

PATCH
/api/v1/admin/person/{id}/organisations
Zmena priradenia osoby k organizáciám

Request Body — RelationDeltaDTO

{
  "add": ["orgId1", "orgId2"],
  "remove": ["staraOrgId"]
}
DELETE
/api/v1/admin/person/{id}
Odstránenie osoby

Odpoveď (200) — OkDTO

{ "ok": true }
DELETE
/api/v1/admin/person/bulk-delete
Odstránenie viacerých osôb naraz

Request Body

["id1", "id2", "id3"]
Organizácie (CRM)

Správa firiem a organizácií. Analogicky k osobám dostupné taktiež cez dve paralelné cesty.

GET
/api/v1/admin/organisation/all
Získanie všetkých organizácií (so stránkovaním)

Polia filtrov

name (vyhľadávanie podreťazca)

Odpoveď (200) — PageCrmOrganisationDTO

{
  "totalElements": 10,
  "content": [{
    "id": "...",
    "name": "Príklad s.r.o.",
    "organisationId": "externe-id",
    "addresses": [],
    "communications": [],
    "people": [],
    "types": []
  }]
}
POST
/api/v1/admin/organisation
Vytvorenie organizácie

Request Body — OrganisationDTO

{
  "name": "Príklad s.r.o.",
  "organisationId": "externe-id",
  "addresses": [],
  "communications": [],
  "types": []
}
PATCH
/api/v1/admin/organisation/{id}/people
Zmena priradenia osôb k organizácii

Request Body — RelationDeltaDTO

{
  "add": ["personId1"],
  "remove": []
}
Katalóg / slugy

Slugy definujú URL trasy v obchode a prezentujú jednotlivé produkty (product) alebo zoznamy produktov (product-list).

GET
/api/v1/admin/catalog/
Získanie všetkých slugov (so stránkovaním)

Odpoveď — PageSlug

{
  "content": [{
    "id": "507f...",
    "slug": "beton-c25-30",
    "label": "Beton C25/30",
    "objectType": "product",
    "collection": "products",
    "refId": "produktMongoId",
    "inactive": false
  }]
}
PUT
/api/v1/admin/catalog/
Vytvorenie alebo aktualizácia slugu (upsert)

Request Body — Slug

{
  "id": "507f...",           // Uveďte pri aktualizácii
  "slug": "moj-slug",       // Segment URL (povinné)
  "collection": "products",  // Kolekcia MongoDB (povinné)
  "objectType": "product",   // "product" alebo "product-list" (povinné)
  "refId": "...",            // ID produktu (pri objectType "product")
  "fields": {                  // Filter pre "product-list"
    "category": "beton"
  },
  "defaultSort": [{ "field": "name", "direction": "asc" }],
  "context": ["main-nav"],
  "inactive": false
}
GET
/api/v1/admin/catalog/ref-id/{refId}
Získanie slugu na základe ID referencie (ID produktu)

Užitočné na nájdenie slugu priradeného známemu produktu.

POST
/api/v1/admin/catalog/create-slugs/{fieldName}
Automatické generovanie slugov

Parametre cesty

NázovPopis
fieldName*Pole produktu, z ktorého sa generujú slugy

Parametre dopytu

NázovPopis
valuesVoliteľné obmedzenie na určité hodnoty poľa
Kategórie a navigácia
GET
/api/v1/category/navigation
Získanie navigácie (verejné)

Parametre dopytu

NázovPopis
navScopeVoliteľný filter kontextu navigácie
GET
/api/v1/admin/category/navigation-contexts
Získanie dostupných kontextov navigácie

Odpoveď (200)

["main-nav", "footer", "sidebar"]
PUT
/api/v1/admin/category/items/order
Aktualizácia poradia položiek v kategórii

Request Body — pole ItemOrderDTO

[
  { "sku": "SKU-001", "categoryId": "catId", "order": 0 },
  { "sku": "SKU-002", "categoryId": "catId", "order": 1 }
]
POST
/api/v1/admin/category/update-slug-navigations
Pridanie slugu do navigácie (idempotentná operácia)

Request Body — NavigationUpdateDTO

{
  "slugId": "slugMongoId",
  "navigationNames": ["main-nav", "footer"]
}
Nastavenia
GET
/api/v1/admin/settings/{key}
Získanie nastavenia podľa kľúča

Parametre cesty

NázovPopis
key*Kľúč nastavenia
PUT
/api/v1/admin/settings
Vytvorenie alebo aktualizácia nastavenia

Request Body — Setting

{
  "key": "kluc-nastavenia",
  "public": {
    // Verejne dostupné nastavenia
    "theme": "dark"
  },
  "private": {
    // Dostupné len pre autentifikované požiadavky
    "apiKey": "secret"
  }
}
Správa súborov
GET
/api/v1/admin/files/
Zobrazenie zoznamu súborov/obrázkov

Parametre dopytu

NázovPopis
pStránka
sVeľkosť stránky
fFilter názvu súboru
mimeFilter typu MIME (napr. image/png)
POST
/api/v1/admin/files/
Nahranie súboru

Požiadavka ako multipart/form-data s poľom file.

Content-Type: multipart/form-data

file: [binary data]
Platby / Stripe

Integrácia Stripe na spracovanie platieb. K dispozícii sú dva režimy: štandardný Stripe (stripe) a externý Stripe (stripe-external).

GET
/api/v1/payment/stripe/public
Získanie verejných nastavení Stripe (napr. Publishable Key)

Odpoveď (200)

{ "publishableKey": "pk_live_..." }
GET
/api/v1/payment/stripe/state
Získanie aktuálneho stavu platieb Stripe

Vracia aktuálny stav platieb obchodu.

POST
/api/v1/payment/stripe-common/capturable
Stripe webhook — nastavenie stavu platby (produkcia)

Len pre Stripe webhooky

Tento koncový bod slúži na spracovanie prichádzajúcich webhook udalostí Stripe. Hlavička Stripe-Signature je povinná a nastavuje ju automaticky Stripe.

Hlavičky

NázovPopis
Stripe-Signature*Podpisová hlavička nastavovaná službou Stripe na účely overenia
POST
/api/v1/admin/payment/stripe-common/webhook-test
Test Stripe webhooku (admin)

Odpoveď (200) — WebhookTestStatusDTO

{
  "sandbox": {
    "mode": "SANDBOX",
    "passed": true,
    "ranAt": "2024-01-15T10:30:00Z",
    "durationMs": 234,
    "pending": false
  },
  "production": { /* analogicky */ }
}
Import / export
POST
/api/v1/admin/import/{entity}
Import entít (upload CSV/JSON)

Parametre cesty

NázovPopis
entity*Typ entity (napr. products, persons)

Request Body (multipart)

Content-Type: application/json
file: [binary — súbor CSV alebo JSON]

Odpoveď (200) — UploadResponse

{
  "success": true,
  "importCount": 42
}
GET
/api/v1/admin/export/{entity}
Export entít (stiahnutie súboru)

Parametre cesty

NázovPopis
entity*Typ entity (napr. products, persons)

Odpoveď

Binárny súbor (string format: binary)

Dátové modely (schémy)

Prehľad všetkých používaných dátových štruktúr.

PersonDTO

PoleTypPopis
idstringMongoDB ObjectId
firstNamestringMeno
lastNamestringPriezvisko
emailstringE-mailová adresa
salutationstringOslovenie
titlestringTitul (napr. dr)
personIdstringExterné/vlastné ID
tenantIdintegerPriradenie k tenantovi
addressesAddressDTO[]Adresy
communicationsCommunicationDTO[]Komunikačné kanály
organisationsOrganisationDTO[]Priradené organizácie
typesBusinessContactTypeDTO[]Typy kontaktov
createdAtdatetimeDátum vytvorenia
updatedAtdatetimePosledná aktualizácia

AddressDTO

PoleTypPopis
streetstringNázov ulice
streetNumberstringČíslo domu
supplementalstringDodatočné adresné informácie
zipCodestringPSČ
citystringMesto
countrystringKrajina (ISO kód, napr. SK)
typestringTyp adresy (napr. MAIN, BILLING)

Slug

PoleTypPovinnýPopis
idstringMongoDB ObjectId
slugstringURL podcesta obchodu
labelstringČitateľný názov
collectionstringKolekcia MongoDB
objectTypestring"product" alebo "product-list"
refIdstringReferencia produktu (pri product)
fieldsobjectFilter pre product-list
contextstring[]Kontexty zobrazenia
defaultSortSortField[]Predvolené triedenie
inactivebooleanDeaktivuje slug

ProductDataDTO

PoleTypPopis
baseobjectZákladné údaje produktu (dynamické, závislé od obchodu)
additionalobjectRozšíriteľné dodatočné polia

RelationDeltaDTO

Používa sa v koncových bodoch PATCH na správu relácií (osoby↔organizácie).

PoleTypPopis
addstring[]ID, ktoré sa majú pridať
removestring[]ID, ktoré sa majú odstrániť

Wiresphere API · OpenAPI 3.0.1 · Dokumentácia vygenerovaná v máji 2026

Základná URL: https://api.wiresphere.com · Autentifikácia: Bearer JWT · Platnosť tokenu: 24 hodín