Endpoints

Sync Endpoints

API endpoints for syncing data with Google Business Profile

Get Sync Comparison

Get 3-way comparison of source, Google, and last sync.

GET /api/v1/sync/comparison/{locationId}
Authorization: Bearer <token>

Response

{
  "status": "ok",
  "data": {
    "source": {
      "title": "My Business",
      "phoneNumbers": {...}
    },
    "google": {
      "title": "My Business",
      "phoneNumbers": {...}
    },
    "lastSync": {
      "title": "My Business",
      "phoneNumbers": {...}
    },
    "differences": [
      {
        "field": "phoneNumbers.primaryPhone",
        "source": "+1 555-NEW",
        "google": "+1 555-OLD"
      }
    ]
  }
}

Sync Location

Sync data to Google Business Profile.

POST /api/v1/sync/{locationId}
Authorization: Bearer <token>
Content-Type: application/json
X-Idempotency-Key: <unique-key>

Request

{
  "title": "My Business Name",
  "storefrontAddress": {
    "addressLines": ["123 Main St"],
    "locality": "San Francisco",
    "administrativeArea": "CA",
    "postalCode": "94102"
  },
  "phoneNumbers": {
    "primaryPhone": "+1 555-123-4567"
  }
}

Response

{
  "status": "ok",
  "data": {
    "syncId": "sync_abc123",
    "status": "success",
    "fieldsUpdated": ["title", "phoneNumbers.primaryPhone"],
    "fieldsFiltered": ["attributes.wifi"],
    "timestamp": "2024-12-17T10:30:00Z"
  }
}

Get Sync History

Get sync operation history for a location.

GET /api/v1/sync/history/{locationId}
Authorization: Bearer <token>

Query Parameters

ParameterTypeDescription
pagenumberPage number
limitnumberItems per page

Response

{
  "status": "ok",
  "data": {
    "history": [
      {
        "syncId": "sync_abc123",
        "timestamp": "2024-12-17T10:30:00Z",
        "status": "success",
        "fieldsUpdated": 3,
        "direction": "push"
      }
    ]
  }
}

On this page