Przejdź do treści
Dla programistów

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

  1. 1
    Złóż wniosek o dostęp

    Opisz swój system i wybierz potrzebne dane. Wnioski są weryfikowane.

  2. 2
    Utwórz klucz

    Po akceptacji utwórz klucz w Ustawienia > API. Klucz jest pokazywany tylko raz, więc zapisz go w swoim systemie.

  3. 3
    Wyś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żkaZakresCo robi
GET/api/v1/news/digestnewsLiczba publikacji, nastrój i najważniejsze media w wybranym okresie.
GET/api/v1/news/articlesnewsWyszukiwanie publikacji prasowych.
GET/api/v1/news/outletsnewsMedia, które piszą o Twoich firmach.
GET/api/v1/crisis/incidentscrisisIncydenty kryzysowe i krytyczne artykuły.
GET/api/v1/approvalsapprovalsKomunikaty 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-releasescontentLista komunikatów prasowych.
GET/api/v1/press-releases/{id}contentJeden komunikat prasowy z lidem i treścią.
GET/api/v1/blog-postscontentLista wpisów na blogu.
GET/api/v1/blog-posts/{id}contentJeden wpis na blogu z treścią.
POST/api/v1/approvals/press-releases/{id}approvalsAkceptacja lub odrzucenie komunikatu prasowego czekającego na właściciela klucza.
POST/api/v1/approvals/blog-posts/{id}approvalsAkceptacja 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": ...}}.

KodStatusZnaczenie
invalid_key401Brak klucza, ma nieprawidłowy format lub został unieważniony.
expired401Klucz wygasł. Utwórz nowy klucz lub zrotuj obecny.
ip_denied403Klucz jest ograniczony do innych adresów IP.
plan_required403Przestrzeń robocza nie ma planu Team ani wyższego.
access_required403Dostęp do API nie został zatwierdzony dla tej przestrzeni roboczej.
suspended403Dostęp do API dla tej przestrzeni roboczej jest zawieszony.
scope_denied403Klucz nie ma zakresu wymaganego przez ten endpoint.
personal_key_required403Akceptować i odrzucać może tylko klucz osobisty.
denied403Rola właściciela klucza nie pozwala na tę czynność.
unknown_endpoint404Taki endpoint nie istnieje.
comment_required400Odrzucenie wymaga podania powodu.
confirmation_required409Ostrzeżenia wymagają potwierdzenia. Wyślij ponownie z force ustawionym na true.
rate_limited429Przekroczono limit na minutę.
daily_limit429Osią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

  1. Dodaj ogólne miejsce docelowe webhooka i włącz prośby o akceptację.
  2. Gdy nadejdzie webhook akceptacji, zweryfikuj podpis i odczytaj data.kind oraz data.id.
  3. Pokaż prośbę w swoim systemie akceptacji. W razie potrzeby pobierz treść przez GET press-releases/{id} lub blog-posts/{id}.
  4. 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

  1. Utwórz klucz przestrzeni roboczej z zakresami news i crisis.
  2. Wywołuj news/digest cyklicznie, na przykład każdego ranka.
  3. 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

  1. W Teams i Google Chat utwórz adres URL webhooka pokoju i dodaj go jako miejsce docelowe w Ustawienia > API > Webhooki.
  2. JANDI, Dooray! i Chatwork połącz w Ustawienia > Integracje.
  3. 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