Vai al contenuto
MarcommAI
Sviluppatori

Collega i tuoi sistemi a Marcomm AI

Leggi i riepiloghi delle notizie, le notizie critiche e le approvazioni in sospeso dai tuoi sistemi, e approva o rifiuta dai tuoi strumenti di approvazione. L’API è disponibile con il piano Team e superiori, dopo una breve verifica.

Per iniziare

  1. 1
    Richiedi l’accesso

    Descrivi il tuo sistema e scegli i dati che ti servono. Esaminiamo le richieste.

  2. 2
    Crea una chiave

    Dopo l’approvazione, crea una chiave in Impostazioni, API. La chiave viene mostrata una sola volta, quindi salvala nel tuo sistema.

  3. 3
    Invia una richiesta

    Invia la chiave nell’intestazione Authorization e chiama uno degli endpoint qui sotto.

Richiesta di esempio

curl https://app.marcomm.works/api/v1/news/digest?days=7 \
  -H "Authorization: Bearer mc_live_..."

Autenticazione

Invia la chiave come token Bearer a ogni richiesta. Una chiave personale agisce come la persona che l’ha creata, quindi può leggere e decidere le approvazioni a suo nome. Una chiave dello spazio di lavoro viene creata da un amministratore e può solo leggere. Le chiavi possono scadere, essere limitate a indirizzi IP ed essere ruotate: la vecchia chiave continua a funzionare per 24 ore dopo la rotazione.

Scope

Una chiave porta solo gli scope per cui la tua richiesta è stata approvata.

news
Riepilogo notizie, articoli e testate.
crisis
Notizie critiche e incidenti di crisi.
approvals
Approvazioni in sospeso, con approvazione o rifiuto tramite una chiave personale.
content
Lettura di comunicati stampa e articoli del blog.

Endpoint

I percorsi iniziano con /api/v1. Gli endpoint di lettura usano GET e accettano parametri di query. La risposta è JSON nella forma {"data": ...}.

MetodoPercorsoScopeFunzione
GET/api/v1/news/digestnewsVolume di copertura, sentiment e principali testate di un periodo.
GET/api/v1/news/articlesnewsCerca nella copertura giornalistica.
GET/api/v1/news/outletsnewsTestate che parlano delle tue aziende.
GET/api/v1/crisis/incidentscrisisIncidenti di crisi e articoli critici.
GET/api/v1/approvalsapprovalsComunicati stampa e articoli del blog in attesa del titolare della chiave, e quelli di cui il titolare ha chiesto l’approvazione.
GET/api/v1/press-releasescontentElenca i comunicati stampa.
GET/api/v1/press-releases/{id}contentUn comunicato stampa con il paragrafo iniziale e il testo.
GET/api/v1/blog-postscontentElenca gli articoli del blog.
GET/api/v1/blog-posts/{id}contentUn articolo del blog con il testo.
POST/api/v1/approvals/press-releases/{id}approvalsApprova o rifiuta un comunicato stampa in attesa del titolare della chiave.
POST/api/v1/approvals/blog-posts/{id}approvalsApprova o rifiuta un articolo del blog in attesa del titolare della chiave.

Approvare e rifiutare

Invia {"decision": "approve"} oppure {"decision": "reject", "comment": "..."} all’elemento. Per rifiutare serve un commento. La decisione segue le stesse regole dell’app e di Slack ed è registrata a nome del titolare della chiave. Se il testo contiene frasi che richiedono conferma, ricevi 409 confirmation_required con gli avvisi e puoi inviare di nuovo la richiesta con "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."}'

Limiti di frequenza

I limiti sono impostati per spazio di lavoro, al minuto e al giorno (UTC). Le risposte includono le intestazioni qui sotto. Superato un limite ricevi 429 con Retry-After. Per aumentare un limite, invia una richiesta in Impostazioni, API. Il nostro team la valuta.

X-RateLimit-Limit
Richieste consentite al minuto.
X-RateLimit-Remaining
Richieste rimaste nel minuto corrente.
X-RateLimit-Reset
Ora Unix in cui la finestra di un minuto si azzera.
X-RateLimit-Day-Limit
Richieste consentite al giorno.
X-RateLimit-Day-Remaining
Richieste rimaste oggi.
Retry-After
Secondi da attendere prima di riprovare. Solo con 429.

Errori

Gli errori restituiscono JSON nella forma {"error": {"code": ..., "message": ...}}.

CodiceStatoSignificato
invalid_key401La chiave manca, è malformata o è stata revocata.
expired401La chiave è scaduta. Crea o ruota una chiave.
ip_denied403La chiave è limitata ad altri indirizzi IP.
plan_required403Lo spazio di lavoro non ha il piano Team o superiore.
access_required403L’accesso all’API non è approvato per questo spazio di lavoro.
suspended403L’accesso all’API per questo spazio di lavoro è sospeso.
scope_denied403La chiave non ha lo scope richiesto da questo endpoint.
personal_key_required403Solo una chiave personale può approvare o rifiutare.
denied403Il ruolo del titolare della chiave non lo consente.
unknown_endpoint404Questo endpoint non esiste.
comment_required400Per rifiutare serve un motivo.
confirmation_required409Gli avvisi richiedono conferma. Invia di nuovo la richiesta con force impostato su true.
rate_limited429Il limite al minuto è stato superato.
daily_limit429Il limite giornaliero è stato raggiunto.

Webhook

Avvisi, richieste di approvazione e briefing del mattino possono essere inviati anche al tuo sistema. Aggiungi una destinazione in Impostazioni, API, Webhook. Ogni richiesta è JSON con i campi event (alert, approval o briefing), workspace, title, text, url, data e sentAt. Una richiesta di approvazione contiene data.kind (press_release, blog o event) e data.id, che puoi usare per leggere e decidere tramite l’API.

Le richieste sono firmate. Calcola l’HMAC-SHA256 del corpo grezzo della richiesta con il tuo segreto di firma e confrontalo con l’intestazione X-Marcomm-Signature, nella forma sha256=<hex>. Rifiuta le richieste che non corrispondono.

Verificare un webhook in 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);
}

Guide di collegamento

Approvare dal tuo sistema di approvazione

  1. Aggiungi una destinazione webhook generica e attiva le richieste di approvazione.
  2. Quando arriva un webhook di approvazione, verifica la firma e leggi data.kind e data.id.
  3. Mostra la richiesta nel tuo sistema di approvazione. Se serve, leggi il testo con GET press-releases/{id} o blog-posts/{id}.
  4. Invia la decisione con la chiave personale di chi decide. Gli eventi e gli invii e-mail si decidono nell’app tramite il link nel messaggio.

Alimentare la dashboard con il riepilogo notizie

  1. Crea una chiave dello spazio di lavoro con gli scope news e crisis.
  2. Chiama news/digest a intervalli regolari, per esempio ogni mattina.
  3. Chiama crisis/incidents più spesso se vuoi i tuoi avvisi. Controlla le intestazioni X-RateLimit per restare nei limiti.

Avvisi nella tua chat

  1. Per Teams e Google Chat, crea l’URL webhook della stanza e aggiungilo come destinazione in Impostazioni, API, Webhook.
  2. Per JANDI, Dooray! e Chatwork, collegali da Impostazioni, Integrazioni.
  3. Scegli se ogni destinazione riceve avvisi, richieste di approvazione e briefing del mattino, poi invia un messaggio di prova.

Pronto a collegarti?

Il proprietario o un amministratore dello spazio di lavoro invia la richiesta in Impostazioni, API. Ti avvisiamo via e-mail e nell’app quando la verifica è conclusa.

Apri le impostazioni API