Połącz swoje systemy z Marcomm AI
Odczytuj zestawienia wiadomości, krytyczne wiadomości i oczekujące akceptacje z własnych systemów oraz akceptuj lub odrzucaj je w swoich narzędziach do akceptacji. API jest dostępne w planie Team i wyższych, po krótkiej weryfikacji.
Pierwsze kroki
- 1Złóż wniosek o dostęp
Opisz swój system i wybierz potrzebne dane. Wnioski są weryfikowane.
- 2Utwórz klucz
Po akceptacji utwórz klucz w Ustawienia > API. Klucz jest pokazywany tylko raz, więc zapisz go w swoim systemie.
- 3Wyślij żądanie
Wyślij klucz w nagłówku Authorization i wywołaj wybrany z poniższych endpointów.
Przykładowe żądanie
curl https://app.marcomm.works/api/v1/news/digest?days=7 \
-H "Authorization: Bearer mc_live_..."Uwierzytelnianie
Wysyłaj klucz jako token Bearer w każdym żądaniu. Klucz osobisty działa jako osoba, która go utworzyła, więc może odczytywać akceptacje i podejmować decyzje w jej imieniu. Klucz przestrzeni roboczej tworzy administrator i służy tylko do odczytu. Klucze mogą wygasać, być ograniczone do adresów IP i być rotowane: po rotacji stary klucz działa jeszcze przez 24 godziny.
Zakresy
Każdy klucz ma tylko te zakresy, na które zatwierdzono Twoją aplikację.
- news
- Zestawienie wiadomości, artykuły i media.
- crisis
- Krytyczne wiadomości i incydenty kryzysowe.
- approvals
- Oczekujące akceptacje oraz ich akceptowanie lub odrzucanie kluczem osobistym.
- content
- Odczyt komunikatów prasowych i wpisów na blogu.
Endpointy
Ścieżki zaczynają się od /api/v1. Endpointy odczytu używają GET i przyjmują parametry zapytania. Odpowiedź to JSON w postaci {"data": ...}.
| Metoda | Ścieżka | Zakres | Co robi |
|---|---|---|---|
| GET | /api/v1/news/digest | news | Liczba publikacji, nastrój i najważniejsze media w wybranym okresie. |
| GET | /api/v1/news/articles | news | Wyszukiwanie publikacji prasowych. |
| GET | /api/v1/news/outlets | news | Media, które piszą o Twoich firmach. |
| GET | /api/v1/crisis/incidents | crisis | Incydenty kryzysowe i krytyczne artykuły. |
| GET | /api/v1/approvals | approvals | Komunikaty prasowe i wpisy na blogu czekające na właściciela klucza oraz te, które właściciel klucza zgłosił do akceptacji. |
| GET | /api/v1/press-releases | content | Lista komunikatów prasowych. |
| GET | /api/v1/press-releases/{id} | content | Jeden komunikat prasowy z lidem i treścią. |
| GET | /api/v1/blog-posts | content | Lista wpisów na blogu. |
| GET | /api/v1/blog-posts/{id} | content | Jeden wpis na blogu z treścią. |
| POST | /api/v1/approvals/press-releases/{id} | approvals | Akceptacja lub odrzucenie komunikatu prasowego czekającego na właściciela klucza. |
| POST | /api/v1/approvals/blog-posts/{id} | approvals | Akceptacja lub odrzucenie wpisu na blogu czekającego na właściciela klucza. |
Akceptowanie i odrzucanie
Wyślij {"decision": "approve"} lub {"decision": "reject", "comment": "..."} do danego elementu. Odrzucenie wymaga komentarza. Decyzja podlega tym samym zasadom co w aplikacji i w Slacku i jest zapisywana na właściciela klucza. Jeśli tekst zawiera sformułowania wymagające potwierdzenia, otrzymasz 409 confirmation_required z ostrzeżeniami i możesz wysłać żądanie ponownie z "force": true.
curl -X POST https://app.marcomm.works/api/v1/approvals/press-releases/<id> \
-H "Authorization: Bearer mc_live_..." \
-H "Content-Type: application/json" \
-d '{"decision":"reject","comment":"Please fix the headline."}'Limity zapytań
Limity są ustawiane dla przestrzeni roboczej, na minutę i na dobę (UTC). Odpowiedzi zawierają poniższe nagłówki. Po przekroczeniu limitu otrzymasz 429 z nagłówkiem Retry-After. Aby podnieść limit, złóż wniosek w Ustawienia > API. Nasz zespół go rozpatrzy.
- X-RateLimit-Limit
- Dozwolona liczba żądań na minutę.
- X-RateLimit-Remaining
- Pozostała liczba żądań w bieżącej minucie.
- X-RateLimit-Reset
- Czas Unix, w którym okno minutowe zostanie zresetowane.
- X-RateLimit-Day-Limit
- Dozwolona liczba żądań na dobę.
- X-RateLimit-Day-Remaining
- Pozostała liczba żądań na dziś.
- Retry-After
- Liczba sekund do ponowienia próby. Tylko przy 429.
Błędy
Błędy są zwracane jako JSON w postaci {"error": {"code": ..., "message": ...}}.
| Kod | Status | Znaczenie |
|---|---|---|
| invalid_key | 401 | Brak klucza, ma nieprawidłowy format lub został unieważniony. |
| expired | 401 | Klucz wygasł. Utwórz nowy klucz lub zrotuj obecny. |
| ip_denied | 403 | Klucz jest ograniczony do innych adresów IP. |
| plan_required | 403 | Przestrzeń robocza nie ma planu Team ani wyższego. |
| access_required | 403 | Dostęp do API nie został zatwierdzony dla tej przestrzeni roboczej. |
| suspended | 403 | Dostęp do API dla tej przestrzeni roboczej jest zawieszony. |
| scope_denied | 403 | Klucz nie ma zakresu wymaganego przez ten endpoint. |
| personal_key_required | 403 | Akceptować i odrzucać może tylko klucz osobisty. |
| denied | 403 | Rola właściciela klucza nie pozwala na tę czynność. |
| unknown_endpoint | 404 | Taki endpoint nie istnieje. |
| comment_required | 400 | Odrzucenie wymaga podania powodu. |
| confirmation_required | 409 | Ostrzeżenia wymagają potwierdzenia. Wyślij ponownie z force ustawionym na true. |
| rate_limited | 429 | Przekroczono limit na minutę. |
| daily_limit | 429 | Osiągnięto limit dobowy. |
Webhooki
Alerty, prośby o akceptację i poranny briefing mogą być też wysyłane do Twojego systemu. Dodaj miejsce docelowe w Ustawienia > API > Webhooki. Każde żądanie to JSON z polami event (alert, approval lub briefing), workspace, title, text, url, data i sentAt. Prośba o akceptację zawiera data.kind (press_release, blog lub event) oraz data.id, których możesz użyć do odczytu i decyzji przez API.
Każde żądanie jest podpisane. Oblicz HMAC-SHA256 z surowej treści żądania za pomocą swojego sekretu podpisu i porównaj wynik z nagłówkiem X-Marcomm-Signature w postaci sha256=<hex>. Odrzucaj żądania, które się nie zgadzają.
Weryfikacja webhooka w Node.js
import { createHmac, timingSafeEqual } from 'node:crypto';
export function isFromMarcomm(rawBody: string, signature: string, secret: string) {
const expected = 'sha256=' + createHmac('sha256', secret).update(rawBody).digest('hex');
const a = Buffer.from(expected);
const b = Buffer.from(signature);
return a.length === b.length && timingSafeEqual(a, b);
}Przewodniki połączeń
Akceptowanie w Twoim systemie akceptacji
- Dodaj ogólne miejsce docelowe webhooka i włącz prośby o akceptację.
- Gdy nadejdzie webhook akceptacji, zweryfikuj podpis i odczytaj data.kind oraz data.id.
- Pokaż prośbę w swoim systemie akceptacji. W razie potrzeby pobierz treść przez GET press-releases/{id} lub blog-posts/{id}.
- Wyślij decyzję kluczem osobistym osoby, która decyduje. Wydarzenia i wysyłki e-mailowe są rozstrzygane w aplikacji przez link w wiadomości.
Zestawienie wiadomości w Twoim dashboardzie
- Utwórz klucz przestrzeni roboczej z zakresami news i crisis.
- Wywołuj news/digest cyklicznie, na przykład każdego ranka.
- Wywołuj crisis/incidents częściej, jeśli chcesz mieć własne alerty. Sprawdzaj nagłówki X-RateLimit, aby mieścić się w limitach.
Alerty w Twoim czacie
- W Teams i Google Chat utwórz adres URL webhooka pokoju i dodaj go jako miejsce docelowe w Ustawienia > API > Webhooki.
- JANDI, Dooray! i Chatwork połącz w Ustawienia > Integracje.
- Wybierz, które z alertów, próśb o akceptację i porannego briefingu ma dostawać każde miejsce docelowe, a następnie wyślij wiadomość testową.
Gotowy do połączenia?
Właściciel lub administrator przestrzeni roboczej składa wniosek w Ustawienia > API. Po zakończeniu weryfikacji dostaniesz powiadomienie e-mailem i w aplikacji.
Otwórz ustawienia API