3
This commit is contained in:
@@ -36,17 +36,55 @@ Příklady entit: `company`, `person`, `lead`, `businessCase`, `activity`,
|
||||
|
||||
Veřejně přes AppFactory reverse proxy: `https://services.csbot.cz/apps/<app-id>/...`
|
||||
|
||||
### Typované zkratky pro firmy
|
||||
### Typované entity
|
||||
|
||||
| Metoda | Cesta | Popis |
|
||||
|--------|-------------------------|-------------------------------|
|
||||
| POST | `/company` | Vytvoří firmu (validace) |
|
||||
| GET | `/company` | Seznam firem (offset/limit/fulltext) |
|
||||
| GET | `/company/{id}` | Detail firmy |
|
||||
| PUT | `/company/{id}` | Úprava firmy |
|
||||
| DELETE | `/company/{id}` | Smazání firmy |
|
||||
Pro každou z těchto entit existuje plné CRUD se **strukturou objektu i odpovědí
|
||||
viditelnou ve Swaggeru** (request modely, povinná pole, validace):
|
||||
|
||||
### Generický průchod na celé API
|
||||
| Cesta | Entita | Povinná pole |
|
||||
|---------------------------|--------------------|--------------|
|
||||
| `/company` | Firma / klient | `name`, `rating`, `state`, `role` |
|
||||
| `/person` | Kontaktní osoba | `lastName` |
|
||||
| `/lead` | Lead / poptávka | `topic`, `priority` |
|
||||
| `/businessCase` | Obchodní případ | `name`, `company` |
|
||||
| `/offer` | Nabídka | `name`, `company`, `businessCase` |
|
||||
| `/salesOrder` | Objednávka | `name`, `company`, `businessCase` |
|
||||
| `/invoice` | Faktura | `company`, `currency`, `dueDate`, `issueDate`, `invoiceType`, `paymentType`, `taxableSupplyDate` |
|
||||
| `/product` | Produkt | `code`, `name` |
|
||||
| `/priceList` | Ceník | `name`, `code`, `currency`, `validFrom` |
|
||||
| `/project` | Projekt | `name`, `company` |
|
||||
| `/task` | Úkol | `title`, `priority`, `owner`, `resolver`, `deadline` |
|
||||
| `/email` | E-mail (aktivita) | `title`, `priority`, `owner` |
|
||||
| `/event` | Událost | `title`, `priority`, `owner` |
|
||||
| `/meeting` | Schůzka | `title`, `priority`, `owner` |
|
||||
| `/phoneCall` | Telefonát | `title`, `priority`, `owner` |
|
||||
| `/letter` | Dopis | `title`, `priority`, `owner` |
|
||||
| `/webhook` | Webhook | `url`, `events` |
|
||||
|
||||
Operace u každé entity:
|
||||
|
||||
| Metoda | Cesta | Popis |
|
||||
|--------|--------------------|--------------------------------------|
|
||||
| POST | `/{entita}` | Vytvoří záznam (validovaný objekt) |
|
||||
| GET | `/{entita}` | Seznam (`offset`, `limit`, `fulltext` + libovolné RAYNET filtry) |
|
||||
| GET | `/{entita}/{id}` | Detail |
|
||||
| PUT | `/{entita}/{id}` | Částečná úprava (všechna pole volitelná) |
|
||||
| DELETE | `/{entita}/{id}` | Smazání |
|
||||
|
||||
Enumy firmy: `rating` = `A`/`B`/`C`; `state` = `A_POTENTIAL`/`B_ACTUAL`/`C_DEFERRED`/`D_UNATTRACTIVE`;
|
||||
`role` = `A_SUBSCRIBER`/`B_PARTNER`/`C_SUPPLIER`/`D_RIVAL`; `taxPayer` = `YES`/`NO`.
|
||||
|
||||
> Pole jsou v `camelCase` (tak je očekává RAYNET). Nevyjmenovaná pole jsou
|
||||
> povolená (`extra="allow"`), takže lze poslat i pole, která model neuvádí.
|
||||
|
||||
### Generický průchod na zbytek API
|
||||
|
||||
Pro entity bez typovaného modelu – zejména **uživatelé** (`userAccount`),
|
||||
soubory (`file`), DMS dokumenty/složky, GDPR, hromadné e-maly a všechny
|
||||
**číselníky** (`currency`, `legalForm`, `paymentTerm`, `taxRate`, `territory`,
|
||||
`contactSource`, `companyCategory`, `productCategory`, `leadPhase`,
|
||||
`businessCasePhase`, `offerStatus`, `salesOrderStatus`, `projectStatus`,
|
||||
`maritalStatus`, `employeesNumber`, `economyActivity`, klasifikace 1/2/3, …):
|
||||
|
||||
| Metoda | Cesta | Mapuje se na RAYNET |
|
||||
|--------|-----------------------------|-------------------------------|
|
||||
@@ -56,19 +94,33 @@ Veřejně přes AppFactory reverse proxy: `https://services.csbot.cz/apps/<app-i
|
||||
| PUT | `/api/{resource}/{id}` | `POST /{resource}/{id}/` (update) |
|
||||
| DELETE | `/api/{resource}/{id}` | `DELETE /{resource}/{id}/` |
|
||||
|
||||
## Vytvoření firmy – povinná pole
|
||||
### Vnořené zdroje a speciální akce
|
||||
|
||||
| Pole | Typ | Hodnoty |
|
||||
|----------|--------|------------------------------------------------------------|
|
||||
| `name` | string | název firmy |
|
||||
| `rating` | enum | `A`, `B`, `C` |
|
||||
| `state` | enum | `A_POTENTIAL`, `B_ACTUAL`, `C_DEFERRED`, `D_UNATTRACTIVE` |
|
||||
| `role` | enum | `A_SUBSCRIBER`, `B_PARTNER`, `C_SUPPLIER`, `D_RIVAL` |
|
||||
Pro kolekce a akce nad záznamem (`sub` = zbytek cesty, přesně dle RAYNET vč.
|
||||
koncového lomítka u kolekcí):
|
||||
|
||||
Volitelná: `regNumber` (IČO), `taxNumber` (DIČ), `taxPayer` (`YES`/`NO`),
|
||||
`bankAccount`, `notice`, `owner`, `category`, `legalForm`, `paymentTerm`,
|
||||
`turnover`, `territory`, `addresses`, `tags`, `customFields` a další dle
|
||||
RAYNET `CompanyInsertDto`.
|
||||
| Metoda | Cesta | Příklad cíle |
|
||||
|--------|----------------------------------------|--------------|
|
||||
| GET | `/api/{resource}/{id}/{sub}` | `/invoice/{id}/pdfExport`, `/company/{id}/relationship/` |
|
||||
| POST | `/api/{resource}/{id}/{sub}` | `/invoice/{id}/cancel`, `/company/{id}/lock`, `/company/{id}/merge/{srcId}/` |
|
||||
| PUT | `/api/{resource}/{id}/{sub}` | `/company/{id}/address/`, `/invoice/{id}/payment/`, `/offer/{id}/item/` |
|
||||
| DELETE | `/api/{resource}/{id}/{sub}` | `/company/{id}/address/5/` |
|
||||
|
||||
### Raw – 100 % pokrytí
|
||||
|
||||
Pro jakoukoli cestu / metodu (i netypické, např. `PUT /invoice/creditNote`):
|
||||
|
||||
```text
|
||||
POST /raw
|
||||
{ "method": "PUT", "path": "/invoice/creditNote", "params": {...}, "data": {...} }
|
||||
```
|
||||
|
||||
### Tvar odpovědí
|
||||
|
||||
- Create → `{ "success": true, "id": 123, "data": {...} }`
|
||||
- Detail → `{ "success": true, "data": { ...objekt vč. id, rowInfo } }`
|
||||
- Seznam → `{ "success": true, "totalCount": N, "data": [ ... ] }`
|
||||
- Update / Delete → `{ "success": true }`
|
||||
|
||||
### Příklad těla `POST /company`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user