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
- 1Richiedi l’accesso
Descrivi il tuo sistema e scegli i dati che ti servono. Esaminiamo le richieste.
- 2Crea una chiave
Dopo l’approvazione, crea una chiave in Impostazioni, API. La chiave viene mostrata una sola volta, quindi salvala nel tuo sistema.
- 3Invia 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": ...}.
| Metodo | Percorso | Scope | Funzione |
|---|---|---|---|
| GET | /api/v1/news/digest | news | Volume di copertura, sentiment e principali testate di un periodo. |
| GET | /api/v1/news/articles | news | Cerca nella copertura giornalistica. |
| GET | /api/v1/news/outlets | news | Testate che parlano delle tue aziende. |
| GET | /api/v1/crisis/incidents | crisis | Incidenti di crisi e articoli critici. |
| GET | /api/v1/approvals | approvals | Comunicati 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-releases | content | Elenca i comunicati stampa. |
| GET | /api/v1/press-releases/{id} | content | Un comunicato stampa con il paragrafo iniziale e il testo. |
| GET | /api/v1/blog-posts | content | Elenca gli articoli del blog. |
| GET | /api/v1/blog-posts/{id} | content | Un articolo del blog con il testo. |
| POST | /api/v1/approvals/press-releases/{id} | approvals | Approva o rifiuta un comunicato stampa in attesa del titolare della chiave. |
| POST | /api/v1/approvals/blog-posts/{id} | approvals | Approva 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": ...}}.
| Codice | Stato | Significato |
|---|---|---|
| invalid_key | 401 | La chiave manca, è malformata o è stata revocata. |
| expired | 401 | La chiave è scaduta. Crea o ruota una chiave. |
| ip_denied | 403 | La chiave è limitata ad altri indirizzi IP. |
| plan_required | 403 | Lo spazio di lavoro non ha il piano Team o superiore. |
| access_required | 403 | L’accesso all’API non è approvato per questo spazio di lavoro. |
| suspended | 403 | L’accesso all’API per questo spazio di lavoro è sospeso. |
| scope_denied | 403 | La chiave non ha lo scope richiesto da questo endpoint. |
| personal_key_required | 403 | Solo una chiave personale può approvare o rifiutare. |
| denied | 403 | Il ruolo del titolare della chiave non lo consente. |
| unknown_endpoint | 404 | Questo endpoint non esiste. |
| comment_required | 400 | Per rifiutare serve un motivo. |
| confirmation_required | 409 | Gli avvisi richiedono conferma. Invia di nuovo la richiesta con force impostato su true. |
| rate_limited | 429 | Il limite al minuto è stato superato. |
| daily_limit | 429 | Il 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
- Aggiungi una destinazione webhook generica e attiva le richieste di approvazione.
- Quando arriva un webhook di approvazione, verifica la firma e leggi data.kind e data.id.
- Mostra la richiesta nel tuo sistema di approvazione. Se serve, leggi il testo con GET press-releases/{id} o blog-posts/{id}.
- 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
- Crea una chiave dello spazio di lavoro con gli scope news e crisis.
- Chiama news/digest a intervalli regolari, per esempio ogni mattina.
- Chiama crisis/incidents più spesso se vuoi i tuoi avvisi. Controlla le intestazioni X-RateLimit per restare nei limiti.
Avvisi nella tua chat
- Per Teams e Google Chat, crea l’URL webhook della stanza e aggiungilo come destinazione in Impostazioni, API, Webhook.
- Per JANDI, Dooray! e Chatwork, collegali da Impostazioni, Integrazioni.
- 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