<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="surveys_v2.html">Surveys API</a> . <a href="surveys_v2.surveys.html">surveys</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(surveyUrlId)</a></code></p>
<p class="firstline">Removes a survey from view in all user GET requests.</p>
<p class="toc_element">
  <code><a href="#get">get(surveyUrlId)</a></code></p>
<p class="firstline">Retrieves information about the specified survey.</p>
<p class="toc_element">
  <code><a href="#insert">insert(body)</a></code></p>
<p class="firstline">Creates a survey.</p>
<p class="toc_element">
  <code><a href="#list">list(startIndex=None, maxResults=None, token=None)</a></code></p>
<p class="firstline">Lists the surveys owned by the authenticated user.</p>
<p class="toc_element">
  <code><a href="#start">start(resourceId, body)</a></code></p>
<p class="firstline">Begins running a survey.</p>
<p class="toc_element">
  <code><a href="#stop">stop(resourceId)</a></code></p>
<p class="firstline">Stops a running survey.</p>
<p class="toc_element">
  <code><a href="#update">update(surveyUrlId, body)</a></code></p>
<p class="firstline">Updates a survey. Currently the only property that can be updated is the owners property.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(surveyUrlId)</code>
  <pre>Removes a survey from view in all user GET requests.

Args:
  surveyUrlId: string, External URL ID for the survey. (required)

Returns:
  An object of the form:

    {
    "requestId": "A String", # Unique request ID used for logging and debugging. Please include in any error reporting or troubleshooting requests.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(surveyUrlId)</code>
  <pre>Retrieves information about the specified survey.

Args:
  surveyUrlId: string, External URL ID for the survey. (required)

Returns:
  An object of the form:

    { # Representation of an individual survey object.
      "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
        "A String",
      ],
      "description": "A String", # Text description of the survey.
      "title": "A String", # Optional name that will be given to the survey.
      "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
      "state": "A String", # State that the survey is in.
      "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
        "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
        "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
        "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
          "A String",
        ],
        "populationSource": "A String", # Online population source where the respondents are sampled from.
        "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
          "A String",
        ],
        "gender": "A String", # Optional gender to target.
      },
      "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
        "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
        "currencyCode": "A String", # Currency code that the cost is given in.
        "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
        "maxCostPerResponseNanos": "A String", # *Deprecated* Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days. This will no longer be available after June 2018.
      },
      "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
      "questions": [ # List of questions defining the survey.
        { # Message defining the question specifications.
          "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
          "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
          "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
            "A String",
          ],
          "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
          "question": "A String", # Required question text shown to the respondent.
          "numStars": "A String", # Number of stars to use for ratings questions.
          "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
          "videoId": "A String", # The YouTube video ID to be show in video questions.
          "answers": [ # Required list of answer options for a question.
            "A String",
          ],
          "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
          "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
          "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
          "images": [
            { # Container object for image data and alt_text.
              "url": "A String", # The read-only URL for the hosted images.
              "altText": "A String", # The alt text property used in image tags is required for all images.
              "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
            },
          ],
          "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
          "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
            "A String",
          ],
          "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
          "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
          "openTextPlaceholder": "A String", # Placeholder text for an open text question.
        },
      ],
      "wantedResponseCount": 42, # Number of responses desired for the survey.
      "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
        "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
        "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(body)</code>
  <pre>Creates a survey.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{ # Representation of an individual survey object.
    "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
      "A String",
    ],
    "description": "A String", # Text description of the survey.
    "title": "A String", # Optional name that will be given to the survey.
    "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
    "state": "A String", # State that the survey is in.
    "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
      "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
      "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
      "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
        "A String",
      ],
      "populationSource": "A String", # Online population source where the respondents are sampled from.
      "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
        "A String",
      ],
      "gender": "A String", # Optional gender to target.
    },
    "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
      "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
      "currencyCode": "A String", # Currency code that the cost is given in.
      "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
      "maxCostPerResponseNanos": "A String", # *Deprecated* Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days. This will no longer be available after June 2018.
    },
    "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
    "questions": [ # List of questions defining the survey.
      { # Message defining the question specifications.
        "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
        "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
        "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
          "A String",
        ],
        "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
        "question": "A String", # Required question text shown to the respondent.
        "numStars": "A String", # Number of stars to use for ratings questions.
        "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
        "videoId": "A String", # The YouTube video ID to be show in video questions.
        "answers": [ # Required list of answer options for a question.
          "A String",
        ],
        "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
        "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
        "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
        "images": [
          { # Container object for image data and alt_text.
            "url": "A String", # The read-only URL for the hosted images.
            "altText": "A String", # The alt text property used in image tags is required for all images.
            "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
          },
        ],
        "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
        "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
          "A String",
        ],
        "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
        "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
        "openTextPlaceholder": "A String", # Placeholder text for an open text question.
      },
    ],
    "wantedResponseCount": 42, # Number of responses desired for the survey.
    "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
      "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
      "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
    },
  }


Returns:
  An object of the form:

    { # Representation of an individual survey object.
      "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
        "A String",
      ],
      "description": "A String", # Text description of the survey.
      "title": "A String", # Optional name that will be given to the survey.
      "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
      "state": "A String", # State that the survey is in.
      "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
        "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
        "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
        "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
          "A String",
        ],
        "populationSource": "A String", # Online population source where the respondents are sampled from.
        "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
          "A String",
        ],
        "gender": "A String", # Optional gender to target.
      },
      "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
        "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
        "currencyCode": "A String", # Currency code that the cost is given in.
        "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
        "maxCostPerResponseNanos": "A String", # *Deprecated* Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days. This will no longer be available after June 2018.
      },
      "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
      "questions": [ # List of questions defining the survey.
        { # Message defining the question specifications.
          "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
          "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
          "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
            "A String",
          ],
          "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
          "question": "A String", # Required question text shown to the respondent.
          "numStars": "A String", # Number of stars to use for ratings questions.
          "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
          "videoId": "A String", # The YouTube video ID to be show in video questions.
          "answers": [ # Required list of answer options for a question.
            "A String",
          ],
          "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
          "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
          "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
          "images": [
            { # Container object for image data and alt_text.
              "url": "A String", # The read-only URL for the hosted images.
              "altText": "A String", # The alt text property used in image tags is required for all images.
              "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
            },
          ],
          "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
          "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
            "A String",
          ],
          "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
          "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
          "openTextPlaceholder": "A String", # Placeholder text for an open text question.
        },
      ],
      "wantedResponseCount": 42, # Number of responses desired for the survey.
      "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
        "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
        "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(startIndex=None, maxResults=None, token=None)</code>
  <pre>Lists the surveys owned by the authenticated user.

Args:
  startIndex: integer, A parameter
  maxResults: integer, A parameter
  token: string, A parameter

Returns:
  An object of the form:

    {
    "tokenPagination": {
      "nextPageToken": "A String",
      "previousPageToken": "A String",
    },
    "pageInfo": {
      "totalResults": 42,
      "startIndex": 42,
      "resultPerPage": 42,
    },
    "resources": [ # An individual survey resource.
      { # Representation of an individual survey object.
          "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
            "A String",
          ],
          "description": "A String", # Text description of the survey.
          "title": "A String", # Optional name that will be given to the survey.
          "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
          "state": "A String", # State that the survey is in.
          "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
            "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
            "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
            "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
              "A String",
            ],
            "populationSource": "A String", # Online population source where the respondents are sampled from.
            "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
              "A String",
            ],
            "gender": "A String", # Optional gender to target.
          },
          "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
            "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
            "currencyCode": "A String", # Currency code that the cost is given in.
            "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
            "maxCostPerResponseNanos": "A String", # *Deprecated* Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days. This will no longer be available after June 2018.
          },
          "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
          "questions": [ # List of questions defining the survey.
            { # Message defining the question specifications.
              "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
              "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
              "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
                "A String",
              ],
              "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
              "question": "A String", # Required question text shown to the respondent.
              "numStars": "A String", # Number of stars to use for ratings questions.
              "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
              "videoId": "A String", # The YouTube video ID to be show in video questions.
              "answers": [ # Required list of answer options for a question.
                "A String",
              ],
              "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
              "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
              "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
              "images": [
                { # Container object for image data and alt_text.
                  "url": "A String", # The read-only URL for the hosted images.
                  "altText": "A String", # The alt text property used in image tags is required for all images.
                  "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
                },
              ],
              "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
              "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
                "A String",
              ],
              "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
              "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
              "openTextPlaceholder": "A String", # Placeholder text for an open text question.
            },
          ],
          "wantedResponseCount": 42, # Number of responses desired for the survey.
          "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
            "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
            "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
          },
        },
    ],
    "requestId": "A String", # Unique request ID used for logging and debugging. Please include in any error reporting or troubleshooting requests.
  }</pre>
</div>

<div class="method">
    <code class="details" id="start">start(resourceId, body)</code>
  <pre>Begins running a survey.

Args:
  resourceId: string, A parameter (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "maxCostPerResponseNanos": "A String", # *Deprecated* Threshold to start a survey automatically if the quoted prices is less than or equal to this value. See Survey.Cost for more details. This will no longer be available after June 2018.
  }


Returns:
  An object of the form:

    {
    "requestId": "A String", # Unique request ID used for logging and debugging. Please include in any error reporting or troubleshooting requests.
  }</pre>
</div>

<div class="method">
    <code class="details" id="stop">stop(resourceId)</code>
  <pre>Stops a running survey.

Args:
  resourceId: string, A parameter (required)

Returns:
  An object of the form:

    {
    "requestId": "A String", # Unique request ID used for logging and debugging. Please include in any error reporting or troubleshooting requests.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(surveyUrlId, body)</code>
  <pre>Updates a survey. Currently the only property that can be updated is the owners property.

Args:
  surveyUrlId: string, External URL ID for the survey. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Representation of an individual survey object.
    "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
      "A String",
    ],
    "description": "A String", # Text description of the survey.
    "title": "A String", # Optional name that will be given to the survey.
    "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
    "state": "A String", # State that the survey is in.
    "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
      "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
      "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
      "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
        "A String",
      ],
      "populationSource": "A String", # Online population source where the respondents are sampled from.
      "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
        "A String",
      ],
      "gender": "A String", # Optional gender to target.
    },
    "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
      "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
      "currencyCode": "A String", # Currency code that the cost is given in.
      "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
      "maxCostPerResponseNanos": "A String", # *Deprecated* Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days. This will no longer be available after June 2018.
    },
    "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
    "questions": [ # List of questions defining the survey.
      { # Message defining the question specifications.
        "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
        "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
        "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
          "A String",
        ],
        "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
        "question": "A String", # Required question text shown to the respondent.
        "numStars": "A String", # Number of stars to use for ratings questions.
        "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
        "videoId": "A String", # The YouTube video ID to be show in video questions.
        "answers": [ # Required list of answer options for a question.
          "A String",
        ],
        "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
        "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
        "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
        "images": [
          { # Container object for image data and alt_text.
            "url": "A String", # The read-only URL for the hosted images.
            "altText": "A String", # The alt text property used in image tags is required for all images.
            "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
          },
        ],
        "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
        "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
          "A String",
        ],
        "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
        "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
        "openTextPlaceholder": "A String", # Placeholder text for an open text question.
      },
    ],
    "wantedResponseCount": 42, # Number of responses desired for the survey.
    "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
      "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
      "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
    },
  }


Returns:
  An object of the form:

    { # Representation of an individual survey object.
      "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
        "A String",
      ],
      "description": "A String", # Text description of the survey.
      "title": "A String", # Optional name that will be given to the survey.
      "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
      "state": "A String", # State that the survey is in.
      "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
        "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
        "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
        "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
          "A String",
        ],
        "populationSource": "A String", # Online population source where the respondents are sampled from.
        "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
          "A String",
        ],
        "gender": "A String", # Optional gender to target.
      },
      "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
        "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
        "currencyCode": "A String", # Currency code that the cost is given in.
        "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
        "maxCostPerResponseNanos": "A String", # *Deprecated* Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days. This will no longer be available after June 2018.
      },
      "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
      "questions": [ # List of questions defining the survey.
        { # Message defining the question specifications.
          "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
          "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
          "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
            "A String",
          ],
          "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
          "question": "A String", # Required question text shown to the respondent.
          "numStars": "A String", # Number of stars to use for ratings questions.
          "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
          "videoId": "A String", # The YouTube video ID to be show in video questions.
          "answers": [ # Required list of answer options for a question.
            "A String",
          ],
          "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
          "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
          "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
          "images": [
            { # Container object for image data and alt_text.
              "url": "A String", # The read-only URL for the hosted images.
              "altText": "A String", # The alt text property used in image tags is required for all images.
              "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
            },
          ],
          "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
          "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
            "A String",
          ],
          "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
          "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
          "openTextPlaceholder": "A String", # Placeholder text for an open text question.
        },
      ],
      "wantedResponseCount": 42, # Number of responses desired for the survey.
      "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
        "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
        "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
      },
    }</pre>
</div>

</body></html>