Deprecated

Deprecation of MIG Key Identification Fields

Interactions API

As part of our migration away from manually provisioned MIG Keys, several legacy fields previously used to identify MIG Keys by Data Sources and Data Destinations are being fully deprecated. These fields are no longer required for key creation and will no longer appear in Interactions API responses:

  • sourceKeyId
  • isSandbox
  • vendor
  • organizationName
  • committeeName
  • state

To support a more secure and consistent model, we now expose a publicKeyId, which uniquely identifies a MIG Key without exposing its secret value. All API responses that previously relied on the deprecated fields now reference structured objects containing the Movement App and Workspace metadata associated with the key.

Updated API Behavior

Breaking Change: auth/me Response Payload

The auth/me endpoint no longer returns organizationName, committeeName, or state details as top-level string fields. These values are now derived from the Workspace associated with the MIG Key.

Before

{
  "source": "Super Cool Tool",
  "organizationName": "Upstream Org For America",
  "committeeName": "Poppy for Governor",
  "state": "MA",
  "destinations": [
    {
      "id": 99,
      "name": "My Data Warehouse"
    }
  ],
  "isSandbox": true
}

After

{
  "publicKeyId": 3434,
  "source": {
    "movementAppId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "name": "Super Cool Tool"
  },
  "workspace": {
    "workspaceId": 123,
    "displayName": "Poppy for Governor",
    "type": "Organization"
  },
  "expireDate": "2025-12-10T19:45:57.599Z",
  "destinations": [
    {
      "id": 99,
      "name": "My Data Warehouse"
    }
  ]
}

What Changed & Why

  • publicKeyId replaces the legacy mutable string identifiers. MIG Keys now have a stable, non-secret numeric identifier you can safely store, log, and communicate.
  • source is now a structured object representing the Movement App associated with the key.
  • workspace was introduced as a structured object to replace the separate text fields for organizationName, committeeName, and state.
  • isSandbox has been removed; sandbox keys are no longer separately modeled in the Interactions API. All MIG Keys for non-production Movement Apps are considered sandbox.

Breaking Change: Pub/Sub Message Payload

The Interactions Pub/Sub message format has been updated to remove legacy vendor, organizationName, and committeeName identifiers. Instead, messages now use the same Public Key ID, Movement App information, and Workspace metadata as the auth/me endpoint.

Before

{
  "source": {
    "vendorKeyId": "32",
    "vendor": "Voter Tool XYZ",
    "organizationName": "Upstream Org for America",
    "committeeName": "Poppy for Governor",
    "state": "MA"
  },
  ...
}

After

{
  "source": {
    "publicKeyId": "32",
    "name": "Voter Tool XYZ",
    "workspace": {
      "workspaceId": 12345,
      "displayName": "Poppy for Governor",
      "type": "Organization"
    }
  },
  ...
}

What Changed & Why

  • publicKeyId replaces vendorKeyId. This ensures consistent identification of MIG Keys across all Interactions API surfaces and the Console.
  • The name of the Movement App information appears as source.name, replacing the legacy vendor field.
  • Workspace metadata replaces organizationName, committeeName, and state text fields. This ensures an accurate, normalized representation of the entity the app is authorized to act on behalf of.