Differences between APIs

Supply and Feasibility - what's different?

Quota structure

The quota structure sent to a supplier feasibility request and the quotas exposed by the Supplier API are very similar.

Both JSON representations are lists of quotas objects, where each object has a quota Id & a list of "questions" objects that contains the question id, an "operator" field containing either an OR or AND to connect the list of answers, and each answer has an "id" field with possible rangeStart/rangeEnd for numeric range questions (like age below). All ids for questions & answers between the two APIs have the same meaning. In the both examples below the question id 13923 represents the same gender question for en-us.

The Supplier API quota definitions has fields like "remainingExclusive", "remainingShared", "actualClientAbandonRate" and other fields related field monitoring that don't make sense for the feasibility request (which is made before fielding). The supplier API quota definition is a flat list of quotas containing a field named "tableName" and "tableId" that can be used to group the gender cells & age cells to their respective table. The "quotaType" field will be "hard" to signal a normal hard quota looking for completes.

The feasibility API quota structure groups related cells in a table in a dedicated table object in the "QuotaTable" list. The table object has the table name, but not a table id. Apart from the flat list vs table nesting structure, the feasibility quota objects are mostly subset of the supplier API quota objects. Instead of a "qoutaType" field like the supplier API structure, the feasibility API quotas will send "interviewType" instead, which is currently always "completes" to signal a normal hard quota looking for completes.

Below you can see the detailed differences of how the Supplier API and Feasibility API integration represent two quota tables, one by age and and the other by gender:

697

An example of the "quotas" object you'd get from the Supplier API http://api.sample.ipsos.com/supplier/v1/subsamples/{Subssample Id}/quotas is:

[
  {
    "subsampleStatus": "Pending",
    "actualClientIncidenceRate": 0,
    "actualClientConversionRate": 0,
    "actualClientAbandonRate": 0,
    "estimatedIncidence": 75,
    "questions": [
      {
        "answers": [
          {
            "id": 118914
          }
        ],
        "id": 13923,
        "operator": "OR",
        "locale": null
      }
    ],
    "remainingExclusive": 2,
    "remainingShared": 6,
    "actualClientLOI": 0,
    "estimatedLOI": 8,
    "achievedInterviews": 0,
    "tableId": 179049,
    "tableName": "Gender S1 - NA",
    "quotaId": 1125005,
    "quotaName": "Gender S1 - NA male-E1",
    "quotaType": "hard"
  },
  {
    "subsampleStatus": "Pending",
    "actualClientIncidenceRate": 0,
    "actualClientConversionRate": 0,
    "actualClientAbandonRate": 0,
    "estimatedIncidence": 75,
    "questions": [
      {
        "answers": [
          {
            "id": 118915
          }
        ],
        "id": 13923,
        "operator": "OR",
        "locale": null
      }
    ],
    "remainingExclusive": 1,
    "remainingShared": 4,
    "actualClientLOI": 0,
    "estimatedLOI": 8,
    "achievedInterviews": 0,
    "tableId": 179049,
    "tableName": "Gender S1 - NA",
    "quotaId": 1125006,
    "quotaName": "Gender S1 - NA female-E1",
    "quotaType": "hard"
  },
  {
    "subsampleStatus": "Pending",
    "actualClientIncidenceRate": 0,
    "actualClientConversionRate": 0,
    "actualClientAbandonRate": 0,
    "estimatedIncidence": 75,
    "questions": [
      {
        "answers": [
          {
            "rangeStart": "18",
            "rangeEnd": "34"
          }
        ],
        "id": -1,
        "operator": "OR",
        "locale": null
      }
    ],
    "remainingExclusive": 1,
    "remainingShared": 5,
    "actualClientLOI": 0,
    "estimatedLOI": 8,
    "achievedInterviews": 0,
    "tableId": 179050,
    "tableName": "agerange",
    "quotaId": 1125007,
    "quotaName": "agerange _1-E1",
    "quotaType": "hard"
  },
  {
    "subsampleStatus": "Pending",
    "actualClientIncidenceRate": 0,
    "actualClientConversionRate": 0,
    "actualClientAbandonRate": 0,
    "estimatedIncidence": 75,
    "questions": [
      {
        "answers": [
          {
            "rangeStart": "35",
            "rangeEnd": "45"
          }
        ],
        "id": -1,
        "operator": "OR",
        "locale": null
      }
    ],
    "remainingExclusive": 1,
    "remainingShared": 5,
    "actualClientLOI": 0,
    "estimatedLOI": 8,
    "achievedInterviews": 0,
    "tableId": 179050,
    "tableName": "agerange",
    "quotaId": 1125008,
    "quotaName": "agerange _2-E1",
    "quotaType": "hard"
  },
  {
    "subsampleStatus": "Pending",
    "actualClientIncidenceRate": 0,
    "actualClientConversionRate": 0,
    "actualClientAbandonRate": 0,
    "estimatedIncidence": 75,
    "questions": [],
    "remainingExclusive": 2,
    "remainingShared": 10,
    "actualClientLOI": 0,
    "estimatedLOI": 8,
    "achievedInterviews": 0,
    "tableId": -1,
    "tableName": "Total Quota",
    "quotaId": 1125009,
    "quotaName": "quotaTotal",
    "quotaType": "counting"
  },
  {
    "subsampleStatus": "Pending",
    "actualClientIncidenceRate": 0,
    "actualClientConversionRate": 0,
    "actualClientAbandonRate": 0,
    "estimatedIncidence": 0,
    "questions": [
      {
        "answers": [],
        "id": 0,
        "operator": "OR",
        "locale": null
      }
    ],
    "remainingExclusive": 2,
    "remainingShared": 10,
    "actualClientLOI": 0,
    "estimatedLOI": 8,
    "achievedInterviews": 0,
    "tableId": -1,
    "tableName": "",
    "quotaId": 1125010,
    "quotaName": "Quota_Cell01",
    "quotaType": "hard"
  }
]
"quotaTables": [{
				"tableName": "Gender S1 - NA",
				"quotas": [{
					"completes": {
						
					},
					"percentage": 60,
					"interviewType": "completes",
					"questions": [{
						"id": 13923,
						"operator": "OR",
						"answers": [{
							"id": 118914,
							"rangeEnd": null,
							"rangeStart": null
						}]
					}],
					"quotaName": "Gender S1 - NA male-E1"
				},
				{
					"completes": {
						
					},
					"percentage": 40,
					"interviewType": "completes",
					"questions": [{
						"id": 13923,
						"operator": "OR",
						"answers": [{
							"id": 118915,
							"rangeEnd": null,
							"rangeStart": null
						}]
					}],
					"quotaName": "Gender S1 - NA female-E1"
				}]
			},
			{
				"tableName": "agerange",
				"quotas": [{
					"completes": {
						
					},
					"percentage": 50,
					"interviewType": "completes",
					"questions": [{
						"id": -1,
						"operator": "OR",
						"answers": [{
							"id": -1,
							"rangeEnd": "34",
							"rangeStart": "18"
						}]
					}],
					"quotaName": "agerange _1-E1"
				},
				{
					"completes": {
						
					},
					"percentage": 50,
					"interviewType": "completes",
					"questions": [{
						"id": -1,
						"operator": "OR",
						"answers": [{
							"id": -1,
							"rangeEnd": "45",
							"rangeStart": "35"
						}]
					}],
					"quotaName": "agerange _2-E1"
				}]
			}],
}]