Integracije
Referenca API
REST API za nadzorno ploščo HelpStack, widget in webhooks.
Hitre dejstvice#
| Osnovna pot | Končne točke se nahajajo pod https://helpstack.eu/api/… — predpona poti, ne dosegljiv URL |
| Avtentikacija (API nadzorne plošče) | Piškot seje NextAuth (prijavljeni uporabnik) |
| Avtentikacija (API widgeta) | Ni (javno, omejeno po hitrosti) |
| Avtentikacija (webhooks) | Rokovanje z žetonom za preverjanje + podpis HMAC-SHA256 |
| Content-Type | application/json (nalaganje datotek uporablja multipart/form-data) |
| Večnajemništvo | Vsaka zahteva nadzorne plošče je omejena na organizacijo uporabnika seje |
Pričakujte 404 na
/apisamem in 401 na avtenticiranih končnih točkah. Na goli potihttps://helpstack.eu/apini nobene usmeritve — zahtevo vrne 404 po zasnovi, ker je API nabor podpoti (/api/conversations,/api/channels, …), ne pa brskljiva korenina. Odpiranje prave končne točke, kot je/api/conversations, v brskalniku vrne 401 (brez piškotka seje), kar potrjuje, da obstaja in je zaščitena z avtentikacijo. Nobeden od odgovorov ni napaka.
Model avtentikacije — preberite najprej#
Trenutno ni javnega sistema z API-ključem ali žetonom za zunanje klicatelje. Ne iščite "API ključa" — ne obstaja. API nadzorne plošče/interno je avtenticiran s piškotkom seje NextAuth prijavljenega uporabnika, vsaka zahteva pa je s posredniško programsko opremo (
withOrganization/withAdmin/withAgent) samodejno omejena na organizacijo tega uporabnika. Te končne točke uporablja UI nadzorne plošče HelpStack.
Za klicanje končnih točk nadzorne plošče zunaj brskalnika morate predvajati avtenticiran piškotok seje. Če potrebujete dostop med stroji, so podprte javne površine:
- Končne točke widgeta — javne, omejene po hitrosti na IP/obiskovalca (glejte Vgraditev widgeta).
- Končne točke webhooks — javne, preverjene z žetonom + podpisom HMAC (glejte Webhooks).
Vse, kar zahteva piškotok seje, obravnavajte kot "preverite pri svoji namestitvi" za programatično uporabo.
Ovojnica odgovora#
Vse API poti vračajo standardno ovojnico.
Uspeh
{ "success": true, "data": { } }
Napaka
{
"success": false,
"error": {
"message": "Human-readable message",
"code": "OPTIONAL_CODE",
"fields": { "fieldName": ["error 1"] }
}
}
code in fields sta neobvezna. fields je zapolnjen pri napakah preverjanja (Zod) s sporočili za posamezno polje.
Kode napak in HTTP status#
Napake ustvarja tipizirani razredi napak in centralni upravljalnik. Pregled na visoki ravni:
| HTTP | Kdaj | Primer code |
|---|---|---|
| 400 | Neveljavna vhodna vrednost / napaka preverjanja | VALIDATION_ERROR |
| 401 | Manjkajoča ali potečena avtentikacija | — |
| 402 | Premalo žetonov za izvedbo dejanja | INSUFFICIENT_TOKENS |
| 403 | Nezadostna vloga/dovoljenje | — |
| 404 | Vir ni bil najden | — |
| 409 | Podvajanje/konflikt | — |
| 429 | Presežena omejitev hitrosti | — |
| 502 | Napaka tretje strani API | — |
| 500 | Nepričakovana/notranja napaka (sporočilo je skrito) | — |
Napake pri preverjanju Zod vrnejo 400 s code: "VALIDATION_ERROR" in objektom fields. Nepričakovane napake vrnejo 500 z generičnim sporočilom ("An unexpected error occurred"); dejanske podrobnosti so zabeležene samo na strežniku.
Katalog končnih točk#
Vloge: končna točka označena z ADMIN zahteva skrbnika (withAdmin), AGENT zahteva agenta ali višje (withAgent), Seja zahteva katerega koli avtenticiranega člana organizacije (withOrganization).
Kanali
| Metoda | Pot | Namen | Avtentikacija |
|---|---|---|---|
GET | /api/channels | Seznam kanalov | Seja |
POST | /api/channels | Ustvari kanal | ADMIN |
GET | /api/channels/[id] | Pridobi en kanal | Seja |
PATCH | /api/channels/[id] | Posodobi kanal | ADMIN |
DELETE | /api/channels/[id] | Izbriši kanal | ADMIN |
GET | /api/channels/[id]/widget-script | Pridobi odrezek za vgraditev za kanal WEBSITE_CHAT | Seja |
GET | /api/channels/[id]/widget-config | Pridobi konfiguracijo videza widgeta | Seja |
GET/POST | /api/channels/[id]/agent-tools | Prikaži seznam/priloži orodja agenta na ravni kanala | Seja |
Ustvari kanal — POST /api/channels (preverjena vsebina, createChannelSchema):
{
"type": "WEBSITE_CHAT",
"name": "Website Chat",
"region": "eu",
"defaultLanguage": "en",
"autoTranslate": true,
"translateToLanguage": "en",
"fallbackLanguage": "sl",
"aiProviderId": "PROVIDER_ID",
"credentials": {},
"responseTemplate": {},
"autoReply": false,
"autoApprove": false,
"autoEnhance": false
}
| Polje | Tip | Obvezno | Opombe |
|---|---|---|---|
type | enum | da | EMAIL | FACEBOOK | INSTAGRAM | WHATSAPP | TELEGRAM | WEBSITE_CHAT |
name | string | da | Minimalna dolžina 1 |
region | string | ne | |
defaultLanguage | string | ne | Privzeto en (jezik agenta) |
autoTranslate | boolean | ne | Privzeto true |
translateToLanguage | string | ne | Jezik agenta, v katerega se prevaja |
fallbackLanguage | string | ne | Uganjen jezik stranke za kratka/dvoumna sporočila |
aiProviderId | string | ne | Vrne na privzetega ponudnika organizacije |
credentials | object | da | Poverilnice za posamezno vrsto kanala (npr. IMAP/SMTP, žetoni strani) |
responseTemplate | object | ne | |
autoReply | boolean | ne | Privzeto false |
autoApprove | boolean | ne | Privzeto false |
autoEnhance | boolean | ne | Privzeto false |
Oblike poverilnic za vrsto kanala (credentials) se preverjajo ločeno — npr. E-pošta zahteva { host, port, username, password, from, secure?, imapHost?, imapPort?, imapSecure?, imapAllowSelfSigned? }; Facebook zahteva { pageId, accessToken, appSecret? }; Instagram zahteva { accountId, accessToken }. Poverilnice so shranjene šifrirano (AES-256-GCM).
Pogovori
| Metoda | Pot | Namen | Avtentikacija | Ključni parametri |
|---|---|---|---|---|
GET | /api/conversations | Seznam pogovorov | Seja | page, pageSize, status, channelId, unread, assignedToId, language, search |
POST | /api/conversations | Ustvari pogovor | AGENT | |
GET | /api/conversations/[id] | Pridobi enega | Seja | |
PATCH | /api/conversations/[id] | Posodobi (status, prioriteta, dodelitev, jezik, opombe) | Seja | |
DELETE | /api/conversations/[id] | Izbriši | Seja | |
GET | /api/conversations/[id]/messages | Seznam sporočil | Seja | |
POST | /api/conversations/[id]/messages | Pošlji odgovor agenta | AGENT | |
POST | /api/conversations/[id]/read | Označi kot prebrano | Seja | |
POST | /api/conversations/[id]/unread | Označi kot neprebrano | Seja | |
POST | /api/conversations/bulk-read | Označi več kot prebrano | Seja |
Vrednosti filtra status: OPEN | PENDING | CLOSED | ARCHIVED. pageSize je omejen na 100 (privzeto 20).
Pošlji sporočilo — POST /api/conversations/[id]/messages (preverjena vsebina, sendMessageSchema):
{
"conversationId": "CONVERSATION_ID",
"content": "Thanks for reaching out — here's how to fix that.",
"attachments": ["storage/path/file.png"]
}
| Polje | Tip | Obvezno | Opombe |
|---|---|---|---|
conversationId | string | da | Mora se ujemati s parametrom poti [id], sicer 400 VALIDATION_ERROR |
content | string | da | Minimalna dolžina 1 |
attachments | string[] | ne | Poti v shrambi |
Obnašanje: sporočilo je ustvarjeno kot OUTBOUND. Če ima kanal vklopljeno autoTranslate in je znan jezik stranke, je sporočilo ustvarjeno neodobreno in prevedeno v ozadju (agent odobri pred pošiljanjem). Pošiljanje porabi žetone načrta; če organizacija nima žetonov, pot vrne 402 s code: "INSUFFICIENT_TOKENS". Ob uspehu vrne ustvarjeno sporočilo s HTTP 201.
Sporočila
| Metoda | Pot | Namen | Avtentikacija |
|---|---|---|---|
POST | /api/messages/[id]/approve | Odobri odgovor v čakalni vrsti/preveden za pošiljanje | Seja |
POST | /api/messages/[id]/generate-reply | Ustvari predlog AI odgovora | Seja |
POST | /api/messages/[id]/retranslate | Znova izvedi prevajanje sporočila | Seja |
Pogosta vprašanja
| Metoda | Pot | Namen | Avtentikacija | Ključni parametri |
|---|---|---|---|---|
GET | /api/faqs | Seznam pogostih vprašanj | Seja | channelId |
POST | /api/faqs | Ustvari pogosto vprašanje | ADMIN | |
PATCH | /api/faqs/[id] | Posodobi pogosto vprašanje | Seja | |
DELETE | /api/faqs/[id] | Izbriši pogosto vprašanje | Seja | |
POST | /api/faqs/reorder | Preuredite pogosta vprašanja | Seja | |
POST | /api/faqs/generate | AI-ustvari predloge pogostih vprašanj | Seja |
Mediji
| Metoda | Pot | Namen | Avtentikacija |
|---|---|---|---|
POST | /api/media/upload | Naloži datoteko (multipart/form-data) | Seja |
GET | /api/media/[id] | Pridobi metapodatke/datoteko medija | Seja |
DELETE | /api/media/[id] | Izbriši medij | Seja |
Obvestila
| Metoda | Pot | Namen | Avtentikacija |
|---|---|---|---|
GET/PUT | /api/notifications/preferences | Pridobi/posodobi nastavitve obvestil | Seja |
GET/POST | /api/notifications/integrations | Seznam/konfiguriraj integracije obvestil | Seja |
POST | /api/notifications/push-subscription | Registriraj naročnino na Web Push | Seja |
AI ponudniki
| Metoda | Pot | Namen | Avtentikacija |
|---|---|---|---|
GET | /api/ai-providers | Seznam konfiguriranih ponudnikov | Seja |
POST | /api/ai-providers | Dodaj ponudnika | Seja |
PATCH | /api/ai-providers/[id] | Posodobi ponudnika | Seja |
DELETE | /api/ai-providers/[id] | Odstrani ponudnika | Seja |
Orodja agenta
| Metoda | Pot | Namen | Avtentikacija |
|---|---|---|---|
GET | /api/agent-tools | Seznam orodij agenta na ravni organizacije | Seja |
POST | /api/agent-tools | Ustvari orodje agenta | Seja |
PATCH | /api/agent-tools/[id] | Posodobi orodje agenta | Seja |
DELETE | /api/agent-tools/[id] | Izbriši orodje agenta | Seja |
GET | /api/agent-tools/[id]/logs | Ogled dnevnikov klicev orodja | Seja |
Glejte Orodja agenta po meri za celotno anatomijo orodja.
Widget (javno)
| Metoda | Pot | Namen | Avtentikacija |
|---|---|---|---|
GET | /api/widget/[channelId]/config | Konfiguracija widgeta | Javno, ~30/min/IP |
GET | /api/widget/[channelId]/faqs | Do 5 žetonov s pogostimi vprašanji | Javno, ~30/min/IP |
GET | /api/widget/[channelId]/status | Stanje v spletu | Javno |
POST | /api/widget/[channelId]/upload | Nalaganje datoteke | Javno |
POST | /api/widget/message | Pošlji sporočilo (rezerva za WebSocket) | Javno, ~20/min/obiskovalec |
Glejte Vgraditev widgeta za koristne obremenitve.
Webhooks (javno)
| Metoda | Pot | Namen | Avtentikacija |
|---|---|---|---|
GET | /api/webhooks/facebook | Rokovanje za preverjanje | Žeton za preverjanje |
POST | /api/webhooks/facebook | Prejemaj dogodke Messenger | Podpis HMAC |
GET/POST | /api/webhooks/instagram | Preverjanje / sprejemanje dogodkov Instagram | Žeton za preverjanje / HMAC |
GET/POST | /api/webhooks/whatsapp | Preverjanje / sprejemanje dogodkov WhatsApp | Žeton za preverjanje / HMAC |
Glejte Webhooks za podrobnosti o rokovanju in podpisu.