GET/api/v4/rollup_interactions

Ottieni le interazioni aggregate

Restituisce un elenco di interazioni su più sedi dell'account, con paginazione basata su cursore, filtri e ordinamento.

Richiede una chiave API. Consulta Autenticazione per il formato dell’header e la rotazione delle chiavi.

Parametri

Query

NomeTipoObbligatorioDescrizionePredefinito
tagstringfacoltativoLocation tag to scope the rollup to. Defaults to `all`, every location the key can see. Omit it unless you tag locations.all
siteUrlsstringfacoltativoJSON-encoded array of publisher hostnames to include.—
startDatestringfacoltativoStart of the date-range filter (YYYY-MM-DD).—
endDatestringfacoltativoEnd of the date-range filter (YYYY-MM-DD).—
searchStringstringfacoltativoFull-text search across interaction content.—
categorystringfacoltativoSingle interaction category, e.g. `REVIEW`.—
categoriesstringfacoltativoJSON-encoded array of interaction categories.—
ratingFiltersstringfacoltativoJSON-encoded array of star ratings to include, e.g. `[3,4]`.—
ratingFilterintegerfacoltativoSingle star rating to filter by.—
responseStatusstringfacoltativoJSON-encoded response-status filter. Values: `RESPONDED`, `PENDING`.—
sortOrderstringfacoltativoJSON-encoded sort order. Values: `NEWEST_FIRST`, `OLDEST_FIRST`, `LAST_RESPONDED`.—
firstintegerfacoltativoNumber of records to return from the beginning. Defaults to 20 when omitted, the endpoint always returns a single page, never the whole history.—
afterstringfacoltativoCursor to page forward from. Pass `pageInfo.endCursor`, or equivalently the `cursor` of the last edge in the previous page.—
lastintegerfacoltativoNumber of records to return from the end.—
beforestringfacoltativoCursor to page backward from, used with `last`. Pass the `cursor` of the first edge of the page you are moving back from. `pageInfo` carries no `startCursor` field, so the edge cursor is the value to use.—

Risposte

200Paginated rollup of interactions across the account. `data.rollupInteractions` holds the connection.
Response
{  "data": {    "rollupInteractions": {      "pageInfo": {        "hasNextPage": true,        "hasPreviousPage": false      },      "edges": [        {          "node": {            "id": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841",            "source": "maps.google.com",            "content": "Excellent service, highly recommend.",            "authorName": "Priya S.",            "rating": 5,            "date": "2026-06-30T12:04:11+00:00",            "category": "Review",            "type": "Review",            "responded": false,            "responseCount": 0,            "canRespond": true,            "locationId": 1800289          },          "cursor": "SW50ZXJhY3Rpb246OWUyNmQyYTg="        }      ],      "totalCount": 1284    }  }}
401Unauthenticated, missing or invalid API key.
429Rate limit exceeded. Retry after the `Retry-After` header value.

Restituisce una vista delle interazioni tra le sedi dell'account. Supporta la stessa paginazione basata su cursore (first, last, after, before) e gli stessi filtri dell'endpoint per singola sede Elenca le interazioni. La connection si trova in data.rollupInteractions e ogni node contiene un locationId, così puoi attribuire un'interazione al relativo punto vendita.

totalCount è il numero di interazioni che corrispondono ai tuoi filtri in tutte le sedi incluse nell'ambito, non il numero restituito in questa pagina. Se ometti first vengono restituiti 20 record, quindi una singola chiamata non restituisce mai l'intera cronologia dell'account: scorri le pagine con after finché non hai ottenuto totalCount record.

Attenzione: l'aggregazione comprende sempre l'intero account

Questo endpoint non ha un parametro per singola sede: con il valore predefinito di tag=all aggrega tutte le sedi visibili alla chiave API, e l'unico ambito più ristretto è un tag di sedi. Non esiste alcun argomento locationFilters o locationIds e, se ne invii uno, viene ignorato anziché rifiutato. Restringi l'insieme dei risultati con i filtri disponibili (siteUrls, responseStatus, sortOrder, startDate/endDate, searchString), oppure raggruppa tu i risultati in base al valore di locationId di ciascun nodo.

Caso d'uso: una coda di elementi "in attesa di risposta" per l'intero account

Per elencare tutte le recensioni ancora in attesa di una risposta del proprietario in tutte le sedi, chiama GET /rollup_interactions?responseStatus=["PENDING"]&sortOrder=["NEWEST_FIRST"]&first=50, quindi scorri le pagine con after = pageInfo.endCursor (equivalente al valore di cursor dell'ultimo edge), fermandoti quando hasNextPage è false o una pagina restituisce un array edges vuoto. In questo modo eviti di procedere sede per sede. Poiché l'endpoint prevede la paginazione e limiti alla frequenza delle richieste, rispetta l'header Retry-After quando ricevi un 429 e, per le sincronizzazioni pianificate, preferisci esecuzioni limitate a un intervallo di date (startDate/endDate).

Request
curl -X GET 'https://listingsapi.com/api/v4/rollup_interactions' \  -H "Authorization: API $LISTINGSAPI_KEY"