{"openapi":"3.1.0","info":{"title":"General Research Full Service Brokerage API","version":"1.2.0"},"servers":[{"url":"https://fsb.generalresearch.com/","description":"Production environment"}],"paths":{"/{product_id}/offerwall/5fl8bpv5/":{"get":{"tags":["Offerwall"],"summary":"Single Offerwall","description":"Only returns a single bucket with the top scoring tasks.","operationId":"Single_Offerwall__product_id__offerwall_5fl8bpv5__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"min_bin_size","in":"query","required":false,"schema":{"type":"integer","description":"Minimum number of tasks that need to be in a bucket","default":3,"title":"Min Bin Size"},"description":"Minimum number of tasks that need to be in a bucket"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleEntryOfferWallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/45b7228a7/":{"get":{"tags":["Offerwall"],"summary":"Topn Offerwall","description":"Returns an offerwall with buckets that are clustered by the `split_by` argument\nusing KMeans clustering.","operationId":"TopN_Offerwall__product_id__offerwall_45b7228a7__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"n_bins","in":"query","required":false,"schema":{"type":"integer","description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split.","default":1,"title":"N Bins"},"description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split."},{"name":"min_bin_size","in":"query","required":false,"schema":{"type":"integer","description":"Minimum number of tasks that need to be in a bucket","default":3,"title":"Min Bin Size"},"description":"Minimum number of tasks that need to be in a bucket"},{"name":"split_by","in":"query","required":false,"schema":{"enum":["payout","duration"],"type":"string","description":"Cluster tasks by payout or duration","default":"payout","title":"Split By"},"description":"Cluster tasks by payout or duration"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopNOfferWallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/b59a2d2b/":{"get":{"tags":["Offerwall"],"summary":"Starwall Offerwall","description":"Returns an offerwall with buckets that are clustered by setting as seeds the\nhighest scoring surveys for each bin, then the rest are distributed\naccording to their Euclidean distance using the bucket's features.","operationId":"Starwall_Offerwall__product_id__offerwall_b59a2d2b__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"n_bins","in":"query","required":false,"schema":{"type":"integer","description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split.","default":1,"title":"N Bins"},"description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split."},{"name":"min_bin_size","in":"query","required":false,"schema":{"type":"integer","description":"Minimum number of tasks that need to be in a bucket","default":3,"title":"Min Bin Size"},"description":"Minimum number of tasks that need to be in a bucket"},{"name":"split_by","in":"query","required":false,"schema":{"enum":["payout","duration"],"type":"string","description":"Cluster tasks by payout or duration","default":"payout","title":"Split By"},"description":"Cluster tasks by payout or duration"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StarwallOfferWallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/b145b803/":{"get":{"tags":["Offerwall"],"summary":"Topn Plus Offerwall","description":"Same as the TopNOfferWall, but the buckets include contents.","operationId":"TopN_Plus_Offerwall__product_id__offerwall_b145b803__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"n_bins","in":"query","required":false,"schema":{"type":"integer","description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split.","default":3,"title":"N Bins"},"description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split."},{"name":"min_bin_size","in":"query","required":false,"schema":{"type":"integer","description":"Minimum number of tasks that need to be in a bucket","default":3,"title":"Min Bin Size"},"description":"Minimum number of tasks that need to be in a bucket"},{"name":"split_by","in":"query","required":false,"schema":{"enum":["payout","duration"],"type":"string","description":"Cluster tasks by payout or duration","default":"payout","title":"Split By"},"description":"Cluster tasks by payout or duration"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopNPlusOfferWallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/d48cce47/":{"get":{"tags":["Offerwall"],"summary":"Topn Plus Block Offerwall","description":"Same as the TopNOfferWall, but the buckets include contents and no\nbuckets are returned if the user is blocked.","operationId":"TopN_Plus_Block_Offerwall__product_id__offerwall_d48cce47__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"n_bins","in":"query","required":false,"schema":{"type":"integer","description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split.","default":3,"title":"N Bins"},"description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split."},{"name":"min_bin_size","in":"query","required":false,"schema":{"type":"integer","description":"Minimum number of tasks that need to be in a bucket","default":3,"title":"Min Bin Size"},"description":"Minimum number of tasks that need to be in a bucket"},{"name":"split_by","in":"query","required":false,"schema":{"enum":["payout","duration"],"type":"string","description":"Cluster tasks by payout or duration","default":"payout","title":"Split By"},"description":"Cluster tasks by payout or duration"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopNPlusBlockOfferWallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/1e5f0af8/":{"get":{"tags":["Offerwall"],"summary":"Topn Plus Block Recontact Offerwall","description":"Same as the TopNOfferWall, but the buckets include contents, no buckets\nare returned if the user is blocked, and each bucket includes a\n`is_recontact` key.","operationId":"TopN_Plus_Block_Recontact_Offerwall__product_id__offerwall_1e5f0af8__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"n_bins","in":"query","required":false,"schema":{"type":"integer","description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split.","default":3,"title":"N Bins"},"description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split."},{"name":"min_bin_size","in":"query","required":false,"schema":{"type":"integer","description":"Minimum number of tasks that need to be in a bucket","default":3,"title":"Min Bin Size"},"description":"Minimum number of tasks that need to be in a bucket"},{"name":"split_by","in":"query","required":false,"schema":{"enum":["payout","duration"],"type":"string","description":"Cluster tasks by payout or duration","default":"payout","title":"Split By"},"description":"Cluster tasks by payout or duration"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopNPlusBlockRecontactOfferWallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/5481f322/":{"get":{"tags":["Offerwall"],"summary":"Starwall Plus Offerwall","description":"Same as the StarwallOfferWall, but the buckets include contents.","operationId":"Starwall_Plus_Offerwall__product_id__offerwall_5481f322__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"n_bins","in":"query","required":false,"schema":{"type":"integer","description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split.","default":3,"title":"N Bins"},"description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split."},{"name":"min_bin_size","in":"query","required":false,"schema":{"type":"integer","description":"Minimum number of tasks that need to be in a bucket","default":3,"title":"Min Bin Size"},"description":"Minimum number of tasks that need to be in a bucket"},{"name":"split_by","in":"query","required":false,"schema":{"enum":["payout","duration"],"type":"string","description":"Cluster tasks by payout or duration","default":"payout","title":"Split By"},"description":"Cluster tasks by payout or duration"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StarwallPlusOfferWallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/7fa1b3f4/":{"get":{"tags":["Offerwall"],"summary":"Starwall Plus Block Offerwall","description":"Same as the StarwallOfferWall, but the buckets include contents and no\nbuckets are returned if the user is blocked.","operationId":"Starwall_Plus_Block_Offerwall__product_id__offerwall_7fa1b3f4__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"n_bins","in":"query","required":false,"schema":{"type":"integer","description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split.","default":3,"title":"N Bins"},"description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split."},{"name":"min_bin_size","in":"query","required":false,"schema":{"type":"integer","description":"Minimum number of tasks that need to be in a bucket","default":3,"title":"Min Bin Size"},"description":"Minimum number of tasks that need to be in a bucket"},{"name":"split_by","in":"query","required":false,"schema":{"enum":["payout","duration"],"type":"string","description":"Cluster tasks by payout or duration","default":"payout","title":"Split By"},"description":"Cluster tasks by payout or duration"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StarwallPlusBlockOfferWallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/630db2a4/":{"get":{"tags":["Offerwall"],"summary":"Starwall Plus Block Recontact Offerwall","description":"Same as the StarwallOfferWall, but the buckets include contents, no buckets\nare returned if the user is blocked, and each bucket includes a\n`is_recontact` key.","operationId":"Starwall_Plus_Block_Recontact_Offerwall__product_id__offerwall_630db2a4__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"n_bins","in":"query","required":false,"schema":{"type":"integer","description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split.","default":3,"title":"N Bins"},"description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split."},{"name":"min_bin_size","in":"query","required":false,"schema":{"type":"integer","description":"Minimum number of tasks that need to be in a bucket","default":3,"title":"Min Bin Size"},"description":"Minimum number of tasks that need to be in a bucket"},{"name":"split_by","in":"query","required":false,"schema":{"enum":["payout","duration"],"type":"string","description":"Cluster tasks by payout or duration","default":"payout","title":"Split By"},"description":"Cluster tasks by payout or duration"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StarwallPlusBlockRecontactOfferWallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/5fa23085/":{"get":{"tags":["Offerwall"],"summary":"Marketplace Offerwall","description":"Returns buckets grouped by marketplace, one per marketplace, with the\ntasks ordered by quality.","operationId":"Marketplace_Offerwall__product_id__offerwall_5fa23085__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"min_bin_size","in":"query","required":false,"schema":{"type":"integer","description":"Minimum number of tasks that need to be in a bucket","default":3,"title":"Min Bin Size"},"description":"Minimum number of tasks that need to be in a bucket"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketplaceOfferwallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/6f27b1ae/":{"get":{"tags":["Offerwall"],"summary":"One Shot Offerwall","description":"Each bucket has only 1 single task, and only basic info is returned\n about each bucket.","operationId":"One_Shot_Offerwall__product_id__offerwall_6f27b1ae__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"n_bins","in":"query","required":false,"schema":{"type":"integer","description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split.","default":8,"title":"N Bins"},"description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split."},{"name":"sources","in":"query","required":false,"schema":{"type":"array","uniqueItems":true,"items":{"$ref":"#/components/schemas/Source"},"description":"Restrict tasks to those from these marketplaces only.","title":"Sources"},"description":"Restrict tasks to those from these marketplaces only."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OneShotOfferwallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/55a4e1a9/":{"get":{"tags":["Offerwall"],"summary":"Wxet Offerwall","description":"Each bucket has only 1 single task, and only basic info is returned\n about each bucket.","operationId":"WXET_Offerwall__product_id__offerwall_55a4e1a9__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"n_bins","in":"query","required":false,"schema":{"type":"integer","description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split.","default":8,"title":"N Bins"},"description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WXETOfferwallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/37d1da64/":{"get":{"tags":["Offerwall"],"summary":"Offerwall Softpair","description":"This offerwall contains tasks for which the user has a conditional\neligibility. The questions that a user must answer to determine the\neligibility are included within each bucket. Additionally, the question\ndefinitions are included for convenience.","operationId":"offerwall_softpair__product_id__offerwall_37d1da64__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"n_bins","in":"query","required":false,"schema":{"type":"integer","description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split.","default":12,"title":"N Bins"},"description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split."},{"name":"min_bin_size","in":"query","required":false,"schema":{"type":"integer","description":"Minimum number of tasks that need to be in a bucket","default":1,"title":"Min Bin Size"},"description":"Minimum number of tasks that need to be in a bucket"},{"name":"max_options","in":"query","required":false,"schema":{"type":"integer","description":"Max number of options an allowed question can have (allowed to be asked)","default":40,"title":"Max Options"},"description":"Max number of options an allowed question can have (allowed to be asked)"},{"name":"max_questions","in":"query","required":false,"schema":{"type":"integer","description":"Max number of missing questions on a single bin","default":3,"title":"Max Questions"},"description":"Max number of missing questions on a single bin"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoftPairOfferwallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/37d1da64/{offerwall_id}/":{"post":{"tags":["Offerwall"],"summary":"Offerwall Softpair Post","description":"This is a custom endpoint for a softpair-style offerwall that allows\nyou to update profiling answers and then immediately get back the\nupdated offerwall","operationId":"offerwall_softpair_post__product_id__offerwall_37d1da64__offerwall_id___post","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"offerwall_id","in":"path","required":true,"schema":{"type":"string","description":"The offerwall ID the user is interacting with","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"],"title":"Offerwall Id"},"description":"The offerwall ID the user is interacting with"},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A session id (uuid4.hex)","examples":["dd6aa32cfe834839a80195563f528337"],"title":"Session Id"},"description":"A session id (uuid4.hex)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_offerwall_softpair_post__product_id__offerwall_37d1da64__offerwall_id___post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoftPairOfferwallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/7a89dcdb/":{"get":{"tags":["Offerwall"],"summary":"Offerwall Softpair Block","description":"This offerwall contains tasks for which the user has a conditional\neligibility. The questions that a user must answer to determine the\neligibility are included within each bucket. Additionally, the question\ndefinitions are included for convenience.\nNo buckets are returned if the user is blocked.","operationId":"offerwall_softpair_block__product_id__offerwall_7a89dcdb__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"languages","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)","title":"Languages"},"description":"Respondent's desired languages (ISO 639-2/B, lowercase)"},{"name":"behavior","in":"query","required":false,"schema":{"type":"string","maxLength":12,"description":"Allows using custom scoring functions. Please discuss directly with GRL.","title":"Behavior"},"description":"Allows using custom scoring functions. Please discuss directly with GRL."},{"name":"min_payout","in":"query","required":false,"schema":{"type":"string","description":"Decimal representation of the minimum amount of USD that any of the tasks will pay","examples":["1.23"],"title":"Min Payout"},"description":"Decimal representation of the minimum amount of USD that any of the tasks will pay"},{"name":"duration","in":"query","required":false,"schema":{"type":"integer","description":"Maximum length of desired task (in seconds).","title":"Duration"},"description":"Maximum length of desired task (in seconds)."},{"name":"n_bins","in":"query","required":false,"schema":{"type":"integer","description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split.","default":12,"title":"N Bins"},"description":"Number of bins requested in the offerwall. If n_bins=1 there is no grouping and you get all \n duration + payout metrics on across all (as shown by the availability_count).\n n_bins=0 will return back an empty bucket array, however, the availability_count will still show \n the total opportunities available for that bpuid + passed in parameter settings.\n n_bins=∞ (or any positive integer) will return back the total number of bins capable of being uniquely split."},{"name":"min_bin_size","in":"query","required":false,"schema":{"type":"integer","description":"Minimum number of tasks that need to be in a bucket","default":1,"title":"Min Bin Size"},"description":"Minimum number of tasks that need to be in a bucket"},{"name":"max_options","in":"query","required":false,"schema":{"type":"integer","description":"Max number of options an allowed question can have (allowed to be asked)","default":40,"title":"Max Options"},"description":"Max number of options an allowed question can have (allowed to be asked)"},{"name":"max_questions","in":"query","required":false,"schema":{"type":"integer","description":"Max number of missing questions on a single bin","default":3,"title":"Max Questions"},"description":"Max number of missing questions on a single bin"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoftPairOfferwallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/offerwall/7a89dcdb/{offerwall_id}/":{"post":{"tags":["Offerwall"],"summary":"Offerwall Softpair Block Post","description":"This is a custom endpoint for a softpair-style offerwall that allows\nyou to update profiling answers and then immediately get back the\nupdated offerwall","operationId":"offerwall_softpair_block_post__product_id__offerwall_7a89dcdb__offerwall_id___post","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"offerwall_id","in":"path","required":true,"schema":{"type":"string","description":"The offerwall ID the user is interacting with","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"],"title":"Offerwall Id"},"description":"The offerwall ID the user is interacting with"},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A session id (uuid4.hex)","examples":["dd6aa32cfe834839a80195563f528337"],"title":"Session Id"},"description":"A session id (uuid4.hex)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_offerwall_softpair_block_post__product_id__offerwall_7a89dcdb__offerwall_id___post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoftPairOfferwallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/status/{tsid}/":{"get":{"tags":["Status"],"summary":"Get Task Status","description":"Retrieve the status of a session by a specific Task Status ID (`tsid`)\nthat is provided in the redirect.\n\nGiven a `tsid`, get back the status of the wall event. This endpoint\nconflates the idea of a wall event and a session, but for these\npurposes, the status and payout of the last wall event in a session\nequals the status and payout for the session.","operationId":"Get_Task_Status__product_id__status__tsid___get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"tsid","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Task Status ID","description":"A unique identifier for the session","examples":["a3848e0a53d64f68a74ced5f61b6eb68"]},"description":"A unique identifier for the session"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatusResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusInfoResponseFail"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusInfoResponseFail"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusInfoResponseFail"}}},"description":"Internal Server Error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/status/":{"get":{"tags":["Status"],"summary":"List Task Statuses","operationId":"List_Task_Statuses__product_id__status__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Filters the returned task status to only include those done by this user.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Filters the returned task status to only include those done by this user."},{"name":"started_after","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","format":"date-time"}],"description":"Retrieve sessions which were started after this timestamp. If `NULL`, default is 10 days ago.","examples":["2026-02-17T00:46:04.812196Z",1771202765],"title":"Started After"},"description":"Retrieve sessions which were started after this timestamp. If `NULL`, default is 10 days ago."},{"name":"started_before","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","format":"date-time"}],"description":"Retrieve sessions which were started before this timestamp. If `NULL`, default is now.","title":"Started Before"},"description":"Retrieve sessions which were started before this timestamp. If `NULL`, default is now."},{"name":"status","in":"query","required":false,"schema":{"type":"integer","description":"Filter for sessions with this status. See Task Status for description of status.","examples":[3],"title":"Status"},"description":"Filter for sessions with this status. See Task Status for description of status."},{"name":"reconciled","in":"query","required":false,"schema":{"type":"boolean","description":"Only retrieve sessions that have been adjusted. If `reconciled` is True, `adjusted_after` is required.","default":false,"title":"Reconciled"},"description":"Only retrieve sessions that have been adjusted. If `reconciled` is True, `adjusted_after` is required."},{"name":"adjusted_after","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","format":"date-time"}],"description":"Retrieve sessions which were adjusted after this timestamp.","title":"Adjusted After"},"description":"Retrieve sessions which were adjusted after this timestamp."},{"name":"adjusted_before","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","format":"date-time"}],"description":"Retrieve sessions which were adjusted before this timestamp. Default is now.","title":"Adjusted Before"},"description":"Retrieve sessions which were adjusted before this timestamp. Default is now."},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated fields to order by","examples":["-started","started"],"default":"-started","title":"Order By"},"description":"Comma-separated fields to order by"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TasksStatusResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponseFailure"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponseFailure"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponseFailure"}}},"description":"Internal Server Error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/report/":{"post":{"tags":["Report"],"summary":"Report Task","description":"Send a \"Task Report\" for a respondent's latest started survey,\nregardless of the survey's outcome. Task Reports cannot be provided for\ntask attempts by tsid, or through any other method, they must be given\nimmediately after the respondent's task attempt.\n\nIf a latest attempt can't be found, a ReportTaskResponse is still returned.\n\nIf multiple reasons want to be provided, they should be done at the\nsame time. If multiple reports are given for the same latest started\ntask, the note attribute will be overwritten, while the new unique\nreasons will be appended to the task attempt.\n\nTask Report system contributions by client applications are immediately\nleveraged to aid yield management strategies. For those reasons, it's\nimportant that the respondent submits a Task Report as soon as possible\nand applications doesn't offload this request for a later time. Task\nReport timestamps are a critical component of understanding a Task\nexperience for a respondent.\n\nFor the BP to tell us about a bad survey they want to report\nThe POSTed data looks like:\n {\n 'bpuid': '1234',\n 'reasons': [2],\n 'notes': \"This survey was the worst!\"\n }\nReturns {'status': 'success', 'msg': error_msg}","operationId":"report_task__product_id__report__post","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportTask"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/profiling-questions/":{"get":{"tags":["Profiling Questions"],"summary":"Get Profiling Questions","description":"Gets a list of profiling questions to ask this user. These questions\nare, as of right now, unanswered. Once a question is answered, it\n(and any other question whose answer is inferred from other answers) is\nremoved from the list. The questions returned are ordered by\nimportance (the key task_score) in descending order.","operationId":"get_profiling_questions__product_id__profiling_questions__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"ip","in":"query","required":false,"schema":{"type":"string","description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided.","title":"Ip"},"description":"Respondent's IP address (IPv4 or IPv6). Either 'ip' must be provided, or 'country_iso' must be provided if 'ip' is not provided."},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"language_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{3}$","description":"Respondent's desired language (ISO 639-2/B, lowercase)","examples":["eng"],"title":"Language Iso"},"description":"Respondent's desired language (ISO 639-2/B, lowercase)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"description":"Number of questions to return. Questions are ordered, so, selects the N most important. If no limit is passed, then the number of questions returned is dynamically calculated by the questions' importance.","title":"Limit"},"description":"Number of questions to return. Questions are ordered, so, selects the N most important. If no limit is passed, then the number of questions returned is dynamically calculated by the questions' importance."},{"name":"is_grs","in":"query","required":false,"schema":{"type":"boolean","description":"If it's the GRS system.","default":false,"title":"Is Grs"},"description":"If it's the GRS system."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpkQuestionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Profiling Questions"],"summary":"Submit Profiling Questions","description":"Send the answers to one or more of these questions for a user. A\nquestion is uniquely specified by the question_id key. The answer is:\nthe choice_id if the question_type is \"MC\" the actual entered text if\nthe question_type is \"TE\"","operationId":"submit_profiling_questions__product_id__profiling_questions__post","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"session_id","in":"query","required":false,"schema":{"type":"string","description":"The unique identifier for a session in which these questions were asked. Must be a valid UUID. Optional.","title":"Session Id"},"description":"The unique identifier for a session in which these questions were asked. Must be a valid UUID. Optional."},{"name":"async","in":"query","required":false,"schema":{"type":"boolean","description":"For internal use.","default":true,"title":"Async"},"description":"For internal use."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_submit_profiling_questions__product_id__profiling_questions__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/profiling-info/":{"get":{"tags":["Profiling Questions"],"summary":"Profiling Info","description":"Get UPK Ontology (list of properties, property info, and allowed values)","operationId":"profiling_info__product_id__profiling_info__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"country_iso","in":"query","required":true,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"language_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{3}$","description":"Respondent's desired language (ISO 639-2/B, lowercase)","examples":["eng"],"title":"Language Iso"},"description":"Respondent's desired language (ISO 639-2/B, lowercase)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfilingInfoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/user-profile/":{"get":{"tags":["Profiling Questions"],"summary":"User Profile","operationId":"user_profile__product_id__user_profile__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"country_iso","in":"query","required":true,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)","examples":["us"],"title":"Country Iso"},"description":"Respondent's country code (ISO 3166-1 alpha-2, lowercase)"},{"name":"language_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{3}$","description":"Respondent's desired language (ISO 639-2/B, lowercase)","examples":["eng"],"title":"Language Iso"},"description":"Respondent's desired language (ISO 639-2/B, lowercase)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInfoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/user/{product_user_id}/profile/":{"get":{"tags":["Product User"],"summary":"User Profile","operationId":"user_profile__product_id__user__product_user_id__profile__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"product_user_id","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Product User"],"summary":"User Profile Update","operationId":"user_profile_update__product_id__user__product_user_id__profile__patch","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"product_user_id","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/user/by-marketplace-pid/":{"get":{"tags":["Product User"],"summary":"User Profile Filter By Marketplace Pid","operationId":"user_profile_filter_by_marketplace_pid__product_id__user_by_marketplace_pid__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"source","in":"query","required":true,"schema":{"$ref":"#/components/schemas/Source","description":"The marketplace to search"},"description":"The marketplace to search"},{"name":"pid","in":"query","required":true,"schema":{"type":"array","items":{"type":"string","minLength":32,"maxLength":32},"description":"The user's marketplace PID. Supports multiple params","title":"Pid"},"description":"The user's marketplace PID. Supports multiple params"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfilesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/leaderboard/timespan/{board_code}/":{"get":{"tags":["Leaderboard"],"summary":"Timespan Leaderboard","operationId":"Timespan_Leaderboard__product_id__leaderboard_timespan__board_code___get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"board_code","in":"path","required":true,"schema":{"$ref":"#/components/schemas/LeaderboardCode","description":"The type of leaderboard. What the \"values\" represent.\n\nAllowed values: \n - __complete_count__ *(COMPLETE_COUNT)*: Number of Completes\n - __largest_user_payout__ *(LARGEST_PAYOUT)*: Largest Single Payout\n - __sum_user_payout__ *(SUM_PAYOUTS)*: (Sum of) Total Payouts"},"description":"The type of leaderboard. What the \"values\" represent.\n\nAllowed values: \n - __complete_count__ *(COMPLETE_COUNT)*: Number of Completes\n - __largest_user_payout__ *(LARGEST_PAYOUT)*: Largest Single Payout\n - __sum_user_payout__ *(SUM_PAYOUTS)*: (Sum of) Total Payouts"},{"name":"freq","in":"query","required":true,"schema":{"$ref":"#/components/schemas/LeaderboardFrequency","description":"The time period range for the leaderboard.\n\nAllowed values: \n - __daily__ *(DAILY)*: UTC midnight to UTC midnight\n - __weekly__ *(WEEKLY)*: Sunday Midnight to Sunday Midnight UTC\n - __monthly__ *(MONTHLY)*: Jan 1 00:00:00"},"description":"The time period range for the leaderboard.\n\nAllowed values: \n - __daily__ *(DAILY)*: UTC midnight to UTC midnight\n - __weekly__ *(WEEKLY)*: Sunday Midnight to Sunday Midnight UTC\n - __monthly__ *(MONTHLY)*: Jan 1 00:00:00"},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Country ISO Code (ISO 3166-1 alpha-2, lowercase) of the requested leaderboard. If not passed, thecountry is determined from the IP address of the HTTP request.","examples":["us"],"title":"Country Iso"},"description":"Country ISO Code (ISO 3166-1 alpha-2, lowercase) of the requested leaderboard. If not passed, thecountry is determined from the IP address of the HTTP request."},{"name":"bpuid","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":128,"description":"Brokerage Product User ID. If passed, this results in the filtering of rows to include this user's row, plus rows above and below in rank (up to `limit` rows). Otherwise, the top `limit` rows are returned.","examples":["app-user-9329ebd"],"title":"Bpuid"},"description":"Brokerage Product User ID. If passed, this results in the filtering of rows to include this user's row, plus rows above and below in rank (up to `limit` rows). Otherwise, the top `limit` rows are returned."},{"name":"within_time","in":"query","required":false,"schema":{"type":"string","format":"date-time","description":"Any local timestamp falling within the desired leaderboard's period. If not passed, uses the country's current time period.","examples":["2024-02-27","2024-02-27T15:30:00"],"title":"Within Time"},"description":"Any local timestamp falling within the desired leaderboard's period. If not passed, uses the country's current time period."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","exclusiveMaximum":5000,"exclusiveMinimum":0,"description":"Max number of rows to return","default":50,"title":"Limit"},"description":"Max number of rows to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/leaderboard/timespan/{board_code}/winners/":{"get":{"tags":["Leaderboard"],"summary":"Leaderboard Winners","description":"Get the Winners of leaderboard contests","operationId":"Leaderboard_Winners__product_id__leaderboard_timespan__board_code__winners__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"board_code","in":"path","required":true,"schema":{"$ref":"#/components/schemas/LeaderboardCode","description":"The type of leaderboard. What the \"values\" represent.\n\nAllowed values: \n - __complete_count__ *(COMPLETE_COUNT)*: Number of Completes\n - __largest_user_payout__ *(LARGEST_PAYOUT)*: Largest Single Payout\n - __sum_user_payout__ *(SUM_PAYOUTS)*: (Sum of) Total Payouts"},"description":"The type of leaderboard. What the \"values\" represent.\n\nAllowed values: \n - __complete_count__ *(COMPLETE_COUNT)*: Number of Completes\n - __largest_user_payout__ *(LARGEST_PAYOUT)*: Largest Single Payout\n - __sum_user_payout__ *(SUM_PAYOUTS)*: (Sum of) Total Payouts"},{"name":"freq","in":"query","required":true,"schema":{"$ref":"#/components/schemas/LeaderboardFrequency","description":"The time period range for the leaderboard.\n\nAllowed values: \n - __daily__ *(DAILY)*: UTC midnight to UTC midnight\n - __weekly__ *(WEEKLY)*: Sunday Midnight to Sunday Midnight UTC\n - __monthly__ *(MONTHLY)*: Jan 1 00:00:00"},"description":"The time period range for the leaderboard.\n\nAllowed values: \n - __daily__ *(DAILY)*: UTC midnight to UTC midnight\n - __weekly__ *(WEEKLY)*: Sunday Midnight to Sunday Midnight UTC\n - __monthly__ *(MONTHLY)*: Jan 1 00:00:00"},{"name":"country_iso","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","description":"Country ISO Code (ISO 3166-1 alpha-2, lowercase) of the requested leaderboard. If not passed, thecountry is determined from the IP address of the HTTP request.","examples":["us"],"title":"Country Iso"},"description":"Country ISO Code (ISO 3166-1 alpha-2, lowercase) of the requested leaderboard. If not passed, thecountry is determined from the IP address of the HTTP request."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardWinnerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/contest/{contest_uuid}/user/{product_user_id}/":{"get":{"tags":["Contest"],"summary":"Get Contest User View","description":"Gets a Contest. Includes several keys that are specific to the requesting user:\n e.g. user_winnings, user_amount.","operationId":"Get_Contest_User_View__product_id__contest__contest_uuid__user__product_user_id___get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"contest_uuid","in":"path","required":true,"schema":{"type":"string","title":"Contest Uuid"}},{"name":"product_user_id","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RaffleUserView"},{"$ref":"#/components/schemas/LeaderboardContestUserView"},{"$ref":"#/components/schemas/MilestoneUserView"}],"title":"Response Get Contest User View Product Id Contest Contest Uuid User Product User Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/contest/user/{product_user_id}/entered/":{"get":{"tags":["Contest"],"summary":"List Contests User Entered","description":"Get contests the requesting user has entered. This includes contests such as milestone\n contests where the user was automatically entered by having a complete for instance.","operationId":"List_Contests_User_Entered__product_id__contest_user__product_user_id__entered__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"product_user_id","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/RaffleUserView"},{"$ref":"#/components/schemas/LeaderboardContestUserView"},{"$ref":"#/components/schemas/MilestoneUserView"}]},"title":"Response List Contests User Entered Product Id Contest User Product User Id Entered Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/contest/user/{product_user_id}/eligible/":{"get":{"tags":["Contest"],"summary":"List Contests User Eligible","description":"Get contests the requesting user is eligible for.\nContest eligibility may involve the user's country, which is determined by the ip address\n of THIS request.","operationId":"List_Contests_User_Eligible__product_id__contest_user__product_user_id__eligible__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"product_user_id","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/RaffleUserView"},{"$ref":"#/components/schemas/LeaderboardContestUserView"},{"$ref":"#/components/schemas/MilestoneUserView"}]},"title":"Response List Contests User Eligible Product Id Contest User Product User Id Eligible Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/contest/user/{product_user_id}/winner/":{"get":{"tags":["Contest"],"summary":"List Contests User Winner","description":"Get contests the requesting user has won a prize for.","operationId":"List_Contests_User_Winner__product_id__contest_user__product_user_id__winner__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"product_user_id","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/RaffleUserView"},{"$ref":"#/components/schemas/LeaderboardContestUserView"},{"$ref":"#/components/schemas/MilestoneUserView"}]},"title":"Response List Contests User Winner Product Id Contest User Product User Id Winner Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/wallet/":{"get":{"tags":["Wallet"],"summary":"Get User Wallet Balance","description":"Retrieve the current balance of a respondent's wallet balance for display","operationId":"get_user_wallet_balance__product_id__wallet__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserWalletBalanceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/cashout_methods/":{"get":{"tags":["Wallet"],"summary":"Get Cashout Methods","description":"Retrieve the current available mechanisms that a user can use to retrieve funds.","operationId":"get_cashout_methods__product_id__cashout_methods__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashoutMethodsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Wallet"],"summary":"Create Cashout Method","description":"A user can only have 1 unique Cashout Method of any type at a time (eg. they can't create multiple paypal\npayout methods). Cashout Methods cannot be edited, they can only be created or deleted. Creating different\nCashout Methods will require type-dependent request data attributes in order to be successfully created.\n\nCurrently only creating paypal or Cash in Mail cashout methods are supported","operationId":"create_cashout_method__product_id__cashout_methods__post","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CreatePayPalCashoutMethodRequest"},{"$ref":"#/components/schemas/CreateCashMailCashoutMethodRequest"}],"discriminator":{"propertyName":"type","mapping":{"PAYPAL":"#/components/schemas/CreatePayPalCashoutMethodRequest","CASH_IN_MAIL":"#/components/schemas/CreateCashMailCashoutMethodRequest"}},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashoutMethodResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/cashout_methods/{cashout_method_id}/":{"delete":{"tags":["Wallet"],"summary":"Delete Cashout Method","description":"Delete a cashout method","operationId":"delete_cashout_method__product_id__cashout_methods__cashout_method_id___delete","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"cashout_method_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"description":"The ID of the cashout method to delete","title":"Cashout Method Id"},"description":"The ID of the cashout method to delete"},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/cashout/":{"post":{"tags":["Wallet"],"summary":"Submit User Cashout","description":"Request a cashout taken from a user's available wallet balance, to be paid via a particular\ncashout method.","operationId":"submit_user_cashout__product_id__cashout__post","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCashoutRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashoutRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/cashout/{cashout_id}/":{"get":{"tags":["Wallet"],"summary":"Get Cashout Detail","description":"Retrieve the details for a specific Cashout event","operationId":"get_cashout_detail__product_id__cashout__cashout_id___get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"cashout_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"description":"The cashout event ID","title":"Cashout Id"},"description":"The cashout event ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashoutRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/transaction_history/":{"get":{"tags":["Wallet"],"summary":"Get User Transaction History","description":"Return array of user events that altered their wallet balance","operationId":"get_user_transaction_history__product_id__transaction_history__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"bpuid","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":128,"title":"Brokerage Product User ID","description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values.","examples":["app-user-9329ebd"]},"description":"A unique identifier for each user, which is set by the Supplier. Must be consistent across respondent entrances and unique to the platform. It should not contain any sensitive information like email or names, and should avoid using any incrementing values."},{"name":"created_after","in":"query","required":false,"schema":{"type":"string","format":"date-time","description":"Filter transactions created after this timestamp","examples":["2025-01-01T04:20:00.000000Z"],"title":"Created After"},"description":"Filter transactions created after this timestamp"},{"name":"created_before","in":"query","required":false,"schema":{"type":"string","format":"date-time","description":"Filter transactions created before this timestamp","examples":["2026-02-17T00:46:04.851591Z"],"title":"Created Before"},"description":"Filter transactions created before this timestamp"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated fields to order by","examples":["-created","created"],"default":"created","title":"Order By"},"description":"Comma-separated fields to order by"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLedgerTransactionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{product_id}/cashout_method/{cashout_method_id}/value/":{"get":{"tags":["Wallet"],"summary":"Get Expected Redemption Value","description":"Use this function to get the \"value\" (in local currency, e.g. CAD, BTC) for this\n cashout_method, for amount (in USD cents).","operationId":"get_expected_redemption_value__product_id__cashout_method__cashout_method_id__value__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Brokerage Product ID","description":"The Brokerage Product ID provided by GRL.","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"description":"The Brokerage Product ID provided by GRL."},{"name":"cashout_method_id","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"description":"The ID of the cashout method","examples":["0d363971792249b1a34586f092819e4b"],"title":"Cashout Method Id"},"description":"The ID of the cashout method"},{"name":"amount","in":"query","required":true,"schema":{"type":"integer","description":"(USD cents) The amount to convert","examples":[100],"title":"Amount"},"description":"(USD cents) The amount to convert"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashoutMethodForeignValueResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/inventory/":{"get":{"tags":["Dashboard"],"summary":"Marketplace Inventory","operationId":"marketplace_inventory_dashboard_inventory__get","parameters":[{"name":"marketplace","in":"query","required":true,"schema":{"const":"WXET","type":"string","examples":["WXET"],"title":"Marketplace"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketplaceSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/debug/":{"get":{"tags":["Streams"],"summary":"Websocket Debug Page","operationId":"websocket_debug_page_ws_debug__get","parameters":[{"name":"product_id","in":"query","required":true,"schema":{"type":"string","minLength":32,"maxLength":32,"title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ws/events/docs/":{"get":{"tags":["Streams"],"summary":"Websocket Events Docs","description":"WebSocket endpoint: `/ws/events/`\n\nProtocol:\n- Client connects\n- Client sends a SubscribeMessage `{ kind: \"subscribe\", product_id: \"{product_id}\" }`\n- Server sends a PingMessage `{ kind: \"ping\" }`\n- Client must reply a PongMessage: `{ kind: \"pong\" }`\n- Other messages are EventMessage or StatsMessage\n\nClose on missing pong after 20s.","operationId":"websocket_events_docs_ws_events_docs__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/EventMessage"},{"$ref":"#/components/schemas/StatsMessage"},{"$ref":"#/components/schemas/PingMessage"},{"$ref":"#/components/schemas/SubscribeMessage"},{"$ref":"#/components/schemas/PongMessage"}],"title":"Response Websocket Events Docs Ws Events Docs Get"}}}}}}}},"components":{"schemas":{"AccountType":{"type":"string","enum":["bp_commission","bp_wallet","user_wallet","cash","revenue","expense","contest_wallet","credit_line","wa_wallet","wa_budget_pool","wa_held","wa_credit_line"],"title":"AccountType"},"AdjustmentType":{"properties":{"amount":{"type":"integer","title":"Amount","description":"The total amount (in USD cents) that the Brokerage Producthas earned within a respective time period from a specificSource of Tasks."},"adjustment":{"$ref":"#/components/schemas/SessionAdjustedStatus","description":" - `ac` = ADJUSTED_TO_COMPLETE\n - `af` = ADJUSTED_TO_FAIL\n - `pa` = PAYOUT_ADJUSTMENT","examples":["af"]}},"type":"object","required":["amount","adjustment"],"title":"AdjustmentType"},"AggregateBySource":{"properties":{"total":{"type":"integer","minimum":0.0,"title":"Total","default":0},"by_source":{"additionalProperties":{"type":"integer","minimum":0.0},"propertyNames":{"$ref":"#/components/schemas/Source"},"type":"object","title":"By Source"}},"type":"object","title":"AggregateBySource"},"AmtCashoutMethodData":{"properties":{"type":{"type":"string","const":"AMT","title":"Type","default":"AMT"}},"type":"object","title":"AmtCashoutMethodData"},"AuditLog":{"properties":{"id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Id"},"user_id":{"type":"integer","exclusiveMinimum":0.0,"title":"User Id"},"created":{"type":"string","format":"date-time","title":"Created","description":"When did this event occur","examples":["2026-02-17T00:46:02.709649Z"]},"level":{"$ref":"#/components/schemas/AuditLogLevel","description":"The level of importance for this event. Works the same as python logging levels. It is an integer 0 - 50, and implementers of this field could map it to the predefined levels: (`CRITICAL`, `ERROR`, `WARNING`, `INFO`, `DEBUG`).This is NOT the same concept as the 'strength' of whatever event happened; it is just for sorting, filtering and display purposes. For e.g. multiple level 20 events != the 'importance' of one level 40 event.","examples":[30]},"event_type":{"type":"string","maxLength":64,"title":"Event Type","examples":["entrance-limit"]},"event_msg":{"anyOf":[{"type":"string","maxLength":256,"minLength":3},{"type":"null"}],"title":"Event Msg","description":"The event message. Could be displayed on user's page"},"event_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Event Value","description":"Optionally store a numeric value associated with this event. For e.g. if we recalculate the user's normalized recon rate, and it is 'high', we could store an event like (event_type='recon-rate', event_msg='higher than allowed recon rate' event_value=0.42)","examples":[0.42]}},"type":"object","required":["user_id","level","event_type"],"title":"AuditLog","description":"Table / Model for logging \"actions\" taken by a user or \"events\" that\nare related to a User"},"AuditLogLevel":{"type":"integer","enum":[50,50,40,30,30,20,10,0],"title":"AuditLogLevel"},"Body_offerwall_softpair_block_post__product_id__offerwall_7a89dcdb__offerwall_id___post":{"properties":{"answers":{"items":{"$ref":"#/components/schemas/UserQuestionAnswerIn"},"type":"array","title":"Answers"}},"type":"object","required":["answers"],"title":"Body_offerwall_softpair_block_post__product_id__offerwall_7a89dcdb__offerwall_id___post"},"Body_offerwall_softpair_post__product_id__offerwall_37d1da64__offerwall_id___post":{"properties":{"answers":{"items":{"$ref":"#/components/schemas/UserQuestionAnswerIn"},"type":"array","title":"Answers"}},"type":"object","required":["answers"],"title":"Body_offerwall_softpair_post__product_id__offerwall_37d1da64__offerwall_id___post"},"Body_submit_profiling_questions__product_id__profiling_questions__post":{"properties":{"answers":{"items":{"$ref":"#/components/schemas/UserQuestionAnswerIn"},"type":"array","title":"Answers"}},"type":"object","required":["answers"],"title":"Body_submit_profiling_questions__product_id__profiling_questions__post"},"BrokerageProductPayoutEvent":{"properties":{"uuid":{"type":"string","maxLength":32,"minLength":32,"title":"Payout Event Unique Identifier","examples":["9453cd076713426cb68d05591c7145aa"]},"debit_account_uuid":{"type":"string","maxLength":32,"minLength":32,"title":"Debit Account Uuid","description":"The LedgerAccount.uuid that money is being requested from. Thie User or Brokerage Product is retrievable through the LedgerAccount.reference_uuid","examples":["18298cb1583846fbb06e4747b5310693"]},"cashout_method_uuid":{"type":"string","maxLength":32,"minLength":32,"title":"Cashout Method Uuid","description":"References a row in the account_cashoutmethod table. This is the cashout method that was used to request this payout. (A cashout is the same thing as a payout)","examples":["a6dc1fc1bf934557b952f253dee12813"]},"created":{"type":"string","format":"date-time","title":"Created"},"amount":{"type":"integer","exclusiveMaximum":9.223372036854776e+18,"exclusiveMinimum":0.0,"title":"Amount","description":"The USDCent amount int. This cannot be 0 or negative","examples":[531]},"status":{"anyOf":[{"$ref":"#/components/schemas/PayoutStatus"},{"type":"null"}],"description":" - `PENDING` = PENDING\n - `APPROVED` = APPROVED\n - `REJECTED` = REJECTED\n - `CANCELLED` = CANCELLED\n - `FAILED` = FAILED\n - `COMPLETE` = COMPLETE","default":"PENDING","examples":["COMPLETE"]},"ext_ref_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ext Ref Id"},"payout_type":{"$ref":"#/components/schemas/PayoutType","description":" - `PAYPAL` = PAYPAL\n - `TANGO` = TANGO\n - `DWOLLA` = DWOLLA\n - `ACH` = ACH\n - `WIRE` = WIRE\n - `CASH_IN_MAIL` = CASH_IN_MAIL\n - `PRIZE` = PRIZE\n - `AMT` = AMT\n - `AMT_BONUS` = AMT_BONUS\n - `AMT_ASSIGNMENT` = AMT_HIT","examples":["ACH"]},"request_data":{"additionalProperties":true,"type":"object","title":"Request Data","description":"Stores payout-type-specific information that is used to request this payout from the external provider."},"order_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"$ref":"#/components/schemas/CashMailOrderData"},{"type":"null"}],"title":"Order Data","description":"Stores payout-type-specific order information that is returned from the external payout provider."},"product_id":{"type":"string","maxLength":32,"minLength":32,"title":"Product Id","description":"The Brokerage Product that was paid out","examples":["1108d053e4fa47c5b0dbdcd03a7981e7"]},"method":{"$ref":"#/components/schemas/PayoutType","description":" - `PAYPAL` = PAYPAL\n - `TANGO` = TANGO\n - `DWOLLA` = DWOLLA\n - `ACH` = ACH\n - `WIRE` = WIRE\n - `CASH_IN_MAIL` = CASH_IN_MAIL\n - `PRIZE` = PRIZE\n - `AMT` = AMT\n - `AMT_BONUS` = AMT_BONUS\n - `AMT_ASSIGNMENT` = AMT_HIT","readOnly":true,"examples":["ACH"]},"amount_usd":{"type":"integer","minimum":0.0,"title":"Amount Usd","readOnly":true,"examples":["$10,000.000"]},"amount_usd_str":{"type":"string","title":"Amount Usd Str","readOnly":true,"examples":["$10,000.000"]}},"type":"object","required":["debit_account_uuid","cashout_method_uuid","amount","payout_type","product_id","method","amount_usd","amount_usd_str"],"title":"BrokerageProductPayoutEvent","description":"The amount\n\n- created: When the Brokerage Product was paid out"},"BucketTask":{"properties":{"id":{"type":"string","maxLength":32,"minLength":1,"title":"Id","description":"The internal task id for this task within the marketplace","examples":["6ov9jz3"]},"id_code":{"type":"string","maxLength":35,"minLength":3,"pattern":"^[a-z]{1,2}\\:.*","title":"Id Code","description":"The namespaced task id for this task within the marketplace","examples":["o:6ov9jz3"]},"source":{"$ref":"#/components/schemas/Source","examples":["o"]},"loi":{"type":"integer","maximum":5400.0,"exclusiveMinimum":1.0,"title":"Loi","description":"expected loi in seconds","examples":[612]},"payout":{"type":"integer","exclusiveMinimum":1.0,"title":"Payout","description":"integer cents","examples":[123]}},"type":"object","required":["id","id_code","source","loi","payout"],"title":"BucketTask","description":"This represents one of the \"tasks\" within a bucket's ordered list of tasks."},"Cardinality":{"type":"string","enum":["*","?"],"title":"Cardinality"},"CashMailCashoutMethodData":{"properties":{"type":{"type":"string","const":"CASH_IN_MAIL","title":"Type","default":"CASH_IN_MAIL"},"delivery_address":{"$ref":"#/components/schemas/USDeliveryAddress","description":"Delivery address where payment should be sent"}},"type":"object","required":["delivery_address"],"title":"CashMailCashoutMethodData"},"CashMailOrderData":{"properties":{"type":{"type":"string","const":"CASH_IN_MAIL","title":"Type","default":"CASH_IN_MAIL"},"shipping_cost":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Shipping Cost","description":"(USD cents) The shipping cost. This amount get charged to the BP."},"tracking_number":{"anyOf":[{"type":"string","maxLength":50,"minLength":1},{"type":"null"}],"title":"Tracking Number"},"shipping_method":{"anyOf":[{"$ref":"#/components/schemas/ShippingMethod","maxLength":50,"minLength":1},{"type":"null"}],"description":"Standard, express, etc."},"carrier":{"anyOf":[{"$ref":"#/components/schemas/ShippingCarrier","maxLength":50,"minLength":1},{"type":"null"}],"description":"Name of the shipping company, e.g., USPS, FedEx, DHL"},"ship_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ship Date"},"estimated_delivery_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Estimated Delivery Date"},"delivery_status":{"anyOf":[{"$ref":"#/components/schemas/DeliveryStatus","maxLength":50,"minLength":1},{"type":"null"}],"description":"Current status of delivery, e.g., pending, in transit, delivered"},"last_updated":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Updated","description":"Timestamp of the last status update"}},"type":"object","required":["shipping_cost"],"title":"CashMailOrderData"},"CashoutMethodForeignValue":{"properties":{"value":{"type":"integer","minimum":0.0,"title":"Value","description":"Value of the redemption in the currency's smallest unit."},"currency":{"$ref":"#/components/schemas/RedemptionCurrency","description":"Supported Currencies for Foreign Redemptions\n\nAllowed values: \n - __USD__ *(USD)*: US Dollars. Smallest Unit: Cents.\n - __CAD__ *(CAD)*: Canadian Dollars. Smallest Unit: Cents.\n - __GBP__ *(GBP)*: British Pounds. Smallest Unit: Pence.\n - __EUR__ *(EUR)*: Euros. Smallest Unit: Cents.\n - __INR__ *(INR)*: Indian Rupees. Smallest Unit: Paise.\n - __AUD__ *(AUD)*: Australian Dollars. Smallest Unit: Cents.\n - __PLN__ *(PLN)*: Polish Zloty. Smallest Unit: Grosz.\n - __SEK__ *(SEK)*: Swedish Krona. Smallest Unit: Öre.\n - __SGD__ *(SGD)*: Singapore Dollars. Smallest Unit: Cents.\n - __MXN__ *(MXN)*: Mexican Pesos. Smallest Unit: Centavos."},"value_string":{"type":"string","title":"Value String","description":"A string representation of the value in the currency."}},"type":"object","required":["value","currency","value_string"],"title":"CashoutMethodForeignValue","description":"Shows the expected value of a redemption in a foreign currency.","example":{"currency":"CAD","value":"138","value_string":"$1.38 CAD"}},"CashoutMethodForeignValueResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"cashout_method_value":{"$ref":"#/components/schemas/CashoutMethodForeignValue"}},"type":"object","required":["status","cashout_method_value"],"title":"CashoutMethodForeignValueResponse"},"CashoutMethodOut":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique ID for this cashout method"},"currency":{"type":"string","const":"USD","title":"Currency","description":"The currency of the cashout. Only USD is supported.","default":"USD"},"original_currency":{"anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}],"description":"The base currency of the money paid out. This is used for e.g. sending an Amazon UK gift card"},"data":{"oneOf":[{"$ref":"#/components/schemas/PaypalCashoutMethodData"},{"$ref":"#/components/schemas/TangoCashoutMethodData"},{"$ref":"#/components/schemas/CashMailCashoutMethodData"},{"$ref":"#/components/schemas/AmtCashoutMethodData"}],"title":"Data","discriminator":{"propertyName":"type","mapping":{"AMT":"#/components/schemas/AmtCashoutMethodData","CASH_IN_MAIL":"#/components/schemas/CashMailCashoutMethodData","PAYPAL":"#/components/schemas/PaypalCashoutMethodData","TANGO":"#/components/schemas/TangoCashoutMethodData"}}},"description":{"type":"string","title":"Description","description":"The description of the cashout method.","default":""},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Link to an image to display"},"max_value":{"type":"integer","exclusiveMinimum":0.0,"title":"Max Value","description":"(In lowest unit of the original_currency), The maximum amount that can be cashed out in one transaction."},"min_value":{"type":"integer","minimum":0.0,"title":"Min Value","description":"(In lowest unit of the original_currency), The minimum amount that can be cashed out in one transaction."},"name":{"type":"string","title":"Name","description":"A descriptive name for the cashout method."},"type":{"$ref":"#/components/schemas/PayoutType","description":"The method in which the requested payout is delivered.\n\nAllowed values: \n - __PAYPAL__ *(PAYPAL)*: User is paid out to their personal PayPal email address\n - __TANGO__ *(TANGO)*: User is paid uut via a Tango Gift Card\n - __DWOLLA__ *(DWOLLA)*: DWOLLA\n - __ACH__ *(ACH)*: A payment is made to a bank account using ACH\n - __WIRE__ *(WIRE)*: A payment is made to a bank account using ACH\n - __CASH_IN_MAIL__ *(CASH_IN_MAIL)*: A payment is made in cash and mailed to the user.\n - __PRIZE__ *(PRIZE)*: A payment is made as a prize with some monetary value\n - __AMT__ *(AMT)*: This is used to designate either AMT_BONUS or AMT_HIT\n - __AMT_BONUS__ *(AMT_BONUS)*: Amazon Mechanical Turk as a Bonus\n - __AMT_ASSIGNMENT__ *(AMT_HIT)*: Amazon Mechanical Turk for a HIT"},"ext_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ext Id","description":"An external ID. Can be shown to a user to disambiguate a user's possibly multiple methods"},"usd_exchange_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Usd Exchange Rate"},"max_value_usd":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Value Usd","description":"(In lowest unit of USD), The maximum amount that can be cashed out in one transaction."},"min_value_usd":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Min Value Usd","description":"(In lowest unit of USD), The minimum amount that can be cashed out in one transaction."},"product_id":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Product Id","examples":["4fe381fb7186416cb443a38fa66c6557"]},"product_user_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":3},{"type":"null"}],"title":"Product User Id","description":"A unique identifier for each user, which is set by the Supplier. It should not contain any sensitive informationlike email or names, and should avoid using anyincrementing values.","examples":["app-user-9329ebd"]}},"type":"object","required":["id","data","max_value","min_value","name","type"],"title":"CashoutMethodOut","example":{"bpid":"4a3ddfb747344bbc93efadf1c3a16e1a","currency":"USD","data":{"disclaimer":"...","terms":"..."},"description":"...","id":"941d489c3ce04eb39a0ddb7f8f75db74","image_url":"https://d30s7yzk2az89n.cloudfront.net/images/brands/b238587-1200w-326ppi.png","max_value":25000,"min_value":500,"name":"Visa® Prepaid Card USD","type":"TANGO"}},"CashoutMethodResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"cashout_method":{"$ref":"#/components/schemas/CashoutMethodOut"}},"type":"object","required":["status","cashout_method"],"title":"CashoutMethodResponse"},"CashoutMethodsResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"cashout_methods":{"items":{"$ref":"#/components/schemas/CashoutMethodOut"},"type":"array","title":"Cashout Methods"}},"type":"object","required":["status","cashout_methods"],"title":"CashoutMethodsResponse"},"CashoutRequestInfo":{"properties":{"id":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Id","description":"Unique ID for this cashout. This may be NULL if the status is REJECTED or FAILED, which may happen if the request is invalid.","examples":["3ceb847aaf9f40f4bd15b2b5e083abf6"]},"description":{"type":"string","title":"Description","description":"This is the name of the cashout method.","examples":["Visa® Prepaid Card USD"]},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"status":{"anyOf":[{"$ref":"#/components/schemas/PayoutStatus"},{"type":"null"}],"description":" - `PENDING` = PENDING\n - `APPROVED` = APPROVED\n - `REJECTED` = REJECTED\n - `CANCELLED` = CANCELLED\n - `FAILED` = FAILED\n - `COMPLETE` = COMPLETE","default":"PENDING","examples":["PENDING"]},"transaction_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Transaction Info"}},"type":"object","required":["id","description"],"title":"CashoutRequestInfo","description":"See models.thl.payout: PayoutEvent. We've confused a CashOut and a\nPayout. This is used only in the API response."},"CashoutRequestResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"cashout":{"$ref":"#/components/schemas/CashoutRequestInfo"}},"type":"object","required":["status","cashout"],"title":"CashoutRequestResponse"},"Category":{"properties":{"uuid":{"type":"string","maxLength":32,"minLength":32,"title":"Uuid","examples":["30fad401c93c438cae1cffecb046fd3e"]},"adwords_vertical_id":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Adwords Vertical Id"},"label":{"type":"string","maxLength":255,"title":"Label","examples":["Hair Loss"]},"path":{"type":"string","pattern":"^\\/.*[^\\/]$","title":"Path","examples":["/Beauty & Fitness/Hair Care/Hair Loss"]},"parent_uuid":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Parent Uuid","examples":["d52f3e2354ef434e9c89704fe1fb6018"]}},"type":"object","required":["uuid","label","path"],"title":"Category"},"CategoryAssociation":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"The category ID","examples":["c8642a1b86d9460cbe8f7e8ae6e56ee4"]},"label":{"type":"string","maxLength":255,"title":"Label","description":"The category label","examples":["People & Society"]},"adwords_id":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Adwords Id","examples":["14"]},"adwords_label":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Adwords Label","examples":["People & Society"]},"p":{"type":"number","maximum":1.0,"minimum":0.0,"title":"P","description":"The strength of the association of this bucketwith this category. Will sum to 1 within a bucket.","examples":[1.0]}},"type":"object","required":["id","label","p"],"title":"CategoryAssociation","description":"Used in an offerwall. Stores the association between a category\nand a bucket, with a score."},"ContestEndCondition":{"properties":{"target_entry_amount":{"anyOf":[{"anyOf":[{"type":"integer","minimum":0.0},{"type":"integer","exclusiveMinimum":0.0}],"ge":1},{"type":"null"}],"title":"Target Entry Amount","description":"The contest is over once this amount is reached. (sum of all entry amount)"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At","description":"The contest is over at this time."}},"type":"object","title":"ContestEndCondition","description":"Defines the conditions to evaluate to determine when the contest is over.\nMultiple conditions can be set. The contest is over once ANY conditions are met."},"ContestEndReason":{"type":"string","enum":["cancelled","target_entry_amount","ends_at","max_winners"],"title":"ContestEndReason","description":"Defines why a contest ended"},"ContestEntryRule":{"properties":{"max_entry_amount_per_user":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Entry Amount Per User","description":"Maximum total value of entries per user"},"max_daily_entries_per_user":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Daily Entries Per User","description":"Maximum entries per user allowed per day for this contest"},"min_completes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Completes"},"min_membership_level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Membership Level"},"id_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Id Verified"}},"type":"object","title":"ContestEntryRule","description":"Defines rules the user must meet to be allowed to enter this contest\nOnly applies if the ContestType is ENTRY!"},"ContestEntryTrigger":{"type":"string","enum":["task_complete","task_attempt","referral"],"title":"ContestEntryTrigger","description":"Defines what action/event triggers a (possible) entry into the contest (automatically).\nThis only is valid on milestone contests"},"ContestPrize":{"properties":{"kind":{"$ref":"#/components/schemas/ContestPrizeKind","description":"\nAllowed values: \n - __physical__ *(PHYSICAL)*: A physical prize (e.g. a iPhone, cash in the mail, dinner with Max)\n - __promotion__ *(PROMOTION)*: A promotion is a temporary or special offer that provides extra value or benefits (e.g. 20% bonus on completes for the next 7 days)\n - __cash__ *(CASH)*: Money is deposited into user's virtual wallet"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"estimated_cash_value":{"type":"integer","minimum":0.0,"title":"Estimated Cash Value","description":"Estimated cash value of prize in USDCents"},"cash_amount":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Cash Amount","description":"If the kind=ContestPrizeKind.CASH, this is the amount of the prize"},"promotion_id":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Promotion Id","description":"If the kind=ContestPrizeKind.PROMOTION, this is the promotion ID"},"leaderboard_rank":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Leaderboard Rank","description":"The prize is for achieving this rank in the associated leaderboard. The highest rank is 1."}},"type":"object","required":["kind","estimated_cash_value"],"title":"ContestPrize"},"ContestPrizeKind":{"type":"string","enum":["physical","promotion","cash"],"title":"ContestPrizeKind"},"ContestStatus":{"type":"string","enum":["active","completed","cancelled"],"title":"ContestStatus"},"ContestWinner":{"properties":{"uuid":{"type":"string","maxLength":32,"minLength":32,"title":"Uuid"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When this user won this prize"},"prize":{"$ref":"#/components/schemas/ContestPrize"},"awarded_cash_amount":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Awarded Cash Amount","description":"The actual amount this user receives. For cash prizes, if there was a tie, this could be different from the prize amount."},"product_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product User Id","readOnly":true}},"type":"object","required":["prize","product_user_id"],"title":"ContestWinner","description":"In a Raffle, the ContestEntryType can be COUNT or CASH. In the CASH type, the unit\nof entry is 1 USDCent (one penny). Implicitly, each penny entered buys 1 entry\ninto the raffle, and one entry is randomly selected for each prize.\n\nA contest should have as many winners as there are prizes\nspecial case 1: there are fewer entries than prizes\nspecial case 2: leaderboard contest with ties"},"CountStat":{"properties":{"facet":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}]},"propertyNames":{"enum":["country_iso","day","month"]},"type":"object","title":"Facet","description":"The grouping criteria","examples":[{"country_iso":"us"}]},"count":{"type":"integer","title":"Count","description":"The count value for the given metric and facet"}},"type":"object","required":["facet","count"],"title":"CountStat"},"CreateCashMailCashoutMethodRequest":{"properties":{"bpuid":{"type":"string","maxLength":128,"minLength":3,"title":"Bpuid","description":"(product_user_id) The user to create this cashout method for.","examples":["app-user-9329ebd"]},"type":{"type":"string","const":"CASH_IN_MAIL","title":"Type","default":"CASH_IN_MAIL"},"delivery_address":{"$ref":"#/components/schemas/USDeliveryAddress","description":"Delivery address where payment should be sent"}},"type":"object","required":["bpuid","delivery_address"],"title":"CreateCashMailCashoutMethodRequest"},"CreateCashoutRequest":{"properties":{"bpuid":{"type":"string","maxLength":128,"minLength":3,"title":"Bpuid","description":"(product_user_id) The user requesting a cashout.","examples":["app-user-9329ebd"]},"amount":{"type":"integer","exclusiveMinimum":0.0,"title":"Amount","description":"(USD cents) The amount requested for the cashout.","examples":[531]},"cashout_method_id":{"type":"string","maxLength":32,"minLength":32,"title":"Cashout Method Id","description":"Unique ID for the cashout method the cashout is being requested with.","examples":["941d489c3ce04eb39a0ddb7f8f75db74"]}},"type":"object","required":["bpuid","amount","cashout_method_id"],"title":"CreateCashoutRequest"},"CreatePayPalCashoutMethodRequest":{"properties":{"bpuid":{"type":"string","maxLength":128,"minLength":3,"title":"Bpuid","description":"(product_user_id) The user to create this cashout method for.","examples":["app-user-9329ebd"]},"type":{"type":"string","const":"PAYPAL","title":"Type","default":"PAYPAL"},"email":{"type":"string","format":"email","title":"Email","description":"Email address of the paypal user","examples":["test@example.com"]}},"type":"object","required":["bpuid","email"],"title":"CreatePayPalCashoutMethodRequest"},"Currency":{"type":"string","enum":["USD","CAD","GBP","EUR","INR","AUD","PLN","SEK","SGD","MXN"],"title":"Currency"},"DeliveryStatus":{"type":"string","enum":["Pending","Shipped","In Transit","Out for Delivery","Delivered","Returned","Canceled","Failed Attempt","Lost"],"title":"DeliveryStatus"},"Direction":{"type":"integer","enum":[-1,1],"title":"Direction","description":"Entries on the debit side will increase debit normal accounts, while\nentries on the credit side will decrease them. Conversely, entries on\nthe credit side will increase credit normal accounts, while entries on\nthe debit side will decrease them.\n\nBy convention (?), the db will store transactions as debit-normal. For\na credit-normal account, we should flip the signs."},"DurationSummary":{"properties":{"min":{"type":"integer","maximum":5400.0,"exclusiveMinimum":0.0,"title":"Min"},"max":{"type":"integer","maximum":5400.0,"exclusiveMinimum":0.0,"title":"Max"},"mean":{"anyOf":[{"type":"integer","maximum":5400.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Mean"},"q1":{"type":"integer","maximum":5400.0,"exclusiveMinimum":0.0,"title":"Q1"},"q2":{"type":"integer","maximum":5400.0,"exclusiveMinimum":0.0,"title":"Q2"},"q3":{"type":"integer","maximum":5400.0,"exclusiveMinimum":0.0,"title":"Q3"},"lower_whisker":{"type":"integer","title":"Lower Whisker","readOnly":true},"upper_whisker":{"type":"integer","title":"Upper Whisker","readOnly":true}},"type":"object","required":["min","max","q1","q2","q3","lower_whisker","upper_whisker"],"title":"DurationSummary","description":"Durations are in integer seconds.\nDescribes the statistical distribution of expected durations of tasks within this bucket.","examples":[{"max":1180,"mean":660,"min":112,"q1":457,"q2":650,"q3":1103}]},"EventEnvelope":{"properties":{"event_uuid":{"type":"string","maxLength":32,"minLength":32,"title":"Event Uuid"},"event_type":{"$ref":"#/components/schemas/EventType"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"version":{"type":"integer","title":"Version","default":1},"product_user_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":3},{"type":"null"}],"title":"Product User Id","description":"A unique identifier for each user. This is hidden unlessthe event is for the requesting user.","examples":["app-user-9329ebd"]},"product_id":{"type":"string","maxLength":32,"minLength":32,"title":"Product Id","examples":["4fe381fb7186416cb443a38fa66c6557"]},"payload":{"oneOf":[{"$ref":"#/components/schemas/TaskEnterPayload"},{"$ref":"#/components/schemas/TaskFinishPayload"},{"$ref":"#/components/schemas/SessionEnterPayload"},{"$ref":"#/components/schemas/SessionFinishPayload"}],"title":"Payload","discriminator":{"propertyName":"event_type","mapping":{"session.enter":"#/components/schemas/SessionEnterPayload","session.finish":"#/components/schemas/SessionFinishPayload","task.enter":"#/components/schemas/TaskEnterPayload","task.finish":"#/components/schemas/TaskFinishPayload"}}}},"type":"object","required":["event_type","product_id","payload"],"title":"EventEnvelope"},"EventMessage":{"properties":{"kind":{"type":"string","const":"event","title":"Kind","default":"event"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"data":{"$ref":"#/components/schemas/EventEnvelope"}},"type":"object","required":["data"],"title":"EventMessage"},"EventType":{"type":"string","enum":["task.enter","task.finish","session.enter","session.finish","wallet.credit","wallet.debit","user.created","user.active"],"title":"EventType"},"GeoIPInformation":{"properties":{"geoname_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Geoname Id"},"continent_code":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"title":"Continent Code"},"continent_name":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Continent Name"},"country_iso":{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$","title":"Country Iso","description":"The ISO code of the country associated with the IP address.","examples":["jm"]},"country_name":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Country Name"},"subdivision_1_iso":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Subdivision 1 Iso","description":"The ISO code of the primary subdivision (e.g., state or province)."},"subdivision_1_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Subdivision 1 Name","description":"The name of the primary subdivision (e.g., state or province)."},"subdivision_2_iso":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Subdivision 2 Iso","description":"The ISO code of the secondary subdivision (if applicable)."},"subdivision_2_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Subdivision 2 Name","description":"The name of the secondary subdivision (if applicable)."},"city_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"City Name","description":"The name of the city associated with the IP address.","examples":["Jamestown"]},"metro_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Metro Code"},"time_zone":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Time Zone","description":"The time zone associated with the geographical location.","examples":["Europe/Madrid"]},"is_in_european_union":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is In European Union"},"updated":{"type":"string","format":"date-time","title":"Updated"},"ip":{"type":"string","title":"Ip"},"registered_country_iso":{"anyOf":[{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$"},{"type":"null"}],"title":"Registered Country Iso","description":"The ISO code of the country where the IP address is registered.","examples":["sm"]},"is_anonymous":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Anonymous","description":"Indicates whether the IP address is associated with an anonymous source (e.g., VPN, proxy).","examples":[false]},"is_anonymous_vpn":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Anonymous Vpn"},"is_hosting_provider":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Hosting Provider"},"is_public_proxy":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public Proxy"},"is_tor_exit_node":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Tor Exit Node"},"is_residential_proxy":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Residential Proxy"},"autonomous_system_number":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Autonomous System Number"},"autonomous_system_organization":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Autonomous System Organization"},"domain":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Domain"},"isp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Isp","description":"The Internet Service Provider associated with the IP address.","examples":["Comcast"]},"mobile_country_code":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Mobile Country Code"},"mobile_network_code":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Mobile Network Code"},"network":{"anyOf":[{"type":"string","maxLength":56},{"type":"null"}],"title":"Network"},"organization":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Organization"},"static_ip_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Static Ip Score","description":"A score indicating the likelihood that the IP address is static."},"user_type":{"anyOf":[{"$ref":"#/components/schemas/UserType"},{"type":"null"}],"description":"The type of user associated with the IP address (e.g., 'residential', 'business').","examples":["school"]},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code","description":"The postal code associated with the IP address.","examples":["13245"]},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude","description":"The latitude coordinate of the IP address location.","examples":[10.031844]},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude","description":"The longitude coordinate of the IP address location.","examples":[-20.111975]},"accuracy_radius":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Accuracy Radius","description":"The approximate radius of accuracy for the latitude and longitude, in kilometers.","examples":[167]}},"type":"object","required":["country_iso","ip"],"title":"GeoIPInformation"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IntegrationMode":{"type":"string","enum":["platform","pass_through"],"title":"IntegrationMode"},"Leaderboard":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique ID for this leaderboard","examples":["845b0074ad533df580ebb9c80cc3bce1"]},"name":{"type":"string","title":"Name","description":"Descriptive name for the leaderboard based on the board_code","examples":["Number of Completes"]},"board_code":{"$ref":"#/components/schemas/LeaderboardCode","description":"The type of leaderboard. What the \"values\" represent.\n\nAllowed values: \n - __complete_count__ *(COMPLETE_COUNT)*: Number of Completes\n - __largest_user_payout__ *(LARGEST_PAYOUT)*: Largest Single Payout\n - __sum_user_payout__ *(SUM_PAYOUTS)*: (Sum of) Total Payouts","examples":["complete_count"]},"bpid":{"type":"string","maxLength":32,"minLength":32,"title":"Bpid","description":"product_id","examples":["4fe381fb7186416cb443a38fa66c6557"]},"country_iso":{"type":"string","title":"Country Iso","description":"The country this leaderboard is for.","examples":["us"]},"freq":{"$ref":"#/components/schemas/LeaderboardFrequency","description":"The time period range for the leaderboard.\n\nAllowed values: \n - __daily__ *(DAILY)*: UTC midnight to UTC midnight\n - __weekly__ *(WEEKLY)*: Sunday Midnight to Sunday Midnight UTC\n - __monthly__ *(MONTHLY)*: Jan 1 00:00:00","examples":["daily"]},"timezone_name":{"type":"string","title":"Timezone Name","description":"The timezone for the requested country","examples":["America/New_York"]},"sort_order":{"type":"string","enum":["ascending","descending"],"title":"Sort Order","default":"descending"},"row_count":{"type":"integer","minimum":0.0,"title":"Row Count","description":"The total number of rows in the leaderboard.","examples":[2]},"rows":{"items":{"$ref":"#/components/schemas/LeaderboardRow"},"type":"array","title":"Rows","examples":[[{"bpuid":"app-user-9329ebd","rank":1,"value":4},{"bpuid":"app-user-7923skw","rank":2,"value":3}]]},"period_start_local":{"type":"string","format":"date-time","title":"Period Start Local","description":"The start of the time period covered by this board in local time, tz-aware","examples":["2024-07-12T00:00:00-04:00"]},"period_end_local":{"type":"string","format":"date-time","title":"Period End Local","description":"The end of the time period covered by this board in local time, tz-aware","examples":["2024-07-12T23:59:59.999999-04:00"]},"start_timestamp":{"type":"integer","title":"Start Timestamp","description":"(unix timestamp) The start time of the time range this leaderboard covers.","readOnly":true,"examples":[1720756800]},"end_timestamp":{"type":"integer","title":"End Timestamp","description":"(unix timestamp) The end time of the time range this leaderboard covers.","readOnly":true,"examples":[1720843199]},"utc_offset":{"type":"string","title":"Utc Offset","description":"The UTC offset for the timezone","readOnly":true,"examples":["-0400"]},"local_start_time":{"type":"string","title":"Local Start Time","description":"The start time of the time range this leaderboard covers (local time, in the leaderboard's timezone).","readOnly":true,"examples":["2024-07-12T00:00:00-04:00"]},"local_end_time":{"type":"string","title":"Local End Time","description":"The end time of the time range this leaderboard covers (local time, in the leaderboard's timezone).","readOnly":true,"examples":["2024-07-12T23:59:59.999999-04:00"]},"start_end_str":{"type":"string","title":"Start End Str","description":"A formatted string for time period covered by this leaderboard. Can be used to display to users.","readOnly":true,"examples":["2024-02-07 to 2024-02-08"]}},"type":"object","required":["board_code","bpid","country_iso","freq","row_count","period_start_local","start_timestamp","end_timestamp","utc_offset","local_start_time","local_end_time","start_end_str"],"title":"Leaderboard","description":"A leaderboard exists independently for each product_id in each country.\nEach country is associated with a single timezone. There is a daily,\nweekly, and monthly leaderboard."},"LeaderboardCode":{"type":"string","enum":["complete_count","largest_user_payout","sum_user_payout"],"title":"LeaderboardCode","description":"The type of leaderboard. What the \"values\" represent."},"LeaderboardContestUserView":{"properties":{"name":{"type":"string","maxLength":128,"title":"Name","description":"Name of contest. Can be displayed to user."},"description":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Description","description":"Description of contest. Can be displayed to user."},"contest_type":{"type":"string","const":"leaderboard","title":"Contest Type","default":"leaderboard"},"end_condition":{"$ref":"#/components/schemas/ContestEndCondition"},"prizes":{"items":{"$ref":"#/components/schemas/ContestPrize"},"type":"array","minItems":1,"title":"Prizes"},"starts_at":{"type":"string","format":"date-time","title":"Starts At","description":"When the contest starts"},"terms_and_conditions":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Terms And Conditions"},"status":{"$ref":"#/components/schemas/ContestStatus","default":"active"},"country_isos":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Isos","description":"Contest is restricted to these countries. If null, all countries are allowed"},"uuid":{"type":"string","maxLength":32,"minLength":32,"title":"Uuid"},"product_id":{"type":"string","maxLength":32,"minLength":32,"title":"Product Id","description":"Contest applies only to a single BP"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When this contest was created"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When this contest was last modified. Does not include entries being created/modified"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At","description":"When the contest ended"},"end_reason":{"anyOf":[{"$ref":"#/components/schemas/ContestEndReason"},{"type":"null"}],"description":"The reason the contest ended"},"product_user_id":{"type":"string","title":"Product User Id"},"user_winnings":{"items":{"$ref":"#/components/schemas/ContestWinner"},"type":"array","title":"User Winnings","description":"The prizes won in this contest by the requested user"},"leaderboard_key":{"type":"string","title":"Leaderboard Key","description":"The specific leaderboard instance this contest is connected to","examples":["leaderboard:7a9d8d02334449ceb105764f77e1ba97:us:weekly:2025-05-26:complete_count"]},"tie_break_strategy":{"type":"string","const":"split_prize_pool","title":"Tie Break Strategy","default":"split_prize_pool"},"country_iso":{"type":"string","title":"Country Iso","readOnly":true},"user_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Rank","description":"The current rank of this user in this contest","readOnly":true}},"additionalProperties":false,"type":"object","required":["name","product_id","product_user_id","leaderboard_key","country_iso","user_rank"],"title":"LeaderboardContestUserView","example":{"contest_type":"leaderboard","country_iso":"us","country_isos":"us","created_at":"2026-02-18T07:03:18.635186Z","description":"$15 1st place, $10 2nd, $5 3rd place US weekly","end_condition":{"ends_at":"2025-06-02T05:29:59.999999Z"},"leaderboard_key":"leaderboard:1108d053e4fa47c5b0dbdcd03a7981e7:us:weekly:2025-05-26:complete_count","name":"Prizes for top survey takers this week","prizes":[{"cash_amount":1500,"estimated_cash_value":1500,"kind":"cash","leaderboard_rank":1,"name":"$15 Cash"},{"cash_amount":1000,"estimated_cash_value":1000,"kind":"cash","leaderboard_rank":2,"name":"$10 Cash"},{"cash_amount":500,"estimated_cash_value":500,"kind":"cash","leaderboard_rank":3,"name":"$5 Cash"}],"product_id":"1108d053e4fa47c5b0dbdcd03a7981e7","product_user_id":"test-user","starts_at":"2026-02-18T07:03:18.635162Z","status":"active","tie_break_strategy":"split_prize_pool","updated_at":"2026-02-18T07:03:18.635187Z","user_winnings":[],"uuid":"6adfa26d2b044cfa8bf0622041ee7c96"}},"LeaderboardFrequency":{"type":"string","enum":["daily","weekly","monthly"],"title":"LeaderboardFrequency","description":"The time period range for the leaderboard."},"LeaderboardResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"leaderboard":{"$ref":"#/components/schemas/Leaderboard"}},"type":"object","required":["status","leaderboard"],"title":"LeaderboardResponse"},"LeaderboardRow":{"properties":{"bpuid":{"type":"string","title":"Bpuid","description":"product_user_id","examples":["app-user-9329ebd"]},"rank":{"type":"integer","title":"Rank","description":"The numerical data ranks (1 through n) of the values. Ties are ranked using the lowest rank in the group.","examples":[1]},"value":{"type":"integer","title":"Value","description":"The value. The meaning of the value is dependent on the LeaderboardCode.","examples":[7]}},"type":"object","required":["bpuid","rank","value"],"title":"LeaderboardRow"},"LeaderboardWinner":{"properties":{"rank":{"type":"integer","title":"Rank","description":"The user's final rank in the leaderboard","examples":[1]},"freq":{"$ref":"#/components/schemas/LeaderboardFrequency","description":"The time period range for the leaderboard.\n\nAllowed values: \n - __daily__ *(DAILY)*: UTC midnight to UTC midnight\n - __weekly__ *(WEEKLY)*: Sunday Midnight to Sunday Midnight UTC\n - __monthly__ *(MONTHLY)*: Jan 1 00:00:00","examples":["daily"]},"board_code":{"$ref":"#/components/schemas/LeaderboardCode","description":"The type of leaderboard. What the \"values\" represent.\n\nAllowed values: \n - __complete_count__ *(COMPLETE_COUNT)*: Number of Completes\n - __largest_user_payout__ *(LARGEST_PAYOUT)*: Largest Single Payout\n - __sum_user_payout__ *(SUM_PAYOUTS)*: (Sum of) Total Payouts","examples":["complete_count"]},"country_iso":{"type":"string","title":"Country Iso","description":"The country this leaderboard is for.","examples":["us"]},"issued":{"type":"string","format":"date-time","title":"Issued","description":"When the prize was issued.","examples":["2022-10-17T05:59:14.570231Z"]},"bpuid":{"type":"string","title":"Bpuid","description":"product_user_id","examples":["app-user-9329ebd"]},"description":{"type":"string","title":"Description","examples":["Bonus for daily contest"]},"amount":{"type":"integer","title":"Amount","description":"(USD cents) The reward amount","examples":[1000]},"amount_str":{"type":"string","title":"Amount Str","description":"The amount as a formatted string in USD. Can be displayed to the user.","examples":["$10.00"]},"contest_start":{"type":"string","format":"date-time","title":"Contest Start","description":"When the leaderboard started","examples":["2022-10-16T04:00:00Z"]},"contest_end":{"type":"string","format":"date-time","title":"Contest End","description":"When the leaderboard ended","examples":["2022-10-17T04:00:00Z"]}},"type":"object","required":["rank","freq","board_code","country_iso","issued","bpuid","description","amount","amount_str","contest_start","contest_end"],"title":"LeaderboardWinner"},"LeaderboardWinnerResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"winners":{"items":{"$ref":"#/components/schemas/LeaderboardWinner"},"type":"array","title":"Winners"}},"type":"object","required":["status"],"title":"LeaderboardWinnerResponse"},"LedgerAccount":{"properties":{"uuid":{"type":"string","maxLength":32,"minLength":32,"title":"Uuid","description":"A unique identifier for this Ledger Account","examples":["c3c3566b5b1b4961b63a5670a2dc923d"]},"display_name":{"type":"string","maxLength":64,"title":"Display Name","description":"Human-readable description of the Ledger Account","examples":["BP Wallet c3c3566b5b1b4961b63a5670a2dc923d"]},"qualified_name":{"type":"string","maxLength":255,"title":"Qualified Name"},"account_type":{"$ref":"#/components/schemas/AccountType","description":" - `bp_commission` = BP_COMMISSION\n - `bp_wallet` = BP_WALLET\n - `user_wallet` = USER_WALLET\n - `cash` = CASH\n - `revenue` = REVENUE\n - `expense` = EXPENSE\n - `contest_wallet` = CONTEST_WALLET\n - `credit_line` = CREDIT_LINE\n - `wa_wallet` = WA_WALLET\n - `wa_budget_pool` = WA_BUDGET_POOL\n - `wa_held` = WA_HELD\n - `wa_credit_line` = WA_CREDIT_LINE","examples":["bp_wallet"]},"normal_balance":{"$ref":"#/components/schemas/Direction","description":" - `-1` = CREDIT\n - `1` = DEBIT"},"reference_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Type"},"reference_uuid":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Reference Uuid","description":"The associated Product ID or other parent account thatthis Ledger Account is intended to track transactions for.If Wallet mode is enabled, this can also handle trackingindividual users.","examples":["61dd0b086fd048518762757612b4a6d3"]},"currency":{"type":"string","maxLength":32,"title":"Currency","description":"GRL's Ledger system allows tracking of transactions inany currency possible. This is useful for trackingpoints, stars, coins, or any other currency that may beused in a Supplier's platform.","default":"USD"}},"type":"object","required":["display_name","qualified_name","account_type","normal_balance"],"title":"LedgerAccount"},"LedgerEntry":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"direction":{"$ref":"#/components/schemas/Direction"},"account_uuid":{"type":"string","maxLength":32,"minLength":32,"title":"Account Uuid"},"amount":{"type":"integer","exclusiveMaximum":9.223372036854776e+18,"exclusiveMinimum":0.0,"title":"Amount","description":"The USDCent amount. A LedgerEntry cannot be made for0 USDCent and it cannot be negative.","examples":[531]},"transaction_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Transaction Id"}},"type":"object","required":["direction","account_uuid","amount"],"title":"LedgerEntry"},"LedgerTransaction":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"created":{"type":"string","format":"date-time","title":"Created","description":"When the Transaction (TX) was created into the database.This does not represent the exact time for any actionwhich may be responsible for this Transaction (TX), and TX timestamps will likely be a few milliseconds delayed"},"ext_description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Ext Description"},"tag":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Tag"},"metadata":{"additionalProperties":{"type":"string"},"type":"object","title":"Metadata"},"entries":{"items":{"$ref":"#/components/schemas/LedgerEntry"},"type":"array","title":"Entries","description":"A Transaction (TX) is composed of multiple Entry events."}},"additionalProperties":false,"type":"object","title":"LedgerTransaction"},"MarketProfileKnowledge":{"properties":{"source":{"$ref":"#/components/schemas/Source","maxLength":16,"description":"Marketplace this question is from"},"question_id":{"type":"string","title":"Question Id","examples":["gender","1843","gender_plus"]},"answer":{"items":{"type":"string"},"type":"array","title":"Answer","examples":[["male"],["7657644"],["1"]]},"created":{"type":"string","format":"date-time","title":"Created","description":"When the User submitted this Profiling data"}},"type":"object","required":["source","question_id","created"],"title":"MarketProfileKnowledge","description":"This is used solely in API responses, so it is simplified."},"MarketplaceBucket":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier this particular bucket","examples":["5ba2fe5010cc4d078fc3cc0b0cc264c3"]},"uri":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Uri","description":"The URL to send a respondent into. Must not edit this URL in any way","examples":["https://task.generalresearch.com/api/v1/52d3f63b2709/797df4136c604a6c8599818296aae6d1/?i=5ba2fe5010cc4d078fc3cc0b0cc264c3&b=test&66482fb=e7baf5e"]},"x":{"type":"integer","minimum":0.0,"title":"X","description":"For UI. Provides a dimensionality position for the bucket on the x-axis.","default":0,"examples":[0,1,2]},"y":{"type":"integer","minimum":0.0,"title":"Y","description":"For UI. Provides a dimensionality position for the bucket on the y-axis.","default":0,"examples":[0,1,2]},"name":{"type":"string","title":"Name","description":"Currently unused. Will always return empty string","default":""},"description":{"type":"string","title":"Description","description":"Currently unused. Will always return empty string","default":""},"category":{"items":{"$ref":"#/components/schemas/CategoryAssociation"},"type":"array","title":"Category"},"contents":{"items":{"$ref":"#/components/schemas/BucketTask"},"type":"array","title":"Contents"},"duration":{"$ref":"#/components/schemas/DurationSummary"},"payout":{"$ref":"#/components/schemas/PayoutSummary"},"source":{"type":"string","enum":["innovate","dynata","schlesinger","purespectrum","morning","pollfish","precision","repdata","prodege"],"title":"Source","description":"this is the source of the contents","examples":["pollfish"]}},"additionalProperties":false,"type":"object","required":["id","uri","contents","duration","payout","source"],"title":"MarketplaceBucket"},"MarketplaceInventorySummary":{"properties":{"live_tasks":{"items":{"$ref":"#/components/schemas/CountStat"},"type":"array","title":"Live Tasks","description":"The count of tasks that are currently live"},"live_gen_pop_tasks":{"items":{"$ref":"#/components/schemas/CountStat"},"type":"array","title":"Live Gen Pop Tasks","description":"The count of gen-pop tasks that are currently live"},"tasks_created":{"items":{"$ref":"#/components/schemas/CountStat"},"type":"array","title":"Tasks Created","description":"The count of tasks created"},"required_finishes":{"items":{"$ref":"#/components/schemas/CountStat"},"type":"array","title":"Required Finishes","description":"Number of finishes needed across all live tasks"},"payout":{"items":{"$ref":"#/components/schemas/StatisticalSummaryStat"},"type":"array","title":"Payout","description":"The distribution of payouts for all live tasks"},"expected_duration":{"items":{"$ref":"#/components/schemas/StatisticalSummaryStat"},"type":"array","title":"Expected Duration","description":"The distribution of expected durations for all live tasks"},"required_finishes_per_task":{"items":{"$ref":"#/components/schemas/StatisticalSummaryStat"},"type":"array","title":"Required Finishes Per Task","description":"The distribution of required finishes on all live tasks"}},"type":"object","title":"MarketplaceInventorySummary"},"MarketplaceOfferwall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/MarketplaceBucket"},"type":"array","title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]}},"additionalProperties":false,"type":"object","required":["id","availability_count"],"title":"MarketplaceOfferwall","description":"Returns buckets grouped by marketplace, one per marketplace, with the\ntasks ordered by quality.\n\nOfferwall code: `5fa23085`"},"MarketplaceOfferwallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/MarketplaceOfferwall"}},"type":"object","required":["info","offerwall"],"title":"MarketplaceOfferwallResponse"},"MarketplaceSummary":{"properties":{"inventory":{"$ref":"#/components/schemas/MarketplaceInventorySummary","description":"Inventory of the marketplace"},"user_activity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Activity","description":"User activity of the marketplace"}},"type":"object","required":["inventory"],"title":"MarketplaceSummary"},"MaxGaugeBySource":{"properties":{"value":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Value"},"by_source":{"additionalProperties":{"type":"integer","minimum":0.0},"propertyNames":{"$ref":"#/components/schemas/Source"},"type":"object","title":"By Source"}},"type":"object","title":"MaxGaugeBySource"},"MilestoneContestEndCondition":{"properties":{"max_winners":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Winners","description":"The contest will end once this many users have won (i.e. reachedthe milestone)."},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At","description":"The Contest is over at the ends_at time."}},"type":"object","title":"MilestoneContestEndCondition","description":"Defines the conditions to evaluate to determine when the contest is over.\nMultiple conditions can be set. The contest is over once ANY conditions are met."},"MilestoneUserView":{"properties":{"target_amount":{"type":"integer","exclusiveMinimum":0.0,"title":"Target Amount","description":"Each user 'wins' (receives prizes) once this target amount is reached."},"entry_trigger":{"anyOf":[{"$ref":"#/components/schemas/ContestEntryTrigger"},{"type":"null"}],"description":"What user action triggers an entry automatically."},"valid_for":{"anyOf":[{"type":"string","format":"duration"},{"type":"null"}],"title":"Valid For","description":"The time after valid_for_event for which the contest is open"},"valid_for_event":{"anyOf":[{"type":"string","const":"signup"},{"type":"null"}],"title":"Valid For Event"},"name":{"type":"string","maxLength":128,"title":"Name","description":"Name of contest. Can be displayed to user."},"description":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Description","description":"Description of contest. Can be displayed to user."},"contest_type":{"type":"string","const":"milestone","title":"Contest Type","default":"milestone"},"end_condition":{"$ref":"#/components/schemas/MilestoneContestEndCondition"},"prizes":{"items":{"$ref":"#/components/schemas/ContestPrize"},"type":"array","minItems":1,"title":"Prizes"},"starts_at":{"type":"string","format":"date-time","title":"Starts At","description":"When the contest starts"},"terms_and_conditions":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Terms And Conditions"},"status":{"$ref":"#/components/schemas/ContestStatus","default":"active"},"country_isos":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Isos","description":"Contest is restricted to these countries. If null, all countries are allowed"},"uuid":{"type":"string","maxLength":32,"minLength":32,"title":"Uuid"},"product_id":{"type":"string","maxLength":32,"minLength":32,"title":"Product Id","description":"Contest applies only to a single BP"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When this contest was created"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When this contest was last modified. Does not include entries being created/modified"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At","description":"When the contest ended"},"end_reason":{"anyOf":[{"$ref":"#/components/schemas/ContestEndReason"},{"type":"null"}],"description":"The reason the contest ended"},"product_user_id":{"type":"string","title":"Product User Id"},"user_winnings":{"items":{"$ref":"#/components/schemas/ContestWinner"},"type":"array","title":"User Winnings","description":"The prizes won in this contest by the requested user"},"entry_type":{"type":"string","const":"count","title":"Entry Type","default":"count"},"win_count":{"type":"integer","title":"Win Count","description":"The number of times the milestone has been reached.","default":0},"user_amount":{"type":"integer","title":"User Amount","description":"The total amount for this user for this contest"}},"additionalProperties":false,"type":"object","required":["target_amount","name","end_condition","product_id","product_user_id","user_amount"],"title":"MilestoneUserView","example":{"contest_type":"milestone","created_at":"2025-06-12T21:12:58.061205Z","description":"Only valid for the first 50 users","end_condition":{"max_winners":50},"entry_trigger":"task_complete","entry_type":"count","name":"Win a 50% bonus for 7 days and a $5 bonus after your first 10 completes!","prizes":[{"estimated_cash_value":0,"kind":"promotion","name":"50% bonus on completes for 7 days"},{"cash_amount":500,"estimated_cash_value":500,"kind":"cash","name":"$5.00 Bonus"}],"product_id":"1108d053e4fa47c5b0dbdcd03a7981e7","product_user_id":"test-user","starts_at":"2025-06-12T21:12:58.061170Z","status":"active","target_amount":10,"terms_and_conditions":"https://www.example.com/","updated_at":"2025-06-12T21:12:58.061205Z","user_amount":8,"user_winnings":[],"uuid":"747fe3b709ae460e816821dcb81aebb9","win_count":12}},"OfferWallCategoryRequest":{"properties":{"adwords_category":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Adwords Category","examples":[["45","65"]]},"category":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Category","examples":[["98c137e4e90a4d92ac6c00e523eb1b50"]]},"exclude_adwords_category":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Exclude Adwords Category","examples":[["1558"]]},"exclude_category":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Exclude Category","examples":[["21536f160f784189be6194ca894f3a65","7aa8bf4e71a84dc3b2035f93f9f9c77e"]]}},"type":"object","title":"OfferWallCategoryRequest"},"OfferWallInfo":{"properties":{"success":{"type":"boolean","title":"Success"}},"type":"object","required":["success"],"title":"OfferWallInfo"},"OfferWallRequestYieldmanParams":{"properties":{"conversion_factor_adj":{"type":"number","title":"Conversion Factor Adj","description":"Centered around 0. Higher results in higher weight given to conversion (in the scoring function)","default":0.0},"dropoffrate_factor_adj":{"type":"number","title":"Dropoffrate Factor Adj","description":"Centered around 0. Higher results in higher penalty given to dropoffs (in the scoring function)","default":0.0},"longfail_factor_adj":{"type":"number","title":"Longfail Factor Adj","description":"Centered around 0. Higher results in higher penalty given to long fail (in the scoring function)","default":0.0},"recon_factor_adj":{"type":"number","title":"Recon Factor Adj","description":"Centered around 0. Higher results in higher penalty given to recons (in the scoring function)","default":0.0},"recon_likelihood_max":{"type":"number","title":"Recon Likelihood Max","description":"Tolerance for recon likelihood (0 to 1)","default":0.8}},"type":"object","title":"OfferWallRequestYieldmanParams"},"OfferwallConfig":{"properties":{},"type":"object","title":"OfferwallConfig"},"OfferwallReason":{"type":"string","enum":["USER_BLOCKED","HIGH_RECON_RATE","UNCOMMON_DEMOGRAPHICS","UNDER_MINIMUM_AGE","EXHAUSTED_HIGH_VALUE_SUPPLY","ALL_ELIGIBLE_ATTEMPTED","LOW_CURRENT_SUPPLY"],"title":"OfferwallReason"},"OneShotOfferwall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/OneShotOfferwallBucket"},"type":"array","title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]}},"additionalProperties":false,"type":"object","required":["id","availability_count"],"title":"OneShotOfferwall","description":"Each bucket has only 1 single task, and only basic info is returned\n about each bucket.\n\nOfferwall code: `6f27b1ae`"},"OneShotOfferwallBucket":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier this particular bucket","examples":["5ba2fe5010cc4d078fc3cc0b0cc264c3"]},"uri":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Uri","description":"The URL to send a respondent into. Must not edit this URL in any way","examples":["https://task.generalresearch.com/api/v1/52d3f63b2709/797df4136c604a6c8599818296aae6d1/?i=5ba2fe5010cc4d078fc3cc0b0cc264c3&b=test&66482fb=e7baf5e"]},"duration":{"type":"integer","maximum":5400.0,"exclusiveMinimum":0.0,"title":"Duration","description":"The bucket's expected duration, in seconds"},"min_payout":{"type":"integer","maximum":10000.0,"exclusiveMinimum":0.0,"title":"Min Payout","description":"The bucket's min payout, in usd cents"}},"additionalProperties":false,"type":"object","required":["id","uri","duration","min_payout"],"title":"OneShotOfferwallBucket"},"OneShotOfferwallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/OneShotOfferwall"}},"type":"object","required":["info","offerwall"],"title":"OneShotOfferwallResponse"},"POPFinancial":{"properties":{"product_id":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Product Id","examples":["3d350f18fdfe41f5a0e95b5e1c28733e"]},"time":{"type":"string","format":"date-time","title":"Time","description":"The starting time block for the respective 'Period' thatthis grouping is on. The `time` could be the start of a 1 minute or 1 hour block for example."},"payout":{"type":"integer","minimum":0.0,"title":"Payout","description":"The total amount (in USD cents) that the Brokerage Producthas earned within a respective time period.","default":0,"examples":[8359]},"adjustment":{"type":"integer","title":"Adjustment","description":"The total amount (in USD cents) that the Brokerage Producthas had adjusted within a respective time period. Most ofthe time, this will be negative due to Complete to Incomplete reconciliations. However, it can also be positive due to Incomplete to Complete adjustments.","examples":[1911]},"adjustment_types":{"items":{"$ref":"#/components/schemas/AdjustmentType"},"type":"array","title":"Adjustment Types"},"expense":{"type":"integer","title":"Expense","description":"For Product accounts that are setup with Respondent payouts,competitions, user bonuses, or other associated 'costs', thoseexpenses are accounted for here. This will be negative forthose types of costs."},"net":{"type":"integer","title":"Net","description":"This is the sum of the Payout total, Adjustment and any Expenses total. It can be positive or negative for any specific time period.","examples":[10270]},"payment":{"type":"integer","title":"Payment","description":"Any ACH or Wire amount that was issued between GRL and the Supplier.","examples":[3408288]}},"type":"object","required":["time","adjustment","adjustment_types","expense","net","payment"],"title":"POPFinancial","description":"We can't use our USDCent class in here because aside from it not\n supporting negative values for our adjustments, FastAPI also\n complains because it doesn't know how to generate documentation\n for it. - Max 2024-06-25"},"PatternValidation":{"properties":{"message":{"type":"string","title":"Message","description":"Message to display if validation fails"},"pattern":{"type":"string","title":"Pattern","description":"Regex string to validate. min_length and max_length are checked separately, even if they are part of the regex."}},"type":"object","required":["message","pattern"],"title":"PatternValidation"},"PayoutConfig":{"properties":{"payout_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payout Format","description":"\nThe format describing the str representation of a payout. Typically, this would be displayed to a user.\nThe payout_format is similar to python format string with a subset of functionality supported.\nOnly float with a precision are supported along with an optional comma for a thousands separator.\nIn addition, a mathematical operator can be applied, such as dividing by 100. \nExamples are shown assuming payout = 100 (one dollar).\n- \"{payout*10:,.0f} Points\" -> \"1,000 Points\"\n- \"${payout/100:.2f}\" -> \"$1.00\"\n","examples":["{payout*10:,.0f} Points","${payout/100:.2f}","{payout:.0f}"]},"payout_transformation":{"anyOf":[{"$ref":"#/components/schemas/PayoutTransformation"},{"type":"null"}],"description":"How the BP's payout is converted to the User's payout"}},"type":"object","title":"PayoutConfig","description":"Store configuration related to payouts, payout transformation, and user\npayout formatting."},"PayoutStatus":{"type":"string","enum":["PENDING","APPROVED","REJECTED","CANCELLED","FAILED","COMPLETE"],"title":"PayoutStatus","description":"The max size of the db field that holds this value is 20, so please\ndon't add new values longer than that!"},"PayoutSummary":{"properties":{"min":{"type":"integer","maximum":10000.0,"exclusiveMinimum":0.0,"title":"Min"},"max":{"type":"integer","maximum":10000.0,"exclusiveMinimum":0.0,"title":"Max"},"mean":{"anyOf":[{"type":"integer","maximum":10000.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Mean"},"q1":{"type":"integer","maximum":10000.0,"exclusiveMinimum":0.0,"title":"Q1"},"q2":{"type":"integer","maximum":10000.0,"exclusiveMinimum":0.0,"title":"Q2"},"q3":{"type":"integer","maximum":10000.0,"exclusiveMinimum":0.0,"title":"Q3"},"lower_whisker":{"type":"integer","title":"Lower Whisker","readOnly":true},"upper_whisker":{"type":"integer","title":"Upper Whisker","readOnly":true}},"type":"object","required":["min","max","q1","q2","q3","lower_whisker","upper_whisker"],"title":"PayoutSummary","description":"Payouts are in Integer USD Cents","examples":[{"max":132,"min":14,"q1":45,"q2":68,"q3":124}]},"PayoutTransformation":{"properties":{"f":{"type":"string","enum":["payout_transformation_percent","payout_transformation_amt"],"title":"F","description":"The name of the transformation function to use."},"kwargs":{"anyOf":[{"$ref":"#/components/schemas/PayoutTransformationPercentArgs"},{"type":"null"}],"description":"The kwargs to pass to the transformation function.","examples":[{"max_payout":"5.00","pct":0.5}]}},"type":"object","required":["f"],"title":"PayoutTransformation","description":"This model describe how the bp_payout is converted to the user_payout.\nIf None, the user_payout is None.\n\nIf the user_wallet_enabled is `False`, the user_payout is used to\n 1) know how to transform the expected payouts for offerwall buckets\n (if min_payout is requested, this is based on the user_payout)\n 2) show the user (using the payout_format) how much they made (in\n the Task Status Response).\nIf the user_wallet_enabled is `True`, then in addition to the above, the\n user_payout is the amount actually paid to the user's wallet."},"PayoutTransformationPercentArgs":{"properties":{"pct":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Pct","description":"The percentage of the bp_payout to pay the user","examples":[0.5]},"min_payout":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Min Payout","description":"The minimum amount paid for a complete. Note: This does not check that the actual payout was at least this amount.","examples":["0.50"]},"max_payout":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Payout","description":"The maximum amount paid for a complete","examples":["5.00"]}},"type":"object","required":["pct"],"title":"PayoutTransformationPercentArgs"},"PayoutType":{"type":"string","enum":["PAYPAL","TANGO","DWOLLA","ACH","WIRE","CASH_IN_MAIL","PRIZE","AMT","AMT_BONUS","AMT_ASSIGNMENT","AMT_ASSIGNMENT"],"title":"PayoutType","description":"The method in which the requested payout is delivered."},"PaypalCashoutMethodData":{"properties":{"type":{"type":"string","const":"PAYPAL","title":"Type","default":"PAYPAL"},"email":{"type":"string","format":"email","title":"Email","description":"Email address of the paypal user","examples":["test@example.com"]}},"type":"object","required":["email"],"title":"PaypalCashoutMethodData"},"PingMessage":{"properties":{"kind":{"type":"string","const":"ping","title":"Kind","default":"ping"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"}},"type":"object","title":"PingMessage"},"PongMessage":{"properties":{"kind":{"type":"string","const":"pong","title":"Kind","default":"pong"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"}},"type":"object","title":"PongMessage"},"Product":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier of the Brokerage Product","examples":["1108d053e4fa47c5b0dbdcd03a7981e7"]},"name":{"type":"string","maxLength":255,"minLength":3,"title":"Name","description":"Name of the Brokerage Product. Must be unique within a Team","examples":["Website ABC"]},"enabled":{"type":"boolean","title":"Enabled","description":"This is only used to hard block a Product in order to immediately & safely protect against fraud entrances.","default":true},"payments_enabled":{"type":"boolean","title":"Payments Enabled","description":"This is only to determine if ACH or Wire payments should be made to the Produce.","default":true},"created":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created","description":"When the Product was created, this does necessarily mean it started to retrieve traffic at that time."},"team_id":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Team Id","description":"The organization (group of generalresearch.com admin accounts) that is allowed to modify and manage thisProduct","examples":["b96c1209cf4a4baaa27d38082421a039"]},"business_id":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Business Id","description":"The legal business entity or individual that is responsible for this account, and that receive SupplierPayments for this Product's activity.","examples":["9b1d71aab7b84112ac936a574fadd5d6"]},"tags":{"items":{"$ref":"#/components/schemas/SupplierTag"},"type":"array","uniqueItems":true,"title":"Tags","description":"Tags which are used to annotate supplier traffic"},"commission_pct":{"type":"string","title":"Commission Pct","default":"0.05"},"redirect_url":{"type":"string","title":"Redirect Url","description":"Where to redirect the user after finishing a session. When a user get redirected back to the supplier, a query param will be added with the name 'tsid', and the value of the TSID for the session. For example: callback_uri: 'https://www.example.com/test/?a=1&b=2' might result in the user getting redirected to: 'https://www.example.com/grl-callback/?a=1&b=2&tsid=c6ab6ba1e75b44e2bf5aab00fc68e3b7'.","examples":["https://www.example.com/grl-callback/?a=1&b=2"]},"harmonizer_domain":{"type":"string","title":"Harmonizer Domain","description":"This is the domain that is used for the GRS (General Research Survey) platform. This is a simple javascript application which may profile the respondent for anyprofiling questions, along with collecting any browserbased security information. The value is a scheme+domain only (no path).","default":"https://profile.generalresearch.com/"},"sources_config":{"anyOf":[{"$ref":"#/components/schemas/SourcesConfig"},{"$ref":"#/components/schemas/SupplyConfig"}],"title":"Sources Config"},"session_config":{"$ref":"#/components/schemas/SessionConfig"},"payout_config":{"$ref":"#/components/schemas/PayoutConfig"},"user_wallet_config":{"$ref":"#/components/schemas/UserWalletConfig"},"user_create_config":{"$ref":"#/components/schemas/UserCreateConfig"},"offerwall_config":{"$ref":"#/components/schemas/OfferwallConfig"},"profiling_config":{"$ref":"#/components/schemas/ProfilingConfig"},"user_health_config":{"$ref":"#/components/schemas/UserHealthConfig"},"yield_man_config":{"$ref":"#/components/schemas/YieldManConfig"},"balance":{"anyOf":[{"$ref":"#/components/schemas/ProductBalances"},{"type":"null"}],"description":"Product Balance"},"payouts_total_str":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payouts Total Str"},"payouts_total":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Payouts Total"},"payouts":{"anyOf":[{"items":{"$ref":"#/components/schemas/BrokerageProductPayoutEvent"},"type":"array"},{"type":"null"}],"title":"Payouts","description":"Product Payouts. These are the ACH or Wire payments that were sent to theBusiness on behalf of this specific Product"},"pop_financial":{"anyOf":[{"items":{"$ref":"#/components/schemas/POPFinancial"},"type":"array"},{"type":"null"}],"title":"Pop Financial"},"bp_account":{"anyOf":[{"$ref":"#/components/schemas/LedgerAccount"},{"type":"null"}]},"user_wallet":{"$ref":"#/components/schemas/UserWalletConfig","readOnly":true}},"type":"object","required":["name","redirect_url","user_wallet"],"title":"Product"},"ProductBalances":{"properties":{"product_id":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Product Id","examples":["7bb8fd6215c1451399ac80a4a44d4044"]},"last_event":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Event"},"bp_payment_credit":{"type":"integer","minimum":0.0,"title":"Bp Payment Credit","description":"The total amount that has been earned by the Task completes, for this Brokerage Product account.","default":0,"examples":[18837]},"adjustment_credit":{"type":"integer","minimum":0.0,"title":"Adjustment Credit","description":"Positive reconciliations issued back to the Brokerage Product account.","default":0,"examples":[2]},"adjustment_debit":{"type":"integer","minimum":0.0,"title":"Adjustment Debit","description":"Negative reconciliations for any Task completes","default":0,"examples":[753]},"supplier_credit":{"type":"integer","minimum":0.0,"title":"Supplier Credit","description":"ACH or Wire amounts issued to GRL from a Supplier to recoup for a negative Brokerage Product balance","default":0,"examples":[0]},"supplier_debit":{"type":"integer","minimum":0.0,"title":"Supplier Debit","description":"ACH or Wire amounts sent to a Supplier","default":0,"examples":[10000]},"user_bonus_credit":{"type":"integer","minimum":0.0,"title":"User Bonus Credit","description":"If a respondent ever pays back an product account.","default":0,"examples":[0]},"user_bonus_debit":{"type":"integer","minimum":0.0,"title":"User Bonus Debit","description":"Pay a user into their wallet balance. There is no fee here. There is only a fee when the user requests a payout.The bonus could be as a bribe, winnings for a contest, leaderboard, etc.","default":0,"examples":[2745]},"issued_payment":{"type":"integer","minimum":0.0,"title":"Issued Payment","description":"This is the amount that we decide to credit as havingtaken from this Product. If there is any amount not issuedit is summed up over the Business to offset any negativebalances elsewhere.","default":0},"payout":{"type":"integer","title":"Task Payouts","description":"The sum amount of all Task payouts","readOnly":true,"examples":[18837]},"payout_usd_str":{"type":"string","title":"Task Payouts USD Str","readOnly":true,"examples":["$18,837.00"]},"adjustment":{"type":"integer","title":"Task Adjustments","description":"The sum amount of all Task Adjustments","readOnly":true,"examples":[-751]},"expense":{"type":"integer","title":"Product Expenses","description":"The sum amount of any associated Product Expenses (eg: user bonuses)","readOnly":true,"examples":[-2745]},"net":{"type":"integer","title":"Net Earnings","description":"The Product's Net Earnings which is equal to the totalamount of Task Payouts, with Task Adjustments and anyProduct Expenses deducted. This can be positive ornegative.","readOnly":true,"examples":[15341]},"payment":{"type":"integer","minimum":0.0,"title":"Supplier Payments","description":"The sum amount of all Supplier Payments (eg ACH or Wire transfers)","readOnly":true,"examples":[10000]},"payment_usd_str":{"type":"string","title":"Supplier Payments","readOnly":true,"examples":["$10,000"]},"balance":{"type":"integer","title":"Product Balance","description":"The Product's Balance which is equal to the Product's Netamount with already issued Supplier Payments deducted. This can be positive or negative.","readOnly":true,"examples":[5341]},"retainer":{"type":"integer","minimum":0.0,"title":"Smart Retainer","description":"The Smart Retainer is an about of money that is held byGRL to account for any Task Adjustments that may occurin the future. The amount will always be positive, andif the Product's balance is negative, the retainer will be $0.00 as the Product is not eligible for any SupplierPayments either way.","readOnly":true,"examples":[1335]},"retainer_usd_str":{"type":"string","title":"Smart Retainer USD Str","readOnly":true,"examples":["$1,335.00"]},"available_balance":{"type":"integer","minimum":0.0,"title":"Available Balance","description":"The Available Balance is the amount that is currently, andimmediately available for withdraw from the Supplier'sbalance. Supplier Payments are made every Friday for Businesses with an ACH connected Bank Account to GRL, while a Business that requires an International Wire are issued on the last Friday of every Month.","readOnly":true,"examples":[4006]},"available_balance_usd_str":{"type":"string","title":"Available Balance USD Str","readOnly":true,"examples":["$4,006.00"]},"recoup":{"type":"integer","minimum":0.0,"title":"Recoup","readOnly":true,"examples":[282]},"recoup_usd_str":{"type":"string","title":"Recoup Str","readOnly":true,"examples":["$2.04"]},"adjustment_percent":{"type":"number","title":"Adjustment Percentage","description":"The percentage of USDCent value that has been adjustedover all time for this Product.","readOnly":true,"examples":[0.064938]}},"type":"object","required":["payout","payout_usd_str","adjustment","expense","net","payment","payment_usd_str","balance","retainer","retainer_usd_str","available_balance","available_balance_usd_str","recoup","recoup_usd_str","adjustment_percent"],"title":"ProductBalances"},"ProfilingConfig":{"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"If False, the harmonizer/profiling system is not used at all. This should never be False unless special circumstances","default":true},"grs_enabled":{"type":"boolean","title":"Grs Enabled","description":"If grs_enabled is False, and is_grs is passed in the profiling-questions call, \n then don't actually return any questions. This allows a client to hit the endpoint with no limit \n and still get questions. In effect, this means that we'll redirect the user through the GRS\n system but won't present them any questions.","default":true},"n_questions":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"N Questions","description":"Use to hard code the number of questions to ask. None means use default algorithm."},"max_questions":{"type":"integer","exclusiveMinimum":0.0,"title":"Max Questions","description":"The max number of questions we would ask in a session","default":10},"avg_question_count":{"type":"number","exclusiveMinimum":0.0,"title":"Avg Question Count","description":"The average number of questions to ask in a session","default":5},"task_injection_freq_mult":{"type":"number","exclusiveMinimum":0.0,"title":"Task Injection Freq Mult","description":"Scale how frequently we inject profiling questions, relative to the default.1 is default, 2 is twice as often. 10 means always. 0.5 half as often","default":1},"non_us_mult":{"type":"number","exclusiveMinimum":0.0,"title":"Non Us Mult","description":"Non-us multiplier, used to increase freq and length of profilers in all non-us countries.This value is multiplied by task_injection_freq_mult and avg_question_count.","default":2},"hidden_questions_expiration_hours":{"type":"integer","exclusiveMinimum":0.0,"title":"Hidden Questions Expiration Hours","description":"How frequently we should refresh hidden questions","default":168}},"type":"object","title":"ProfilingConfig"},"ProfilingInfoResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"profiling-info":{"items":{"$ref":"#/components/schemas/UpkProperty"},"type":"array","title":"Profiling-Info"}},"type":"object","required":["status","profiling-info"],"title":"ProfilingInfoResponse"},"PropertyType":{"type":"string","enum":["i","n","x"],"title":"PropertyType"},"RaffleUserView":{"properties":{"name":{"type":"string","maxLength":128,"title":"Name","description":"Name of contest. Can be displayed to user."},"description":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Description","description":"Description of contest. Can be displayed to user."},"contest_type":{"type":"string","const":"raffle","title":"Contest Type","default":"raffle"},"end_condition":{"$ref":"#/components/schemas/ContestEndCondition"},"prizes":{"items":{"$ref":"#/components/schemas/ContestPrize"},"type":"array","minItems":1,"title":"Prizes"},"starts_at":{"type":"string","format":"date-time","title":"Starts At","description":"When the contest starts"},"terms_and_conditions":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Terms And Conditions"},"status":{"$ref":"#/components/schemas/ContestStatus","default":"active"},"country_isos":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Isos","description":"Contest is restricted to these countries. If null, all countries are allowed"},"uuid":{"type":"string","maxLength":32,"minLength":32,"title":"Uuid"},"product_id":{"type":"string","maxLength":32,"minLength":32,"title":"Product Id","description":"Contest applies only to a single BP"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When this contest was created"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When this contest was last modified. Does not include entries being created/modified"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At","description":"When the contest ended"},"end_reason":{"anyOf":[{"$ref":"#/components/schemas/ContestEndReason"},{"type":"null"}],"description":"The reason the contest ended"},"product_user_id":{"type":"string","title":"Product User Id"},"user_winnings":{"items":{"$ref":"#/components/schemas/ContestWinner"},"type":"array","title":"User Winnings","description":"The prizes won in this contest by the requested user"},"entry_type":{"type":"string","const":"cash","title":"Entry Type","default":"cash"},"entry_rule":{"$ref":"#/components/schemas/ContestEntryRule"},"current_amount":{"anyOf":[{"type":"integer"},{"type":"integer","minimum":0.0}],"title":"Current Amount","description":"Sum of all entry amounts","default":0},"current_participants":{"type":"integer","title":"Current Participants","description":"Count of unique participants","default":0},"user_amount":{"anyOf":[{"type":"integer"},{"type":"integer","minimum":0.0}],"title":"User Amount","description":"The total amount this user has entered"},"user_amount_today":{"anyOf":[{"type":"integer"},{"type":"integer","minimum":0.0}],"title":"User Amount Today","description":"The total amount this user has entered in the past 24 hours"},"current_win_probability":{"type":"number","title":"Current Win Probability","description":"Probability of this user winning 1 or more prizes, if the contestended right now","readOnly":true},"projected_win_probability":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Projected Win Probability","description":"Probability of this user winning 1 or more prizes, once the contestis projected to end. This value is only calculated if the contest has a target_entry_amountend condition.","readOnly":true}},"additionalProperties":false,"type":"object","required":["name","end_condition","product_id","product_user_id","user_amount","user_amount_today","current_win_probability","projected_win_probability"],"title":"RaffleUserView","example":{"contest_type":"raffle","country_isos":"ca,us","created_at":"2025-06-12T21:12:58.061205Z","current_amount":4723,"current_participants":12,"current_win_probability":0.0889265297480415,"description":"iPhone winner will be drawn in proportion to entry amount. Contest ends once $800 has been entered.","end_condition":{"target_entry_amount":80000},"entry_rule":{"max_daily_entries_per_user":1000,"max_entry_amount_per_user":10000},"entry_type":"cash","name":"Win an iPhone","prizes":[{"estimated_cash_value":80000,"kind":"physical","name":"iPhone 16"}],"product_id":"1108d053e4fa47c5b0dbdcd03a7981e7","product_user_id":"test-user","projected_win_probability":0.005249999999999977,"starts_at":"2025-06-12T21:12:58.061170Z","status":"active","updated_at":"2025-06-12T21:12:58.061205Z","user_amount":420,"user_amount_today":0,"user_winnings":[],"uuid":"ce3968b8e18a4b96af62007f262ed7f7"}},"RedemptionCurrency":{"type":"string","enum":["USD","CAD","GBP","EUR","INR","AUD","PLN","SEK","SGD","MXN"],"title":"RedemptionCurrency","description":"Supported Currencies for Foreign Redemptions"},"ReportTask":{"properties":{"bpuid":{"type":"string","maxLength":128,"minLength":3,"title":"product_user_id","description":"The unique identifier for the user, which is set by the Supplier.","examples":["app-user-9329ebd"]},"reasons":{"items":{"$ref":"#/components/schemas/ReportValue"},"type":"array","title":"Reasons","description":"The reason a user reported a task.\n\nAllowed values: \n - __0__ *(REASON_UNKNOWN)*: Used to indicate the user exited the task without giving feedback\n - __1__ *(TECHNICAL_ERROR)*: Task is in the wrong language/country, unanswerable question, won't proceed to next question, loading forever, error message\n - __2__ *(NO_REDIRECT)*: Task ended (completed or failed, and showed the user some dialog indicating the task was over), but failed to redirect\n - __3__ *(PRIVACY_INVASION)*: Asked for full name, home address, identity on another site, cc\n - __4__ *(UNCOMFORTABLE_TOPICS)*: Asked about children, employer, medical issues, drug use, STDs, etc.\n - __5__ *(ASKED_FOR_NOT_ALLOWED_ACTION)*: Asked to install software, signup/login to external site, access webcam, promise to pay using external site, etc.\n - __6__ *(BAD_ON_MOBILE)*: Task doesn't work well on a mobile device\n - __7__ *(DIDNT_LIKE)*: Too long, too boring, confusing, complicated, too many open-ended/free-response questions","examples":[[3,4]]},"notes":{"type":"string","title":"Notes","default":"","examples":["The survey wanted to watch me eat Haejang-guk"]}},"additionalProperties":false,"type":"object","required":["bpuid"],"title":"ReportTask"},"ReportValue":{"type":"integer","enum":[0,1,2,3,4,5,6,7],"title":"ReportValue","description":"The reason a user reported a task."},"Scope":{"type":"string","enum":["global","team","product"],"title":"Scope"},"SessionAdjustedStatus":{"type":"string","enum":["ac","af","pa"],"title":"SessionAdjustedStatus","description":"An adjusted_status is set if a session is adjusted by the marketplace\nafter the original return. A session can be adjusted multiple times.\nThis is the most recent status. If a session was originally a complete,\nwas adjusted to incomplete, then back to complete, the adjusted_status\nwill be None, but the adjusted_timestamp will be set to the most recent\nchange."},"SessionConfig":{"properties":{"max_session_len":{"type":"integer","maximum":5400.0,"minimum":60.0,"title":"Max Session Len","description":"The amount of time (in seconds) that a respondent may spend attempting to get into a survey within a session.If NULL, there is no limit.","default":600},"max_session_hard_retry":{"type":"integer","minimum":0.0,"title":"Max Session Hard Retry","description":"The number of surveys that a respondent may attempt within a session before the session is terminated.","default":5},"min_payout":{"type":"string","title":"Min Payout","description":"The minimum amount the user should be paid for a complete. If \n no payout transformation is defined, the value is based on the BP's payout. \n If a payout transformation is defined, the min_payout is applied on the \n user's payout. Note, this is separate and distinct from the payout \n transformation's min payout. The payout transformation's min_payout does not \n care what the task's actual payout was. This min_payout will prevent\n the user from being show any tasks that would pay below this amount.","default":"0.14","examples":["0.50"]}},"type":"object","title":"SessionConfig","description":"Stores configuration related to the Session, a session being a users\nexperience attempting to do work."},"SessionEnterPayload":{"properties":{"event_type":{"type":"string","const":"session.enter","title":"Event Type","default":"session.enter"},"country_iso":{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$","title":"Country Iso"}},"type":"object","required":["country_iso"],"title":"SessionEnterPayload"},"SessionFinishPayload":{"properties":{"event_type":{"type":"string","const":"session.finish","title":"Event Type","default":"session.finish"},"country_iso":{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$","title":"Country Iso"},"duration_sec":{"type":"number","exclusiveMinimum":0.0,"title":"Duration Sec"},"status":{"$ref":"#/components/schemas/Status"},"status_code_1":{"anyOf":[{"$ref":"#/components/schemas/StatusCode1"},{"type":"null"}]},"status_code_2":{"anyOf":[{"$ref":"#/components/schemas/SessionStatusCode2"},{"type":"null"}]},"user_payout":{"anyOf":[{"type":"integer","maximum":4000.0,"minimum":0.0},{"type":"null"}],"title":"User Payout"}},"type":"object","required":["country_iso","duration_sec","status"],"title":"SessionFinishPayload"},"SessionStatusCode2":{"type":"integer","enum":[1,2,3,4,5,6,7,8,9,10,11,12,13],"title":"SessionStatusCode2","description":"__Status Detail__\nThis should be set if the Session.status_code_1 is SESSION_XXX_FAIL"},"ShippingCarrier":{"type":"string","enum":["USPS","FedEx","UPS","DHL"],"title":"ShippingCarrier"},"ShippingMethod":{"type":"string","enum":["Standard","Express","Two-Day","Overnight","Same Day"],"title":"ShippingMethod"},"SingleEntryBucket":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier this particular bucket","examples":["5ba2fe5010cc4d078fc3cc0b0cc264c3"]},"uri":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Uri","description":"The URL to send a respondent into. Must not edit this URL in any way","examples":["https://task.generalresearch.com/api/v1/52d3f63b2709/797df4136c604a6c8599818296aae6d1/?i=5ba2fe5010cc4d078fc3cc0b0cc264c3&b=test&66482fb=e7baf5e"]}},"additionalProperties":false,"type":"object","required":["id","uri"],"title":"SingleEntryBucket"},"SingleEntryOfferWall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/SingleEntryBucket"},"type":"array","maxItems":1,"title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]},"payout_format":{"type":"string","title":"Payout Format","description":"\nThe format describing the str representation of a payout. Typically, this would be displayed to a user.\nThe payout_format is similar to python format string with a subset of functionality supported.\nOnly float with a precision are supported along with an optional comma for a thousands separator.\nIn addition, a mathematical operator can be applied, such as dividing by 100. \nExamples are shown assuming payout = 100 (one dollar).\n- \"{payout*10:,.0f} Points\" -> \"1,000 Points\"\n- \"${payout/100:.2f}\" -> \"$1.00\"\n","examples":["{payout*10:,.0f} Points","${payout/100:.2f}","{payout:.0f}"]}},"additionalProperties":false,"type":"object","required":["id","availability_count","payout_format"],"title":"SingleEntryOfferWall","description":"Only returns a single bucket with the top scoring tasks.\n\nOfferwall code: `5fl8bpv5`"},"SingleEntryOfferWallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/SingleEntryOfferWall"}},"type":"object","required":["info","offerwall"],"title":"SingleEntryOfferWallResponse"},"SoftPairBucket":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier this particular bucket","examples":["5ba2fe5010cc4d078fc3cc0b0cc264c3"]},"uri":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Uri","description":"The URL to send a respondent into. Must not edit this URL in any way. If the eligibility is conditional or ineligible, the uri will be null.","examples":[null]},"category":{"items":{"$ref":"#/components/schemas/CategoryAssociation"},"type":"array","title":"Category"},"contents":{"items":{"$ref":"#/components/schemas/BucketTask"},"type":"array","title":"Contents"},"eligibility":{"type":"string","enum":["conditional","unconditional","ineligible"],"title":"Eligibility","examples":["conditional"]},"missing_questions":{"items":{"type":"string"},"type":"array","title":"Missing Questions","examples":[["fb20fd4773304500b39c4f6de0012a5a"]]},"loi":{"type":"integer","title":"Loi","description":"this is the max loi of the contents","examples":[612]},"payout":{"type":"integer","title":"Payout","description":"this is the min payout of the contents","examples":[123]}},"additionalProperties":false,"type":"object","required":["id","uri","contents","eligibility","loi","payout"],"title":"SoftPairBucket"},"SoftPairOfferwall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/SoftPairBucket"},"type":"array","title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]},"question_info":{"additionalProperties":{"$ref":"#/components/schemas/UpkQuestion"},"type":"object","title":"Question Info","examples":[]}},"additionalProperties":false,"type":"object","required":["id","availability_count"],"title":"SoftPairOfferwall","description":"This offerwall contains tasks for which the user has a conditional\neligibility. The questions that a user must answer to determine the\neligibility are included within each bucket. Additionally, the question\ndefinitions are included for convenience.\n\nOfferwall code: `37d1da64`"},"SoftPairOfferwallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/SoftPairOfferwall"}},"type":"object","required":["info","offerwall"],"title":"SoftPairOfferwallResponse"},"Source":{"type":"string","enum":["g","c","a","d","et","f","i","l","m","n","o","e","r","pr","p","rd","h","s","t","u","w"],"title":"Source"},"SourceConfig":{"properties":{"name":{"$ref":"#/components/schemas/Source"},"active":{"type":"boolean","title":"Active","default":true},"banned_countries":{"items":{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$"},"type":"array","title":"Banned Countries"},"allow_mobile_ip":{"type":"boolean","title":"Allow Mobile Ip","default":true},"allow_pii_only_buyers":{"type":"boolean","title":"Allow Pii Only Buyers","description":"Allow Tasks from Buyers that want traffic that comes from Suppliers that can identify their users. Only supported on Pure Spectrum.","default":false},"allow_unhashed_buyers":{"type":"boolean","title":"Allow Unhashed Buyers","description":"Return Tasks from Buyers that don't have URL hashing enabled. Only supported on Pure Spectrum.","default":false},"withhold_profiling":{"type":"boolean","title":"Withhold Profiling","description":"For some Products, we may have privacy agreements prohibiting us from sharing information with the inventorySource. If True, don't add MRPQ (Market Research ProfilingQuestion) onto the entry link.","default":false},"pass_unconditional_eligible_unknowns":{"type":"boolean","title":"Pass Unconditional Eligible Unknowns","description":"Not used at the moment","default":true}},"type":"object","required":["name"],"title":"SourceConfig","description":"This could also be named \"BP:Marketplace Config\", as it describes the config\nfor a BP on a single marketplace."},"SourcesConfig":{"properties":{"user_defined":{"items":{"$ref":"#/components/schemas/SourceConfig"},"type":"array","title":"User Defined"}},"type":"object","title":"SourcesConfig","description":"Describes the marketplaces or sources that a BP can access and their respective configs,\naka 'BP:Marketplace Configs'"},"StarwallOfferWall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/TopNBucket"},"type":"array","title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]},"payout_format":{"type":"string","title":"Payout Format","description":"\nThe format describing the str representation of a payout. Typically, this would be displayed to a user.\nThe payout_format is similar to python format string with a subset of functionality supported.\nOnly float with a precision are supported along with an optional comma for a thousands separator.\nIn addition, a mathematical operator can be applied, such as dividing by 100. \nExamples are shown assuming payout = 100 (one dollar).\n- \"{payout*10:,.0f} Points\" -> \"1,000 Points\"\n- \"${payout/100:.2f}\" -> \"$1.00\"\n","examples":["{payout*10:,.0f} Points","${payout/100:.2f}","{payout:.0f}"]}},"additionalProperties":false,"type":"object","required":["id","availability_count","payout_format"],"title":"StarwallOfferWall","description":"An offerwall with buckets that are clustered by setting as seeds the\nhighest scoring surveys for each bin, then the rest are distributed\naccording to their Euclidean distance using the bucket's features.\n\nOfferwall code: `b59a2d2b`"},"StarwallOfferWallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/StarwallOfferWall"}},"type":"object","required":["info","offerwall"],"title":"StarwallOfferWallResponse"},"StarwallPlusBlockOfferWall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/TopNPlusBucket"},"type":"array","title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]}},"additionalProperties":false,"type":"object","required":["id","availability_count"],"title":"StarwallPlusBlockOfferWall","description":"Same as the StarwallOfferWall, but the buckets include contents and no\nbuckets are returned if the user is blocked.\n\nOfferwall code: `7fa1b3f4`"},"StarwallPlusBlockOfferWallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/StarwallPlusBlockOfferWall"}},"type":"object","required":["info","offerwall"],"title":"StarwallPlusBlockOfferWallResponse"},"StarwallPlusBlockRecontactOfferWall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/TopNPlusRecontactBucket"},"type":"array","title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]}},"additionalProperties":false,"type":"object","required":["id","availability_count"],"title":"StarwallPlusBlockRecontactOfferWall","description":"Same as the StarwallOfferWall, but the buckets include contents, no\nbuckets are returned if the user is blocked, and each bucket includes\na recontact key.\n\nOfferwall code: `630db2a4`"},"StarwallPlusBlockRecontactOfferWallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/StarwallPlusBlockRecontactOfferWall"}},"type":"object","required":["info","offerwall"],"title":"StarwallPlusBlockRecontactOfferWallResponse"},"StarwallPlusOfferWall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/TopNPlusBucket"},"type":"array","title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]}},"additionalProperties":false,"type":"object","required":["id","availability_count"],"title":"StarwallPlusOfferWall","description":"Same as the StarwallOfferWall, but the buckets include contents.\n\nOfferwall code: `5481f322`"},"StarwallPlusOfferWallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/StarwallPlusOfferWall"}},"type":"object","required":["info","offerwall"],"title":"StarwallPlusOfferWallResponse"},"StatisticalSummaryStat":{"properties":{"facet":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}]},"propertyNames":{"enum":["country_iso","day","month"]},"type":"object","title":"Facet","description":"The grouping criteria","examples":[{"country_iso":"us"}]},"value":{"$ref":"#/components/schemas/StatisticalSummaryValue","description":"Statistical Summary for the given metric and facet"}},"type":"object","required":["facet","value"],"title":"StatisticalSummaryStat"},"StatisticalSummaryValue":{"properties":{"min":{"type":"number","title":"Min"},"max":{"type":"number","title":"Max"},"mean":{"type":"number","title":"Mean"},"q1":{"type":"number","title":"Q1"},"q2":{"type":"number","title":"Q2","description":"equal to the median"},"q3":{"type":"number","title":"Q3"},"lower_whisker":{"type":"number","title":"Lower Whisker","readOnly":true},"upper_whisker":{"type":"number","title":"Upper Whisker","readOnly":true}},"type":"object","required":["min","max","mean","q1","q2","q3","lower_whisker","upper_whisker"],"title":"StatisticalSummaryValue"},"StatsMessage":{"properties":{"kind":{"type":"string","const":"stats","title":"Kind","default":"stats"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"country_iso":{"anyOf":[{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$"},{"type":"null"}],"title":"Country Iso"},"data":{"$ref":"#/components/schemas/StatsSnapshot"}},"type":"object","required":["data"],"title":"StatsMessage"},"StatsSnapshot":{"properties":{"live_task_count":{"$ref":"#/components/schemas/AggregateBySource"},"task_created_count_last_1h":{"$ref":"#/components/schemas/AggregateBySource"},"task_created_count_last_24h":{"$ref":"#/components/schemas/AggregateBySource"},"live_tasks_max_payout":{"$ref":"#/components/schemas/MaxGaugeBySource","description":"In integer USDCents"},"country_iso":{"anyOf":[{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$"},{"type":"null"}],"title":"Country Iso"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"active_users_last_1h":{"type":"integer","minimum":0.0,"title":"Active Users Last 1H","description":"Count of users (in this product_id) that were active in the past 60 minutes.\n Behaviors that trigger active:\n - Request an offerwall\n - Enter an offerwall bucket\n - Request profiling questions\n - Submit profiling answers\n - Update user profile\n ","default":0},"active_users_last_24h":{"type":"integer","minimum":0.0,"title":"Active Users Last 24H","description":"Count of users (in this product_id) that were active in the past 24 hours.","default":0},"in_progress_users":{"type":"integer","minimum":0.0,"title":"In Progress Users","description":"Count of users that are currently doing work at this moment"},"signups_last_24h":{"type":"integer","minimum":0.0,"title":"Signups Last 24H","description":"Count of users created"},"session_enters_last_1h":{"type":"integer","minimum":0.0,"title":"Session Enters Last 1H"},"session_enters_last_24h":{"type":"integer","minimum":0.0,"title":"Session Enters Last 24H"},"session_fails_last_1h":{"type":"integer","minimum":0.0,"title":"Session Fails Last 1H"},"session_fails_last_24h":{"type":"integer","minimum":0.0,"title":"Session Fails Last 24H"},"session_completes_last_1h":{"type":"integer","minimum":0.0,"title":"Session Completes Last 1H"},"session_completes_last_24h":{"type":"integer","minimum":0.0,"title":"Session Completes Last 24H"},"sum_payouts_last_1h":{"type":"integer","minimum":0.0,"title":"Sum Payouts Last 1H","description":"In integer USDCents"},"sum_payouts_last_24h":{"type":"integer","minimum":0.0,"title":"Sum Payouts Last 24H","description":"In integer USDCents"},"session_avg_payout_last_24h":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Session Avg Payout Last 24H","description":"Average (actual) payout of all tasks completed in the past 24 hrs"},"session_avg_user_payout_last_24h":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Session Avg User Payout Last 24H","description":"Average (actual) user payout of all tasks completed in the past 24 hrs"},"session_fail_avg_loi_last_24h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Session Fail Avg Loi Last 24H","description":"Average LOI of all tasks terminated in the past 24 hrs (excludes abandons)"},"session_complete_avg_loi_last_24h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Session Complete Avg Loi Last 24H","description":"Average LOI of all tasks completed in the past 24 hrs"}},"type":"object","required":["in_progress_users","signups_last_24h","session_enters_last_1h","session_enters_last_24h","session_fails_last_1h","session_fails_last_24h","session_completes_last_1h","session_completes_last_24h","sum_payouts_last_1h","sum_payouts_last_24h","session_avg_payout_last_24h","session_avg_user_payout_last_24h","session_fail_avg_loi_last_24h","session_complete_avg_loi_last_24h"],"title":"StatsSnapshot"},"Status":{"type":"string","enum":["c","f","a","t"],"title":"Status","description":"The outcome of a session or wall event. If the session is still in progress, the status will be NULL."},"StatusCode1":{"type":"integer","enum":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],"title":"StatusCode1","description":"__High level status code for outcome of the session.__\nThis should only be NULL if the Status is ABANDON or TIMEOUT"},"StatusInfoResponseFail":{"properties":{"info":{"$ref":"#/components/schemas/StatusSuccessFail"},"msg":{"type":"string","title":"Msg","description":"An optional message, if success is False","examples":["An error has occurred"]}},"type":"object","required":["info","msg"],"title":"StatusInfoResponseFail"},"StatusResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]}},"type":"object","required":["status"],"title":"StatusResponse"},"StatusResponseFailure":{"properties":{"status":{"type":"string","const":"failure","title":"Status","description":"The status of the API response.","examples":["failure"]},"msg":{"type":"string","title":"Msg","description":"An optional message, if the status is failure.","examples":["An error has occurred"]}},"type":"object","required":["status","msg"],"title":"StatusResponseFailure"},"StatusSuccessFail":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the API response is successful.","default":false}},"type":"object","title":"StatusSuccessFail"},"StreakFulfillment":{"type":"string","enum":["active","complete"],"title":"StreakFulfillment","description":"What has to happen for a user to fulfill a period for a streak"},"StreakPeriod":{"type":"string","enum":["day","week","month"],"title":"StreakPeriod"},"StreakState":{"type":"string","enum":["active","at_risk","broken"],"title":"StreakState"},"SubscribeMessage":{"properties":{"kind":{"type":"string","const":"subscribe","title":"Kind","default":"subscribe"},"product_id":{"type":"string","maxLength":32,"minLength":32,"title":"Product Id","examples":["4fe381fb7186416cb443a38fa66c6557"]}},"type":"object","required":["product_id"],"title":"SubscribeMessage"},"SupplierTag":{"type":"string","enum":["mobile","js-offerwall","double-opt-in","single-sign-on","phone-number-verified","test-a","test-b"],"title":"SupplierTag","description":"Available tags which can be used to annotate supplier traffic\n\nNote: should not include commas!"},"SupplyConfig":{"properties":{"policies":{"items":{"$ref":"#/components/schemas/SupplyPolicy"},"type":"array","title":"Policies"}},"type":"object","title":"SupplyConfig","description":"Describes the set of policies for how GRL can interact with marketplaces.\nThis is only used on the special \"global product\"."},"SupplyPolicy":{"properties":{"name":{"$ref":"#/components/schemas/Source"},"active":{"type":"boolean","title":"Active","default":true},"banned_countries":{"items":{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$"},"type":"array","title":"Banned Countries"},"allow_mobile_ip":{"type":"boolean","title":"Allow Mobile Ip","default":true},"allow_pii_only_buyers":{"type":"boolean","title":"Allow Pii Only Buyers","description":"Allow Tasks from Buyers that want traffic that comes from Suppliers that can identify their users. Only supported on Pure Spectrum.","default":false},"allow_unhashed_buyers":{"type":"boolean","title":"Allow Unhashed Buyers","description":"Return Tasks from Buyers that don't have URL hashing enabled. Only supported on Pure Spectrum.","default":false},"withhold_profiling":{"type":"boolean","title":"Withhold Profiling","description":"For some Products, we may have privacy agreements prohibiting us from sharing information with the inventorySource. If True, don't add MRPQ (Market Research ProfilingQuestion) onto the entry link.","default":false},"pass_unconditional_eligible_unknowns":{"type":"boolean","title":"Pass Unconditional Eligible Unknowns","description":"Not used at the moment","default":true},"address":{"items":{"type":"string"},"type":"array","title":"Address","description":"address for the grpc GetOpps call"},"allow_vpn":{"type":"boolean","title":"Allow Vpn","default":false},"distribute_harmonizer_active":{"type":"boolean","title":"Distribute Harmonizer Active","default":true},"supplier_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Supplier Id","description":"For some inventory Sources, we may partition traffic using different supplier accounts instead"},"team_ids":{"anyOf":[{"items":{"type":"string","maxLength":32,"minLength":32},"type":"array"},{"type":"null"}],"title":"Team Ids"},"product_ids":{"anyOf":[{"items":{"type":"string","maxLength":32,"minLength":32},"type":"array"},{"type":"null"}],"title":"Product Ids"},"integration_mode":{"$ref":"#/components/schemas/IntegrationMode","default":"platform"},"scope":{"$ref":"#/components/schemas/Scope","description":"There must be only 1 GLOBAL config per Source. We can have more than one TEAM/PRODUCT config per Source.","readOnly":true}},"type":"object","required":["name","address","scope"],"title":"SupplyPolicy","description":"One policy describing how GRL can interact with a marketplaces in a certain way.\n This is only used on the special \"global product\", and then internally\n in grpc logic."},"SurveyEligibilityCriterion":{"properties":{"question_id":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Question Id","examples":["71a367fb71b243dc89f0012e0ec91749"]},"property_code":{"anyOf":[{"type":"string","maxLength":64,"minLength":3,"pattern":"^[a-z]{1,2}\\:.*"},{"type":"null"}],"title":"Property Code","examples":["c:73629"]},"question_text":{"type":"string","title":"Question Text","examples":["What company administers the retirement plan for your current employer?"]},"qualifying_answer":{"items":{"type":"string"},"type":"array","title":"Qualifying Answer","description":"User answer(s) that satisfied at least one eligibility rule","examples":["121"]},"qualifying_answer_label":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Qualifying Answer Label","examples":["Fidelity Investments"]},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation","description":"Human-readable text explaining how a user's answer to this question affects eligibility","examples":["The company that administers your employer's retirement plan is **Fidelity Investments**."]},"rank":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Rank","description":"Lower values are shown more prominently in the UI"}},"type":"object","required":["question_id","property_code","question_text","qualifying_answer","qualifying_answer_label"],"title":"SurveyEligibilityCriterion","description":"Explanatory record of which question answers contributed\n to a user's eligibility for a survey.\nThis is INSUFFICIENT for determining eligibility to a task\n as it IGNORES logical operators, dependencies between criteria,\n and other requirements. It is only intended for the UI."},"TangoCashoutMethodData":{"properties":{"type":{"type":"string","const":"TANGO","title":"Type","default":"TANGO"},"utid":{"type":"string","title":"Utid","description":"tango utid"},"countries":{"items":{"type":"string"},"type":"array","title":"Countries"},"value_type":{"type":"string","enum":["variable","fixed"],"title":"Value Type"},"disclaimer":{"type":"string","title":"Disclaimer","default":""},"terms":{"type":"string","title":"Terms","default":""}},"type":"object","required":["utid","countries","value_type"],"title":"TangoCashoutMethodData"},"TaskEnterPayload":{"properties":{"event_type":{"type":"string","const":"task.enter","title":"Event Type","default":"task.enter"},"source":{"$ref":"#/components/schemas/Source"},"survey_id":{"type":"string","maxLength":32,"minLength":1,"title":"Survey Id","examples":["127492892"]},"quota_id":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Quota Id","description":"The marketplace's internal quota id"},"country_iso":{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$","title":"Country Iso"}},"type":"object","required":["source","survey_id","country_iso"],"title":"TaskEnterPayload"},"TaskFinishPayload":{"properties":{"event_type":{"type":"string","const":"task.finish","title":"Event Type","default":"task.finish"},"source":{"$ref":"#/components/schemas/Source"},"survey_id":{"type":"string","maxLength":32,"minLength":1,"title":"Survey Id","examples":["127492892"]},"quota_id":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Quota Id","description":"The marketplace's internal quota id"},"country_iso":{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$","title":"Country Iso"},"duration_sec":{"type":"number","exclusiveMinimum":0.0,"title":"Duration Sec"},"status":{"$ref":"#/components/schemas/Status"},"status_code_1":{"anyOf":[{"$ref":"#/components/schemas/StatusCode1"},{"type":"null"}]},"status_code_2":{"anyOf":[{"$ref":"#/components/schemas/WallStatusCode2"},{"type":"null"}]},"cpi":{"anyOf":[{"type":"integer","maximum":4000.0,"minimum":0.0},{"type":"null"}],"title":"Cpi"}},"type":"object","required":["source","survey_id","country_iso","duration_sec","status"],"title":"TaskFinishPayload"},"TaskStatusResponse":{"properties":{"tsid":{"type":"string","maxLength":32,"minLength":32,"title":"Tsid","description":"A unique identifier for the session","examples":["a3848e0a53d64f68a74ced5f61b6eb68"]},"product_id":{"type":"string","maxLength":32,"minLength":32,"title":"Product Id","description":"The BP ID of the associated respondent","examples":["1188cb21cb6741d79f614f6d02e9bc2a"]},"product_user_id":{"type":"string","maxLength":128,"minLength":3,"title":"Product User Id","description":"A unique identifier for each user, which is set by the Supplier","examples":["app-user-9329ebd"]},"started":{"type":"string","format":"date-time","title":"Started","description":"When the session was started"},"finished":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished","description":"When the session was finished"},"status":{"type":"integer","description":"The outcome of a session.\n - 0 - UNKNOWN\n - 1 - ENTER (the user has not yet returned)\n - 2 - INCOMPLETE (the user failed)\n - 3 - COMPLETE (the user completed the task)","examples":[3]},"payout":{"anyOf":[{"type":"integer","exclusiveMaximum":100000.0,"minimum":0.0},{"type":"null"}],"title":"Payout","description":"The amount paid to the supplier, in integer USD cents","examples":[500]},"user_payout":{"anyOf":[{"type":"integer","exclusiveMaximum":100000.0,"minimum":0.0},{"type":"null"}],"title":"User Payout","description":"If a payout transformation is configured on this account, this is the amount the user should earn, in integer USD cents","examples":[337]},"payout_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payout Format","description":"\nThe format describing the str representation of a payout. Typically, this would be displayed to a user.\nThe payout_format is similar to python format string with a subset of functionality supported.\nOnly float with a precision are supported along with an optional comma for a thousands separator.\nIn addition, a mathematical operator can be applied, such as dividing by 100. \nExamples are shown assuming payout = 100 (one dollar).\n- \"{payout*10:,.0f} Points\" -> \"1,000 Points\"\n- \"${payout/100:.2f}\" -> \"$1.00\"\n","examples":["{payout*10:,.0f} Points","${payout/100:.2f}","{payout:.0f}"]},"user_payout_string":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Payout String","description":"If a payout transformation is configured on this account, this is the amount to display to the user","examples":["3370 Points"]},"kwargs":{"additionalProperties":{"type":"string"},"type":"object","title":"Kwargs","description":"Any extra url params used in the offerwall request will be passed back here"},"status_code_1":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"__High level status code for outcome of the session.__\nThis should only be NULL if the Status is ABANDON or TIMEOUT\n\nAllowed values: \n - __BUYER_FAIL__: User terminated in buyer survey\n - __BUYER_QUALITY_FAIL__: User terminated in buyer survey for quality reasons\n - __PS_FAIL__: User failed in marketplace's prescreener\n - __PS_QUALITY__: User rejected by marketplace for quality reasons\n - __PS_BLOCKED__: User is explicitly blocked by the marketplace. Note: on some marketplaces, users can have multiple PS_QUALITY terminations and still complete surveys.\n - __PS_OVERQUOTA__: User rejected by marketplace for over quota\n - __PS_DUPLICATE__: User rejected by marketplace for duplicate\n - __GRS_FAIL__: The user failed within the GRS Platform\n - __GRS_QUALITY_FAIL__: The user failed within the GRS Platform for quality reasons\n - __GRS_ABANDON__: The user abandoned/timed out within the GRS Platform\n - __PS_ABANDON__: The user abandoned/timed out within the marketplace's pre-screen system. Note: On most marketplaces, we have no way of distinguishing between this and BUYER_ABANDON. BUYER_ABANDON is used as the default, unless we know it is PS_ABANDON.\n - __BUYER_ABANDON__: The user abandoned/timed out within the client survey\n - __UNKNOWN__: The status code is not documented\n - __COMPLETE__: The user completed the task successfully\n - __MARKETPLACE_FAIL__: Something was wrong upon the user redirecting from the marketplace, e.g. no postback received, or url hashing failures.\n - __SESSION_START_FAIL__: User failed before being sent into a marketplace\n - __SESSION_CONTINUE_FAIL__: User failed between attempts\n - __SESSION_START_QUALITY_FAIL__: User failed before being sent into a marketplace for \"security\" reasons\n - __SESSION_CONTINUE_QUALITY_FAIL__: User failed between attempts for \"security\" reasons","examples":["COMPLETE"]},"status_code_2":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"__Status Detail__\nThis should be set if the Session.status_code_1 is SESSION_XXX_FAIL\n\nAllowed values: \n - __ENTRY_URL_MODIFICATION__: Unable to parse either the bucket_id, request_id, or nudge_id from the url\n - __UNRECOGNIZED_IP__: The client's IP failed maxmind lookup, or we failed to store it for some reason\n - __USER_IS_ANONYMOUS__: User is using an anonymous IP\n - __USER_IS_BLOCKED__: User is blocked\n - __USER_IS_RATE_LIMITED__: User is rate limited\n - __UNRECOGNIZED_DEVICE__: The client's useragent was not categorized as desktop, mobile, or tablet\n - __OFFERWALL_EXPIRED__: The user clicked after 5 min\n - __INTERNAL_ERROR__: Something unexpected happened\n - __OFFERWALL_COUNTRY_MISMATCH__: The user requested the offerwall for a different country than their IP address indicates\n - __INVALID_BUCKET_ID__: The bucket id indicated in the url does not exist. This is likely due to the user clicking on a bucket for an offerwall that has already been refreshed.\n - __NO_TASKS_AVAILABLE__: Not necessarily the user's fault. We thought we had surveys, but due to for e.g. the user entering on a different device than we thought, there really are none. If we get a lot of these, then that might indicate something is wrong.\n - __ATTEMPT_IS_SUSPICIOUS__: The entrance attempt was flagged by GRLIQ as suspicious\n - __GRLIQ_MISSING__: No GRLIQ forensics post was received","examples":[null]},"adjusted_status":{"anyOf":[{"$ref":"#/components/schemas/SessionAdjustedStatus"},{"type":"null"}],"description":"An adjusted_status is set if a session is adjusted by the marketplace\nafter the original return. A session can be adjusted multiple times.\nThis is the most recent status. If a session was originally a complete,\nwas adjusted to incomplete, then back to complete, the adjusted_status\nwill be None, but the adjusted_timestamp will be set to the most recent\nchange.\n\nAllowed values: \n - __ac__ *(ADJUSTED_TO_COMPLETE)*: Task was reconciled to complete\n - __af__ *(ADJUSTED_TO_FAIL)*: Task was reconciled to incomplete\n - __pa__ *(PAYOUT_ADJUSTMENT)*: The payout was changed. This applies to Sessions ONLY.","examples":[null]},"adjusted_timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Adjusted Timestamp","description":"When the adjusted status was last set.","examples":[null]},"adjusted_payout":{"anyOf":[{"type":"integer","exclusiveMaximum":100000.0,"minimum":0.0},{"type":"null"}],"title":"Adjusted Payout","description":"The new payout after adjustment.","examples":[null]},"adjusted_user_payout":{"anyOf":[{"type":"integer","exclusiveMaximum":100000.0,"minimum":0.0},{"type":"null"}],"title":"Adjusted User Payout","description":"The new user_payout after adjustment.","examples":[null]},"adjusted_user_payout_string":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adjusted User Payout String","description":"The new user_payout_string after adjustment.","examples":[null]},"wall_events":{"anyOf":[{"items":{"$ref":"#/components/schemas/WallOut"},"type":"array"},{"type":"null"}],"title":"Wall Events"},"currency":{"type":"string","const":"USD","title":"Currency","default":"USD"},"final_status":{"type":"integer","title":"Final Status","description":"This is deprecated","default":0},"bpuid":{"type":"string","title":"Bpuid","readOnly":true}},"type":"object","required":["tsid","product_id","product_user_id","started","bpuid"],"title":"TaskStatusResponse","description":"The status of a session"},"TasksStatusResponse":{"properties":{"page":{"type":"integer","minimum":1.0,"title":"Page","description":"Page number","default":1},"size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Size","description":"Page size","default":50},"total":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Total","description":"Total number of results"},"tasks_status":{"items":{"$ref":"#/components/schemas/TaskStatusResponse"},"type":"array","title":"Tasks Status"},"pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pages","description":"Total number of pages","readOnly":true}},"type":"object","required":["pages"],"title":"TasksStatusResponse"},"TopNBucket":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier this particular bucket","examples":["5ba2fe5010cc4d078fc3cc0b0cc264c3"]},"uri":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Uri","description":"The URL to send a respondent into. Must not edit this URL in any way","examples":["https://task.generalresearch.com/api/v1/52d3f63b2709/797df4136c604a6c8599818296aae6d1/?i=5ba2fe5010cc4d078fc3cc0b0cc264c3&b=test&66482fb=e7baf5e"]},"x":{"type":"integer","minimum":0.0,"title":"X","description":"For UI. Provides a dimensionality position for the bucket on the x-axis.","default":0,"examples":[0,1,2]},"y":{"type":"integer","minimum":0.0,"title":"Y","description":"For UI. Provides a dimensionality position for the bucket on the y-axis.","default":0,"examples":[0,1,2]},"name":{"type":"string","title":"Name","description":"Currently unused. Will always return empty string","default":""},"description":{"type":"string","title":"Description","description":"Currently unused. Will always return empty string","default":""},"category":{"items":{"$ref":"#/components/schemas/CategoryAssociation"},"type":"array","title":"Category"},"duration":{"$ref":"#/components/schemas/DurationSummary"},"payout":{"$ref":"#/components/schemas/PayoutSummary"},"quality_score":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Quality Score","description":"A proprietary score to determine the overall quality of the tasks that are within the bucket. Higher is better.","examples":[0.29223]}},"additionalProperties":false,"type":"object","required":["id","uri","duration","payout","quality_score"],"title":"TopNBucket"},"TopNOfferWall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/TopNBucket"},"type":"array","title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]},"payout_format":{"type":"string","title":"Payout Format","description":"\nThe format describing the str representation of a payout. Typically, this would be displayed to a user.\nThe payout_format is similar to python format string with a subset of functionality supported.\nOnly float with a precision are supported along with an optional comma for a thousands separator.\nIn addition, a mathematical operator can be applied, such as dividing by 100. \nExamples are shown assuming payout = 100 (one dollar).\n- \"{payout*10:,.0f} Points\" -> \"1,000 Points\"\n- \"${payout/100:.2f}\" -> \"$1.00\"\n","examples":["{payout*10:,.0f} Points","${payout/100:.2f}","{payout:.0f}"]}},"additionalProperties":false,"type":"object","required":["id","availability_count","payout_format"],"title":"TopNOfferWall","description":"An offerwall with buckets that are clustered by the `split_by` argument\nusing KMeans clustering.\n\nOfferwall code: `45b7228a7`"},"TopNOfferWallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/TopNOfferWall"}},"type":"object","required":["info","offerwall"],"title":"TopNOfferWallResponse"},"TopNPlusBlockOfferWall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/TopNPlusBucket"},"type":"array","title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]}},"additionalProperties":false,"type":"object","required":["id","availability_count"],"title":"TopNPlusBlockOfferWall","description":"Same as the TopNOfferWall, but the buckets include contents and no\nbuckets are returned if the user is blocked.\n\nOfferwall code: `d48cce47`"},"TopNPlusBlockOfferWallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/TopNPlusBlockOfferWall"}},"type":"object","required":["info","offerwall"],"title":"TopNPlusBlockOfferWallResponse"},"TopNPlusBlockRecontactOfferWall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/TopNPlusRecontactBucket"},"type":"array","title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]}},"additionalProperties":false,"type":"object","required":["id","availability_count"],"title":"TopNPlusBlockRecontactOfferWall","description":"Same as the TopNOfferWall, but the buckets include contents, no buckets\nare returned if the user is blocked, and each bucket includes a\n`is_recontact` key.\n\nOfferwall code: `1e5f0af8`"},"TopNPlusBlockRecontactOfferWallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/TopNPlusBlockRecontactOfferWall"}},"type":"object","required":["info","offerwall"],"title":"TopNPlusBlockRecontactOfferWallResponse"},"TopNPlusBucket":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier this particular bucket","examples":["5ba2fe5010cc4d078fc3cc0b0cc264c3"]},"uri":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Uri","description":"The URL to send a respondent into. Must not edit this URL in any way","examples":["https://task.generalresearch.com/api/v1/52d3f63b2709/797df4136c604a6c8599818296aae6d1/?i=5ba2fe5010cc4d078fc3cc0b0cc264c3&b=test&66482fb=e7baf5e"]},"x":{"type":"integer","minimum":0.0,"title":"X","description":"For UI. Provides a dimensionality position for the bucket on the x-axis.","default":0,"examples":[0,1,2]},"y":{"type":"integer","minimum":0.0,"title":"Y","description":"For UI. Provides a dimensionality position for the bucket on the y-axis.","default":0,"examples":[0,1,2]},"name":{"type":"string","title":"Name","description":"Currently unused. Will always return empty string","default":""},"description":{"type":"string","title":"Description","description":"Currently unused. Will always return empty string","default":""},"category":{"items":{"$ref":"#/components/schemas/CategoryAssociation"},"type":"array","title":"Category"},"contents":{"items":{"$ref":"#/components/schemas/BucketTask"},"type":"array","title":"Contents"},"duration":{"$ref":"#/components/schemas/DurationSummary"},"payout":{"$ref":"#/components/schemas/PayoutSummary"},"quality_score":{"type":"number","title":"Quality Score"},"currency":{"type":"string","title":"Currency","description":"This will always be 'USD'","default":"USD","examples":["USD"]},"eligibility_criteria":{"items":{"$ref":"#/components/schemas/SurveyEligibilityCriterion"},"type":"array","title":"Eligibility Criteria","description":"The reasons the user is eligible for tasks in this bucket"},"eligibility_explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eligibility Explanation","description":"Human-readable text explaining a user's eligibility for tasks in this bucket","examples":["You are a **47-year-old** **white** **male** with a *college degree*, who's employer's retirement plan is **Fidelity Investments**."]}},"additionalProperties":false,"type":"object","required":["id","uri","contents","duration","payout","quality_score"],"title":"TopNPlusBucket"},"TopNPlusOfferWall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/TopNPlusBucket"},"type":"array","title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]}},"additionalProperties":false,"type":"object","required":["id","availability_count"],"title":"TopNPlusOfferWall","description":"Same as the TopNOfferWall, but the buckets include contents.\n\nOfferwall code: `b145b803`"},"TopNPlusOfferWallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/TopNPlusOfferWall"}},"type":"object","required":["info","offerwall"],"title":"TopNPlusOfferWallResponse"},"TopNPlusRecontactBucket":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier this particular bucket","examples":["5ba2fe5010cc4d078fc3cc0b0cc264c3"]},"uri":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Uri","description":"The URL to send a respondent into. Must not edit this URL in any way","examples":["https://task.generalresearch.com/api/v1/52d3f63b2709/797df4136c604a6c8599818296aae6d1/?i=5ba2fe5010cc4d078fc3cc0b0cc264c3&b=test&66482fb=e7baf5e"]},"x":{"type":"integer","minimum":0.0,"title":"X","description":"For UI. Provides a dimensionality position for the bucket on the x-axis.","default":0,"examples":[0,1,2]},"y":{"type":"integer","minimum":0.0,"title":"Y","description":"For UI. Provides a dimensionality position for the bucket on the y-axis.","default":0,"examples":[0,1,2]},"name":{"type":"string","title":"Name","description":"Currently unused. Will always return empty string","default":""},"description":{"type":"string","title":"Description","description":"Currently unused. Will always return empty string","default":""},"category":{"items":{"$ref":"#/components/schemas/CategoryAssociation"},"type":"array","title":"Category"},"contents":{"items":{"$ref":"#/components/schemas/BucketTask"},"type":"array","title":"Contents"},"duration":{"$ref":"#/components/schemas/DurationSummary"},"payout":{"$ref":"#/components/schemas/PayoutSummary"},"quality_score":{"type":"number","title":"Quality Score"},"is_recontact":{"type":"boolean","title":"Is Recontact"},"currency":{"type":"string","title":"Currency","description":"This will always be 'USD'","default":"USD","examples":["USD"]}},"additionalProperties":false,"type":"object","required":["id","uri","contents","duration","payout","quality_score","is_recontact"],"title":"TopNPlusRecontactBucket"},"UPKImportance":{"properties":{"task_count":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Task Count","description":"The number of live Tasks that use this UPK Question","examples":[47]},"task_score":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Task Score","description":"GRL's internal ranked score for the UPK Question","examples":[0.11175522477414712]},"marketplace_task_count":{"anyOf":[{"additionalProperties":{"type":"integer","minimum":0.0},"propertyNames":{"$ref":"#/components/schemas/Source"},"type":"object"},{"type":"null"}],"title":"Marketplace Task Count","description":"The number of live Tasks that use this UPK Question per marketplace","examples":[{"d":23,"s":24}]}},"type":"object","title":"UPKImportance"},"USDeliveryAddress":{"properties":{"name_or_attn":{"type":"string","maxLength":50,"minLength":1,"title":"Name Or Attn"},"company":{"anyOf":[{"type":"string","maxLength":50,"minLength":1},{"type":"null"}],"title":"Company"},"phone_number":{"anyOf":[{"type":"string","maxLength":10,"minLength":10,"pattern":"^[0-9]+$"},{"type":"null"}],"title":"Phone Number"},"address":{"type":"string","maxLength":100,"minLength":1,"title":"Address"},"city":{"type":"string","maxLength":100,"minLength":1,"title":"City"},"state":{"type":"string","maxLength":2,"minLength":1,"title":"State"},"postal_code":{"type":"string","maxLength":10,"minLength":1,"title":"Postal Code"},"country":{"type":"string","title":"Country","default":"us"}},"type":"object","required":["name_or_attn","address","city","state","postal_code"],"title":"USDeliveryAddress"},"UpkItem":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","examples":["497b1fedec464151b063cd5367643ffa"]},"label":{"type":"string","maxLength":255,"title":"Label","examples":["high_school_completion"]},"description":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Description","examples":["Completed high school"]}},"type":"object","required":["id","label"],"title":"UpkItem"},"UpkProperty":{"properties":{"property_id":{"type":"string","maxLength":32,"minLength":32,"title":"Property Id","examples":["2af5240ecd7d4a909a6caf5824bf4632"]},"property_label":{"type":"string","maxLength":255,"title":"Property Label","examples":["educational_attainment"]},"prop_type":{"$ref":"#/components/schemas/PropertyType","description":"\nAllowed values: \n - __i__ *(UPK_ITEM)*: UserProfileKnowledge Item\n - __n__ *(UPK_NUMERICAL)*: UserProfileKnowledge Numerical\n - __x__ *(UPK_TEXT)*: UserProfileKnowledge Text","default":"i"},"cardinality":{"$ref":"#/components/schemas/Cardinality","description":"\nAllowed values: \n - __*__ *(ZERO_OR_MORE)*: Zero or More\n - __?__ *(ZERO_OR_ONE)*: Zero or One","default":"?"},"country_iso":{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$","title":"Country Iso"},"gold_standard":{"type":"boolean","title":"Gold Standard","description":"A Gold-Standard question has been enumerated for all possible values (per country) as best as possible by GRL,allowing it to be mapped across inventory sources. A property not marked as Gold-Standard may have: 1) marketplace qid associations & 2) category associations, but doesn't have a defined 'range' (list of allowed itemsin a multiple choice question). This is used for exposing a user's profiling data & forthe Nudge API.","default":false},"allowed_items":{"anyOf":[{"items":{"$ref":"#/components/schemas/UpkItem"},"type":"array"},{"type":"null"}],"title":"Allowed Items"},"categories":{"items":{"$ref":"#/components/schemas/Category"},"type":"array","title":"Categories"}},"type":"object","required":["property_id","property_label","country_iso"],"title":"UpkProperty","description":"This used to be called \"QuestionInfo\", which is a bad name,\n as this describes a UPK Property, like \"educational_attainment\",\n not the question that asks for your education."},"UpkQuestion":{"properties":{"question_id":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Question Id"},"ext_question_id":{"anyOf":[{"type":"string","pattern":"^[a-z]{1,2}\\:.*"},{"type":"null"}],"title":"Ext Question Id","description":"what marketplace question this question links to"},"question_type":{"$ref":"#/components/schemas/UpkQuestionType"},"country_iso":{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$","title":"Country Iso"},"language_iso":{"type":"string","maxLength":3,"minLength":3,"pattern":"^[a-z]{3}$","title":"Language Iso"},"question_text":{"type":"string","minLength":1,"title":"Question Text","description":"The text shown to respondents"},"choices":{"anyOf":[{"items":{"$ref":"#/components/schemas/UpkQuestionChoice"},"type":"array"},{"type":"null"}],"title":"Choices"},"selector":{"anyOf":[{"$ref":"#/components/schemas/UpkQuestionSelectorMC"},{"$ref":"#/components/schemas/UpkQuestionSelectorTE"},{"$ref":"#/components/schemas/UpkQuestionSelectorSLIDER"},{"$ref":"#/components/schemas/UpkQuestionSelectorHIDDEN"}],"title":"Selector"},"configuration":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/UpkQuestionConfigurationMC"},{"$ref":"#/components/schemas/UpkQuestionConfigurationTE"},{"$ref":"#/components/schemas/UpkQuestionConfigurationSLIDER"}],"discriminator":{"propertyName":"type","mapping":{"MC":"#/components/schemas/UpkQuestionConfigurationMC","SLIDER":"#/components/schemas/UpkQuestionConfigurationSLIDER","TE":"#/components/schemas/UpkQuestionConfigurationTE"}}},{"type":"null"}],"title":"Configuration"},"validation":{"anyOf":[{"$ref":"#/components/schemas/UpkQuestionValidation"},{"type":"null"}]},"importance":{"anyOf":[{"$ref":"#/components/schemas/UPKImportance"},{"type":"null"}]},"categories":{"items":{"$ref":"#/components/schemas/Category"},"type":"array","title":"Categories","description":"Categories associated with this question"},"explanation_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation Template","description":"Human-readable template for explaining how a user's answer to this question affects eligibility","examples":["The company that administers your employer's retirement plan is {answer}."]},"explanation_fragment_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation Fragment Template","description":"A very short, natural-language explanation fragment that can be combined with others into a single sentence","examples":["whose employer's retirement plan is {answer}"]}},"type":"object","required":["question_type","country_iso","language_iso","question_text"],"title":"UpkQuestion","example":{"categories":[{"adwords_vertical_id":"396","label":"Politics","parent_uuid":"f66dddba61424ce5be2a38731450a0e1","path":"/News/Politics","uuid":"87b6d819f3ca4815bf1f135b1e829cc6"}],"choices":[{"choice_id":"1","choice_text":"Yes","exclusive":false,"order":0},{"choice_id":"2","choice_text":"No","exclusive":false,"order":1}],"country_iso":"us","importance":{"marketplace_task_count":{"d":9,"s":20,"w":20},"task_count":49,"task_score":3.3401743283265684},"language_iso":"eng","marketplace_task_count":{"d":9,"s":20,"w":20},"question_id":"fb20fd4773304500b39c4f6de0012a5a","question_text":"Are you registered to vote at your present address, or not?","question_type":"MC","selector":"SA","task_count":49,"task_score":3.3401743283265684}},"UpkQuestionChoice":{"properties":{"choice_id":{"type":"string","maxLength":64,"minLength":1,"pattern":"^[\\w\\s\\.\\-]+$","title":"Choice Id","description":"The unique identifier for a response to a qualification"},"choice_text":{"type":"string","minLength":1,"title":"Choice Text","description":"The response text shown to respondents"},"order":{"type":"integer","minimum":0.0,"title":"Order"},"group":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Group"},"exclusive":{"type":"boolean","title":"Exclusive","description":"If answer is exclusive, it can be the only option selected","default":false},"importance":{"anyOf":[{"$ref":"#/components/schemas/UPKImportance"},{"type":"null"}]}},"type":"object","required":["choice_id","choice_text","order"],"title":"UpkQuestionChoice"},"UpkQuestionChoiceOut":{"properties":{"choice_id":{"type":"string","maxLength":64,"minLength":1,"pattern":"^[\\w\\s\\.\\-]+$","title":"Choice Id","description":"The unique identifier for a response to a qualification"},"choice_text":{"type":"string","minLength":1,"title":"Choice Text","description":"The response text shown to respondents"},"order":{"type":"integer","minimum":0.0,"title":"Order"},"group":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Group"},"exclusive":{"type":"boolean","title":"Exclusive","description":"If answer is exclusive, it can be the only option selected","default":false},"importance":{"anyOf":[{"$ref":"#/components/schemas/UPKImportance"},{"type":"null"}]}},"type":"object","required":["choice_id","choice_text","order"],"title":"UpkQuestionChoiceOut"},"UpkQuestionConfigurationMC":{"properties":{"max_select":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Select"}},"additionalProperties":false,"type":"object","title":"UpkQuestionConfigurationMC"},"UpkQuestionConfigurationSLIDER":{"properties":{"slider_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Slider Min"},"slider_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Slider Max"},"slider_start":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Slider Start"},"slider_step":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Slider Step"}},"type":"object","title":"UpkQuestionConfigurationSLIDER"},"UpkQuestionConfigurationTE":{"properties":{"max_length":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Length","description":"Maximum str length of any input. Meant as an easy, nonregex based check."},"min_length":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Min Length","description":"Minimum str length of any input. Meant as an easy, nonregex based check."}},"additionalProperties":false,"type":"object","title":"UpkQuestionConfigurationTE"},"UpkQuestionOut":{"properties":{"question_id":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Question Id"},"ext_question_id":{"anyOf":[{"type":"string","pattern":"^[a-z]{1,2}\\:.*"},{"type":"null"}],"title":"Ext Question Id","description":"what marketplace question this question links to"},"question_type":{"$ref":"#/components/schemas/UpkQuestionType"},"country_iso":{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$","title":"Country Iso"},"language_iso":{"type":"string","maxLength":3,"minLength":3,"pattern":"^[a-z]{3}$","title":"Language Iso"},"question_text":{"type":"string","minLength":1,"title":"Question Text","description":"The text shown to respondents"},"choices":{"anyOf":[{"items":{"$ref":"#/components/schemas/UpkQuestionChoiceOut"},"type":"array"},{"type":"null"}],"title":"Choices"},"selector":{"anyOf":[{"$ref":"#/components/schemas/UpkQuestionSelectorMC"},{"$ref":"#/components/schemas/UpkQuestionSelectorTE"},{"$ref":"#/components/schemas/UpkQuestionSelectorSLIDER"},{"$ref":"#/components/schemas/UpkQuestionSelectorHIDDEN"}],"title":"Selector"},"configuration":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/UpkQuestionConfigurationMC"},{"$ref":"#/components/schemas/UpkQuestionConfigurationTE"},{"$ref":"#/components/schemas/UpkQuestionConfigurationSLIDER"}],"discriminator":{"propertyName":"type","mapping":{"MC":"#/components/schemas/UpkQuestionConfigurationMC","SLIDER":"#/components/schemas/UpkQuestionConfigurationSLIDER","TE":"#/components/schemas/UpkQuestionConfigurationTE"}}},{"type":"null"}],"title":"Configuration"},"validation":{"anyOf":[{"$ref":"#/components/schemas/UpkQuestionValidation"},{"type":"null"}]},"importance":{"anyOf":[{"$ref":"#/components/schemas/UPKImportance"},{"type":"null"}]},"categories":{"items":{"$ref":"#/components/schemas/Category"},"type":"array","title":"Categories","description":"Categories associated with this question"},"explanation_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation Template","description":"Human-readable template for explaining how a user's answer to this question affects eligibility","examples":["The company that administers your employer's retirement plan is {answer}."]},"explanation_fragment_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation Fragment Template","description":"A very short, natural-language explanation fragment that can be combined with others into a single sentence","examples":["whose employer's retirement plan is {answer}"]},"task_count":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Task Count","description":"The number of live Tasks that use this UPK Question","examples":[47]},"task_score":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Task Score","description":"GRL's internal ranked score for the UPK Question","examples":[0.11175522477414712]},"marketplace_task_count":{"anyOf":[{"additionalProperties":{"type":"integer","minimum":0.0},"propertyNames":{"$ref":"#/components/schemas/Source"},"type":"object"},{"type":"null"}],"title":"Marketplace Task Count","description":"The number of live Tasks that use this UPK Question per marketplace","examples":[{"d":23,"s":24}]}},"type":"object","required":["question_type","country_iso","language_iso","question_text"],"title":"UpkQuestionOut","example":{"categories":[{"adwords_vertical_id":"396","label":"Politics","parent_uuid":"f66dddba61424ce5be2a38731450a0e1","path":"/News/Politics","uuid":"87b6d819f3ca4815bf1f135b1e829cc6"}],"choices":[{"choice_id":"1","choice_text":"Yes","exclusive":false,"order":0},{"choice_id":"2","choice_text":"No","exclusive":false,"order":1}],"country_iso":"us","importance":{"marketplace_task_count":{"d":9,"s":20,"w":20},"task_count":49,"task_score":3.3401743283265684},"language_iso":"eng","marketplace_task_count":{"d":9,"s":20,"w":20},"question_id":"fb20fd4773304500b39c4f6de0012a5a","question_text":"Are you registered to vote at your present address, or not?","question_type":"MC","selector":"SA","task_count":49,"task_score":3.3401743283265684}},"UpkQuestionResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"questions":{"items":{"$ref":"#/components/schemas/UpkQuestionOut"},"type":"array","title":"Questions"},"consent_questions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Consent Questions","description":"For internal use"},"special_questions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Special Questions","description":"For internal use"},"count":{"type":"integer","minimum":0.0,"title":"Count","description":"The number of questions returned"}},"type":"object","required":["status","questions","count"],"title":"UpkQuestionResponse"},"UpkQuestionSelectorHIDDEN":{"type":"string","enum":["HIDDEN"],"title":"UpkQuestionSelectorHIDDEN"},"UpkQuestionSelectorMC":{"type":"string","enum":["SA","MA","DL","SB","MSB"],"title":"UpkQuestionSelectorMC"},"UpkQuestionSelectorSLIDER":{"type":"string","enum":["HSLIDER","VSLIDER"],"title":"UpkQuestionSelectorSLIDER"},"UpkQuestionSelectorTE":{"type":"string","enum":["SL","ML","ETB"],"title":"UpkQuestionSelectorTE"},"UpkQuestionType":{"type":"string","enum":["MC","TE","SLIDER","HIDDEN"],"title":"UpkQuestionType"},"UpkQuestionValidation":{"properties":{"patterns":{"anyOf":[{"items":{"$ref":"#/components/schemas/PatternValidation"},"type":"array","minItems":1},{"type":"null"}],"title":"Patterns"}},"type":"object","required":["patterns"],"title":"UpkQuestionValidation"},"User":{"properties":{"id":{"anyOf":[{"type":"integer","exclusiveMaximum":2147483648.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Id"},"uuid":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Uuid","examples":["8b33426cdc8548708b52b8389ca99125"]},"product":{"anyOf":[{"$ref":"#/components/schemas/Product"},{"type":"null"}]},"product_id":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Product Id","examples":["4fe381fb7186416cb443a38fa66c6557"]},"product_user_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":3},{"type":"null"}],"title":"Product User Id","description":"A unique identifier for each user, which is set by the Supplier. It should not contain any sensitive informationlike email or names, and should avoid using anyincrementing values.","examples":["app-user-9329ebd"]},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked","default":false},"created":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created","description":"When the user was created on the GRL platform."},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen","description":"When the user was last seen on, or acting on anypart of the GRL platform."},"audit_log":{"anyOf":[{"items":{"$ref":"#/components/schemas/AuditLog"},"type":"array"},{"type":"null"}],"title":"Audit Log"},"transactions":{"anyOf":[{"items":{"$ref":"#/components/schemas/LedgerTransaction"},"type":"array"},{"type":"null"}],"title":"Transactions"},"location_history":{"anyOf":[{"items":{"$ref":"#/components/schemas/GeoIPInformation"},"type":"array"},{"type":"null"}],"title":"Location History"}},"additionalProperties":false,"type":"object","title":"User"},"UserCreateConfig":{"properties":{"min_hourly_create_limit":{"type":"integer","minimum":0.0,"title":"Min Hourly Create Limit","description":"The smallest allowed value for the hourly user create limit.","default":0},"max_hourly_create_limit":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Hourly Create Limit","description":"The largest allowed value for the hourly user create limit. If None, the hourly create limit is unconstrained."}},"type":"object","title":"UserCreateConfig","description":"Stores configuration for the user creation experience.\n\nThe user creation limit is determined dynamically based on the median\n daily completion rate. min_hourly_create_limit &\n max_hourly_create_limit can be used to constrain the dynamically\n determined rate limit within set values."},"UserHealthConfig":{"properties":{"banned_countries":{"items":{"type":"string","maxLength":2,"minLength":2,"pattern":"^[a-z]{2}$"},"type":"array","title":"Banned Countries"},"allow_ban_iphist":{"type":"boolean","title":"Allow Ban Iphist","default":true}},"type":"object","title":"UserHealthConfig"},"UserInfo":{"properties":{"user_profile_knowledge":{"items":{"$ref":"#/components/schemas/UserProfileKnowledge"},"type":"array","title":"User Profile Knowledge"},"marketplace_profile_knowledge":{"items":{"$ref":"#/components/schemas/MarketProfileKnowledge"},"type":"array","title":"Marketplace Profile Knowledge"}},"type":"object","title":"UserInfo"},"UserInfoResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"user_profile":{"$ref":"#/components/schemas/UserInfo"}},"type":"object","required":["status","user_profile"],"title":"UserInfoResponse"},"UserLedgerTransactionTaskAdjustment":{"properties":{"created":{"type":"string","format":"date-time","title":"Created","description":"When the Transaction was created"},"description":{"type":"string","maxLength":255,"title":"Description","description":"External description suitable for UI","default":"Task Adjustment"},"amount":{"type":"integer","title":"Amount","description":"The net amount affecting the user's wallet, in USDCents. Positive means the user's balance increased; negative means it decreased.","examples":[500,-250]},"balance_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance After"},"tx_type":{"type":"string","const":"bp_adjustment","title":"Tx Type","default":"bp_adjustment"},"tsid":{"type":"string","maxLength":32,"minLength":32,"title":"Tsid","description":"A unique identifier for the session","examples":["a3848e0a53d64f68a74ced5f61b6eb68"]},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"A link to where the user can get more details about this transaction","readOnly":true},"amount_string":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount String","description":"The 'amount' with the payout_format applied.","readOnly":true}},"additionalProperties":false,"type":"object","required":["created","amount","tsid","url","amount_string"],"title":"UserLedgerTransactionTaskAdjustment","example":{"amount":-38,"amount_string":"$-0.38","created":"2026-02-18T07:03:18.644340Z","description":"Task Adjustment","tsid":"25d6081840694376b581f392653ac6fd","tx_type":"bp_adjustment","url":"https://fsb.generalresearch.com/d911167a994a470dbd3ded8b26ff431a/status/25d6081840694376b581f392653ac6fd/"}},"UserLedgerTransactionTaskComplete":{"properties":{"created":{"type":"string","format":"date-time","title":"Created","description":"When the Transaction was created"},"description":{"type":"string","maxLength":255,"title":"Description","description":"External description suitable for UI","default":"Task Complete"},"amount":{"type":"integer","title":"Amount","description":"The net amount affecting the user's wallet, in USDCents. Positive means the user's balance increased; negative means it decreased.","examples":[500,-250]},"balance_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance After"},"tx_type":{"type":"string","const":"bp_payment","title":"Tx Type","default":"bp_payment"},"tsid":{"type":"string","maxLength":32,"minLength":32,"title":"Tsid","description":"A unique identifier for the session","examples":["a3848e0a53d64f68a74ced5f61b6eb68"]},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"A link to where the user can get more details about this transaction","readOnly":true},"amount_string":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount String","description":"The 'amount' with the payout_format applied.","readOnly":true}},"additionalProperties":false,"type":"object","required":["created","amount","tsid","url","amount_string"],"title":"UserLedgerTransactionTaskComplete","description":"In a BP with user wallet enabled, the task-complete transaction would have line items\n for both the credit to the bp_wallet_account and credit to user_account. This\n is the user-detail, so we've only caring about the user's payment.","example":{"amount":38,"amount_string":"$0.38","created":"2026-02-18T07:03:18.644965Z","description":"Task Complete","tsid":"701ce08adc6d475487fba63412811133","tx_type":"bp_payment","url":"https://fsb.generalresearch.com/40894c77ac64432a994c00c1bf997bda/status/701ce08adc6d475487fba63412811133/"}},"UserLedgerTransactionTypeSummary":{"properties":{"entry_count":{"type":"integer","minimum":0.0,"title":"Entry Count","default":0},"min_amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Amount","description":"positive or negative USDCent"},"max_amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Amount","description":"positive or negative USDCent"},"total_amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Amount","description":"positive or negative USDCent"}},"type":"object","title":"UserLedgerTransactionTypeSummary"},"UserLedgerTransactionTypesSummary":{"properties":{"bp_adjustment":{"$ref":"#/components/schemas/UserLedgerTransactionTypeSummary"},"bp_payment":{"$ref":"#/components/schemas/UserLedgerTransactionTypeSummary"},"user_bonus":{"$ref":"#/components/schemas/UserLedgerTransactionTypeSummary"},"user_payout_request":{"$ref":"#/components/schemas/UserLedgerTransactionTypeSummary"}},"type":"object","title":"UserLedgerTransactionTypesSummary"},"UserLedgerTransactionUserBonus":{"properties":{"created":{"type":"string","format":"date-time","title":"Created","description":"When the Transaction was created"},"description":{"type":"string","maxLength":255,"title":"Description","description":"External description suitable for UI","default":"Compensation Bonus"},"amount":{"type":"integer","title":"Amount","description":"The net amount affecting the user's wallet, in USDCents. Positive means the user's balance increased; negative means it decreased.","examples":[500,-250]},"balance_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance After"},"tx_type":{"type":"string","const":"user_bonus","title":"Tx Type","default":"user_bonus"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"A link to where the user can get more details about this transaction","readOnly":true},"amount_string":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount String","description":"The 'amount' with the payout_format applied.","readOnly":true}},"additionalProperties":false,"type":"object","required":["created","amount","url","amount_string"],"title":"UserLedgerTransactionUserBonus","example":{"amount":100,"amount_string":"$1.00","created":"2026-02-18T07:03:18.643773Z","description":"Compensation Bonus","tx_type":"user_bonus"}},"UserLedgerTransactionUserPayout":{"properties":{"created":{"type":"string","format":"date-time","title":"Created","description":"When the Transaction was created"},"description":{"type":"string","maxLength":255,"title":"Description","description":"External description suitable for UI"},"amount":{"type":"integer","title":"Amount","description":"The net amount affecting the user's wallet, in USDCents. Positive means the user's balance increased; negative means it decreased.","examples":[500,-250]},"balance_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance After"},"tx_type":{"type":"string","const":"user_payout_request","title":"Tx Type","default":"user_payout_request"},"payout_id":{"type":"string","maxLength":32,"minLength":32,"title":"Payout Id","description":"A unique identifier for the payout","examples":["a3848e0a53d64f68a74ced5f61b6eb68"]},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"A link to where the user can get more details about this transaction","readOnly":true},"amount_string":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount String","description":"The 'amount' with the payout_format applied.","readOnly":true}},"additionalProperties":false,"type":"object","required":["created","description","amount","payout_id","url","amount_string"],"title":"UserLedgerTransactionUserPayout","example":{"amount":-5,"amount_string":"$-0.05","created":"2026-02-18T07:03:18.643220Z","description":"HIT Reward","payout_id":"6734d18098a745719c71ccd36e4cbff1","tx_type":"user_payout_request","url":"https://fsb.generalresearch.com/fd768560e9ec4f77aa3d697d9961aa97/cashout/6734d18098a745719c71ccd36e4cbff1/"}},"UserLedgerTransactionsResponse":{"properties":{"page":{"type":"integer","minimum":1.0,"title":"Page","description":"Page number","default":1},"size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Size","description":"Page size","default":50},"total":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Total","description":"Total number of results"},"transactions":{"items":{"oneOf":[{"$ref":"#/components/schemas/UserLedgerTransactionUserPayout"},{"$ref":"#/components/schemas/UserLedgerTransactionUserBonus"},{"$ref":"#/components/schemas/UserLedgerTransactionTaskAdjustment"},{"$ref":"#/components/schemas/UserLedgerTransactionTaskComplete"}],"discriminator":{"propertyName":"tx_type","mapping":{"bp_adjustment":"#/components/schemas/UserLedgerTransactionTaskAdjustment","bp_payment":"#/components/schemas/UserLedgerTransactionTaskComplete","user_bonus":"#/components/schemas/UserLedgerTransactionUserBonus","user_payout_request":"#/components/schemas/UserLedgerTransactionUserPayout"}}},"type":"array","title":"Transactions"},"summary":{"$ref":"#/components/schemas/UserLedgerTransactionTypesSummary"},"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pages","description":"Total number of pages","readOnly":true}},"type":"object","required":["summary","status","pages"],"title":"UserLedgerTransactionsResponse"},"UserProfile":{"properties":{"email_address":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email Address","examples":["contact@mail.com"]},"user":{"$ref":"#/components/schemas/User"},"marketplace_pids":{"additionalProperties":{"type":"string","maxLength":32,"minLength":32},"propertyNames":{"$ref":"#/components/schemas/Source"},"type":"object","title":"Marketplace Pids","description":"User's PID in marketplaces","examples":[{"c":"b507a2c00c3e481fb82f23655d142198","d":"deffe922063e4b9980206a62c3df2fba","i":"1dd9bd986794444eb97cb921aee5663f"}]},"streaks":{"items":{"$ref":"#/components/schemas/UserStreak"},"type":"array","title":"Streaks"},"email_md5":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Email Md5","description":"MD5 hash of the email address","readOnly":true,"examples":["053fc3d5575362159e0c782abec83ffa"]},"email_sha1":{"anyOf":[{"type":"string","maxLength":40,"minLength":40},{"type":"null"}],"title":"Email Sha1","description":"SHA1 hash of the email address","readOnly":true,"examples":["6280fb76135b3585c0c5403be04844a0f0bae726"]},"email_sha256":{"anyOf":[{"type":"string","maxLength":64,"minLength":64},{"type":"null"}],"title":"Email Sha256","description":"SHA256 hash of the email address","readOnly":true,"examples":["8a098233e750f08de87d6053c06a58724287f34372368b6dc28b7ad4a77f3d39"]}},"additionalProperties":false,"type":"object","required":["user","email_md5","email_sha1","email_sha256"],"title":"UserProfile"},"UserProfileKnowledge":{"properties":{"property_id":{"type":"string","title":"Property Id"},"property_label":{"type":"string","title":"Property Label"},"translation":{"type":"string","title":"Translation"},"answer":{"items":{"$ref":"#/components/schemas/UserProfileKnowledgeAnswer"},"type":"array","title":"Answer"},"created":{"type":"string","format":"date-time","title":"Created","description":"When the User submitted this Profiling data"}},"type":"object","required":["property_id","property_label","translation","created"],"title":"UserProfileKnowledge"},"UserProfileKnowledgeAnswer":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"translation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"}},"type":"object","title":"UserProfileKnowledgeAnswer"},"UserProfileResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"user_profile":{"$ref":"#/components/schemas/UserProfile"}},"type":"object","required":["status","user_profile"],"title":"UserProfileResponse"},"UserProfileUpdateRequest":{"properties":{"email_address":{"type":"string","format":"email","title":"Email Address","examples":["contact@mail.com"]}},"additionalProperties":false,"type":"object","required":["email_address"],"title":"UserProfileUpdateRequest"},"UserProfilesResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"user_profiles":{"items":{"$ref":"#/components/schemas/UserProfile"},"type":"array","title":"User Profiles"}},"type":"object","required":["status","user_profiles"],"title":"UserProfilesResponse"},"UserQuestionAnswerIn":{"properties":{"question_id":{"type":"string","maxLength":32,"minLength":32,"title":"Question Id","examples":["fb20fd4773304500b39c4f6de0012a5a"]},"answer":{"items":{"type":"string","maxLength":5000,"minLength":1},"type":"array","maxItems":10,"minItems":1,"title":"Answer","description":"The user's answers to this question. Must pass the choice_id if the question is a Multiple Choice, or the actual text if the question is Text Entry","examples":[["1"]]}},"additionalProperties":false,"type":"object","required":["question_id","answer"],"title":"UserQuestionAnswerIn","description":"Send the answers to one or more questions for a user. A question is\nuniquely specified by the question_id key. The answer is: the choice_id\nif the question_type is \"MC\" the actual entered text if the\nquestion_type is \"TE\"\n\nTODO: look up the question_type from the question_id to apply MC or\n TE specific validation on the answer(s)"},"UserStreak":{"properties":{"country_iso":{"type":"string","title":"Country Iso"},"period":{"$ref":"#/components/schemas/StreakPeriod"},"fulfillment":{"$ref":"#/components/schemas/StreakFulfillment"},"current_streak":{"type":"integer","minimum":0.0,"title":"Current Streak"},"longest_streak":{"type":"integer","minimum":0.0,"title":"Longest Streak"},"state":{"$ref":"#/components/schemas/StreakState"},"last_fulfilled_period_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Last Fulfilled Period Start"},"timezone_name":{"type":"string","title":"Timezone Name","readOnly":true},"current_period_bounds":{"prefixItems":[{"type":"string","format":"date-time"},{"type":"string","format":"date-time"}],"type":"array","maxItems":2,"minItems":2,"title":"Current Period Bounds","readOnly":true},"last_fulfilled_period_bounds":{"anyOf":[{"prefixItems":[{"type":"string","format":"date-time"},{"type":"string","format":"date-time"}],"type":"array","maxItems":2,"minItems":2},{"type":"null"}],"title":"Last Fulfilled Period Bounds","readOnly":true},"time_remaining_in_period":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Time Remaining In Period","readOnly":true}},"additionalProperties":false,"type":"object","required":["country_iso","period","fulfillment","current_streak","longest_streak","state","timezone_name","current_period_bounds","last_fulfilled_period_bounds","time_remaining_in_period"],"title":"UserStreak"},"UserType":{"type":"string","enum":["business","cafe","cellular","college","content_delivery_network","consumer_privacy_network","government","hosting","library","military","residential","router","school","search_engine_spider","traveler"],"title":"UserType"},"UserWalletBalance":{"properties":{"amount":{"type":"integer","title":"Amount","description":"(USD cents) The amount in the user's wallet."},"redeemable_amount":{"type":"integer","minimum":0.0,"title":"Redeemable Amount","description":"(USD cents) The amount in the user's wallet this is currently redeemable."},"payout_format":{"type":"string","title":"Payout Format","description":"\nThe format describing the str representation of a payout. Typically, this would be displayed to a user.\nThe payout_format is similar to python format string with a subset of functionality supported.\nOnly float with a precision are supported along with an optional comma for a thousands separator.\nIn addition, a mathematical operator can be applied, such as dividing by 100. \nExamples are shown assuming payout = 100 (one dollar).\n- \"{payout*10:,.0f} Points\" -> \"1,000 Points\"\n- \"${payout/100:.2f}\" -> \"$1.00\"\n","examples":["{payout*10:,.0f} Points","${payout/100:.2f}","{payout:.0f}"]},"amount_string":{"type":"string","title":"Amount String","description":"The 'amount' with the payout_format applied. Can be displayed to the user."},"redeemable_amount_string":{"type":"string","title":"Redeemable Amount String","description":"The 'redeemable_amount' with the payout_format applied. Can be displayed to the user."}},"type":"object","required":["amount","redeemable_amount","payout_format","amount_string","redeemable_amount_string"],"title":"UserWalletBalance","example":{"amount":123,"amount_string":"1230 Points","payout_format":"{payout*10:,.0f} Points","redeemable_amount":100,"redeemable_amount_string":"1000 Points"}},"UserWalletBalanceResponse":{"properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"The status of the API response.","examples":["success"]},"msg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msg","description":"An optional message, if the status is error.","examples":[""]},"wallet":{"$ref":"#/components/schemas/UserWalletBalance"}},"type":"object","required":["status","wallet"],"title":"UserWalletBalanceResponse"},"UserWalletConfig":{"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"If enabled, the users' wallets are managed.","default":false},"amt":{"type":"boolean","title":"Amt","description":"Uses Amazon Mechanical Turk","default":false},"supported_payout_types":{"items":{"$ref":"#/components/schemas/PayoutType"},"type":"array","uniqueItems":true,"title":"Supported Payout Types"},"min_cashout":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Min Cashout","description":"Minimum cashout amount. If enabled is True and no min_cashout is set, will default to $0.01.","examples":["10.00"]}},"type":"object","title":"UserWalletConfig","description":"Stores configuration for the user wallet handling"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WXETOfferwall":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier to reference a generated offerwall","examples":["7dc1d3aeb4844a6fab17ecd370b8bf1e"]},"availability_count":{"type":"integer","minimum":0.0,"title":"Availability Count","description":"Total opportunities available for specific bpuid respondent and parameters. This value changes frequently and can be used to determine if a respondent has potential tasks available, regardless of the offerwall type being requested. If the value is 0, no buckets will be generated.","examples":[42]},"attempted_live_eligible_count":{"type":"integer","minimum":0.0,"title":"Attempted Live Eligible Count","description":"Number of currently live opportunities for which the respondent meets all eligibility criteria but is excluded due to a prior attempt. Only includes surveys that are still live and otherwise eligible; does not include previously attempted surveys that are no longer available.","default":0,"examples":[7]},"buckets":{"items":{"$ref":"#/components/schemas/WXETOfferwallBucket"},"type":"array","title":"Buckets"},"offerwall_reasons":{"items":{"$ref":"#/components/schemas/OfferwallReason"},"type":"array","title":"Offerwall Reasons","description":"Explanations describing why so many or few opportunities are available.","examples":[["USER_BLOCKED","UNDER_MINIMUM_AGE"]]}},"additionalProperties":false,"type":"object","required":["id","availability_count"],"title":"WXETOfferwall","description":"Returns buckets from WXET as single tasks\nOfferwall code: `55a4e1a9`"},"WXETOfferwallBucket":{"properties":{"id":{"type":"string","maxLength":32,"minLength":32,"title":"Id","description":"Unique identifier this particular bucket","examples":["5ba2fe5010cc4d078fc3cc0b0cc264c3"]},"uri":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Uri","description":"The URL to send a respondent into. Must not edit this URL in any way","examples":["https://task.generalresearch.com/api/v1/52d3f63b2709/797df4136c604a6c8599818296aae6d1/?i=5ba2fe5010cc4d078fc3cc0b0cc264c3&b=test&66482fb=e7baf5e"]},"duration":{"type":"integer","maximum":5400.0,"exclusiveMinimum":0.0,"title":"Duration","description":"The bucket's expected duration, in seconds"},"min_payout":{"type":"integer","maximum":10000.0,"exclusiveMinimum":0.0,"title":"Min Payout","description":"The bucket's min payout, in usd cents"}},"additionalProperties":false,"type":"object","required":["id","uri","duration","min_payout"],"title":"WXETOfferwallBucket"},"WXETOfferwallResponse":{"properties":{"info":{"$ref":"#/components/schemas/OfferWallInfo"},"offerwall":{"$ref":"#/components/schemas/WXETOfferwall"}},"type":"object","required":["info","offerwall"],"title":"WXETOfferwallResponse"},"WallAdjustedStatus":{"type":"string","enum":["ac","af","ca","cc"],"title":"WallAdjustedStatus"},"WallOut":{"properties":{"uuid":{"type":"string","maxLength":32,"minLength":32,"title":"Uuid"},"source":{"$ref":"#/components/schemas/Source"},"buyer_id":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Buyer Id"},"req_survey_id":{"type":"string","maxLength":32,"title":"Req Survey Id"},"started":{"type":"string","format":"date-time","title":"Started"},"survey_id":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Survey Id"},"finished":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished"},"status":{"anyOf":[{"$ref":"#/components/schemas/Status"},{"type":"null"}]},"status_code_1":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"__High level status code for outcome of the session.__\nThis should only be NULL if the Status is ABANDON or TIMEOUT\n\nAllowed values: \n - __BUYER_FAIL__: User terminated in buyer survey\n - __BUYER_QUALITY_FAIL__: User terminated in buyer survey for quality reasons\n - __PS_FAIL__: User failed in marketplace's prescreener\n - __PS_QUALITY__: User rejected by marketplace for quality reasons\n - __PS_BLOCKED__: User is explicitly blocked by the marketplace. Note: on some marketplaces, users can have multiple PS_QUALITY terminations and still complete surveys.\n - __PS_OVERQUOTA__: User rejected by marketplace for over quota\n - __PS_DUPLICATE__: User rejected by marketplace for duplicate\n - __GRS_FAIL__: The user failed within the GRS Platform\n - __GRS_QUALITY_FAIL__: The user failed within the GRS Platform for quality reasons\n - __GRS_ABANDON__: The user abandoned/timed out within the GRS Platform\n - __PS_ABANDON__: The user abandoned/timed out within the marketplace's pre-screen system. Note: On most marketplaces, we have no way of distinguishing between this and BUYER_ABANDON. BUYER_ABANDON is used as the default, unless we know it is PS_ABANDON.\n - __BUYER_ABANDON__: The user abandoned/timed out within the client survey\n - __UNKNOWN__: The status code is not documented\n - __COMPLETE__: The user completed the task successfully\n - __MARKETPLACE_FAIL__: Something was wrong upon the user redirecting from the marketplace, e.g. no postback received, or url hashing failures.\n - __SESSION_START_FAIL__: User failed before being sent into a marketplace\n - __SESSION_CONTINUE_FAIL__: User failed between attempts\n - __SESSION_START_QUALITY_FAIL__: User failed before being sent into a marketplace for \"security\" reasons\n - __SESSION_CONTINUE_QUALITY_FAIL__: User failed between attempts for \"security\" reasons","examples":["COMPLETE"]},"status_code_2":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"This should be set if the Wall.status_code_1 is MARKETPLACE_FAIL\n\nAllowed values: \n - __URL_HASHING_CHECK_FAILED__: The redirect URL (coming back from the marketplace) failed hashing checks\n - __BROKEN_REDIRECT__: The redirect URL was missing required query params or was unparseable\n - __INVALID_REDIRECT__: The redirect URL was invalid or inconsistent in some way and as a result we could not determine the outcome. This could be if a redirect received did not match the user's most recent attempt.\n - __INVALID_MARKETPLACE_POSTBACK__: The redirect indicated a complete, but no/invalid Postback was received from the marketplace\n - __NO_MARKETPLACE_POSTBACK__: No/invalid Postback was received from the marketplace. Used in cases where the redirect does not contain a status.\n - __COMPLETE_TOO_FAST__: The marketplace indicates the user completed the survey, but we don't think this is valid due to speeding. Generally this cutoff is the 95th percentile of our calculated CompletionTime survey stat.\n - __INTERNAL_ERROR__: Something happened during the handling of this redirect (on our side)","examples":[null]},"ext_status_code_1":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Ext Status Code 1"},"ext_status_code_2":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Ext Status Code 2"},"ext_status_code_3":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Ext Status Code 3"},"report_value":{"anyOf":[{"$ref":"#/components/schemas/ReportValue"},{"type":"null"}]},"report_notes":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Report Notes"},"adjusted_status":{"anyOf":[{"$ref":"#/components/schemas/WallAdjustedStatus"},{"type":"null"}]},"adjusted_timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Adjusted Timestamp"},"user_cpi":{"type":"integer","title":"User Cpi","description":"\n The amount the user would earn from completing this task, if the status was a complete.\n If the BP has no payout xform, the user_cpi is None. This is analogous to the session's\n user_payout.\n ","examples":[123]},"user_cpi_string":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Cpi String","description":"If a payout transformation is configured on this account, this is the amount to display to the user","examples":["123 Points"]}},"additionalProperties":false,"type":"object","required":["source","req_survey_id"],"title":"WallOut"},"WallStatusCode2":{"type":"integer","enum":[12,16,17,13,18,14,15],"title":"WallStatusCode2","description":"This should be set if the Wall.status_code_1 is MARKETPLACE_FAIL"},"YieldManConfig":{"properties":{"category_request":{"$ref":"#/components/schemas/OfferWallCategoryRequest"},"scoring_params":{"$ref":"#/components/schemas/OfferWallRequestYieldmanParams"}},"type":"object","title":"YieldManConfig"}}},"tags":[{"name":"Offerwall","description":"Generate and retrieve various offerwall groupings. These results should be called \"on the \n fly\" just before presenting the results to a respondent. Results greater than 3 minutes old should not be \n presented to the respondent. When a respondent takes any action on a generated offerwall (they go into a \n bucket), the offerwall should be discarded. Any subsequent bucket entrances will fail. The following reserved \n are reserved keywords. However, any additional query parameter that is provided, will be returned back in the \n TaskResponse response in the kwargs attribute.\n\n {'b', 'bp_user_id', 'bpuid', 'country_codes', 'country', 'cpi', 'currency', \n 'description', 'duration', 'entry_link', 'i', 'idx', 'info', 'ip', 'kwargs',\n 'l', 'lang_codes', 'languages', 'loi', 'name', 'payout', 'product_id', \n 'quality', 'quality_category', 'req_loi', 'status', 'task_uri', 'tasks', \n 'tsid', 'uri', 'url', 'country_iso', 'format', 'behavior'}"},{"name":"Status","description":"Retrieving the status of respondent attempts, either by brokerage account filtering, or a specific Task Status ID (TSID) that is provided in the redirect."}]}