API Behavioral Differences: Agrippa vs Concierge

This guide explains the key differences in how the API behaves when using Agrippa versus Concierge routing keys.

Data Visibility

Hidden Custom Dimension Values (CDV)

FeatureAgrippaConcierge
Hidden CDVsHidden CDVs appear in API responsesHidden CDVs are excluded from API responses
Value LabelsValue labels are shown for internal visibility passkeysValue labels are shown only for external visibility passkeys

Response Formatting

CDV, Badge, and Response Structure

FeatureAgrippaConcierge
CDV from ContributorsAutomatically includes CDV values (like verifiedPurchaser) from the Contributor/Author object directly into the main Review objectDoes not automatically include CDVs from contributor/author. The CDV must exist in the main Review object itself
ClientResponses ObjectIf a field is unavailable, its value is set to nullIf a field is unavailable, it is completely removed from the response object
Empty Review TitleReturns null for empty review titlesReturns an empty string ("") for empty review titles
Empty API ParametersAccepts empty parameters in API callsThrows an error when empty parameters are passed. Returns no results ⚠️

⚠️

Important: The empty parameter handling difference may break existing implementations that pass empty parameters.

Example: Empty API Parameters

Agrippa Request:

https://stg.api.bazaarvoice.com/data/reviews.json?apiversion=5.4&passkey=kuy3zj9pr3n7i0wxajrzj04xo&Filter=ProductId:1000001&Include=Products&filter=&filter=

Agrippa Response:
Returns a successful response with results:

{
  "Locale": "en_US",
  "Errors": [],
  "Results": [
    {
      "UserNickname": "hju78",
      "Rating": 3,
      "ReviewText": "TESTING>>>>>TESTING>>>>>TESTING...",
      "ProductId": "1000001",
      "Title": "TESTING>>>>>TESTING>>>>>TESTING",
      "ModerationStatus": "APPROVED",
      "IsRecommended": true,
      "Id": "192613"
    }
  ],
  "TotalResults": 150,
  "Limit": 1,
  "HasErrors": false,
  "Offset": 0
}

Concierge Request:

https://stg.api.bazaarvoice.com/data/reviews.json?apiversion=5.4&filter=ProductId%3Adata-gen-moppq9ekthfzbc6qff3bqokie&Offset=&Limit=&Sort=&stats=reviews&include=products&filter=&filter=&passkey=caB45h2jBqXFw1OE043qoMBD1gJC8EwFNCjktzgwncXY4

Concierge Response:
Returns errors and no results:

{
  "Limit": 0,
  "Offset": 0,
  "TotalResults": 0,
  "Locale": "en_US",
  "Results": [],
  "Includes": {},
  "HasErrors": true,
  "Errors": [
    {
      "Message": "Illegal empty filter string.",
      "Code": "ERROR_PARAM_INVALID_FILTER_ATTRIBUTE"
    },
    {
      "Message": "Illegal empty sort string: ",
      "Code": "ERROR_PARAM_INVALID_SORT_ATTRIBUTE"
    },
    {
      "Message": "Illegal empty limit string: ",
      "Code": "ERROR_PARAM_INVALID_LIMIT"
    },
    {
      "Message": "Illegal empty offset string: ",
      "Code": "ERROR_PARAM_INVALID_OFFSET"
    }
  ]
}

Review Statistics CDV Count

Key Difference in Statistics Calculation

Context:
Only CDVs that are configured and enabled in Configuration are included in statistics. Concierge uses CDV IDs for stats calculation and is case-sensitive.

Example:
If the configuration is set for lowercase 'under18', but the actual value is CamelCase 'Under18', then:

  • Concierge: The value will NOT be counted in review statistics
  • Agrippa: The value WILL be counted in review statistics

Example Responses

Agrippa Response

"Age": {
  "Label": "Age:",
  "Values": [
    {
      "Value": "under18",
      "Count": 1
    },
    {
      "Value": "18to24",
      "Count": 1
    },
    {
      "Value": "25to29",
      "Count": 50
    },
    {
      "Value": "30to39",
      "Count": 3
    },
    {
      "Value": "40to49",
      "Count": 4
    },
    {
      "Value": "50to60",
      "Count": 4
    },
    {
      "Value": "over60",
      "Count": 132
    }
  ]
}

Note: Includes "under18" with a count of 1.

Concierge Response

"Age": {
  "Id": "Age",
  "Values": [
    {
      "Count": 1,
      "Value": "18to24",
      "ValueLabel": "18-24"
    },
    {
      "Count": 50,
      "Value": "25to29",
      "ValueLabel": "25-29"
    },
    {
      "Count": 3,
      "Value": "30to39",
      "ValueLabel": "30-39"
    },
    {
      "Count": 4,
      "Value": "40to49",
      "ValueLabel": "40-49"
    },
    {
      "Count": 4,
      "Value": "50to60",
      "ValueLabel": "50-60"
    },
    {
      "Count": 10,
      "Value": "over60",
      "ValueLabel": "Over 60"
    }
  ]
}

Note: The "under18" value is missing due to case-sensitivity mismatch.


Email Address Access

The encryption mechanism for emails varies between the Concierge and Agrippa.