GoTo Webinar Registrants API

Registration management for GoTo Webinar — 5 operations to create, list, read and delete registrants, plus read the registration form fields and custom questions configured on a webinar.

OpenAPI Specification

goto-webinar-registrants-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GoTo Webinar 2.0 REST Registrants API
  description: 'We recommend you use the v2 of this API. If you are still using v1, you can access [v1 documentation](/GoToWebinarV1).


    ### Authentication Scopes

    `collab:` must be used when a token is requested from the Authentication API.


    # GoTo Webinar API Overview

    Use the GoTo Webinar API to:

    - Schedule webinars of one or more sessions

    - Tailor your webinars with panelists, polls, questions and surveys

    - Accept registrations

    - Manage registrants and, once the webinar starts, attendees

    - View data about historical and future webinars, registrants and attendees


    Refer to GoTo Webinar product documentation to review the webinar types and product functionality.


    Review call bodies and example call bodies in the API calls for alternate usage.


    Note: Both userKey and organizerKey used in the APIs contain the same value


    ## Getting Started

    1. [Register](/guides/Get%20Started/01_HOW_developerAccount) for a developer account.

    2. Create an [OAuth client](/guides/Get%20Started/02_HOW_createClient) and include the product(s) you plan to develop with.

    3. Obtain a product account as needed. Trial versions will work, but last only 30 days. We recommend a full-featured account, preferably with an Admin role.

    4. Request an [Access Token](/guides/Authentication/03_HOW_accessToken) to make API calls.

    5. Make your first API calls. You can use cURL, Postman, or other API interfaces to make calls.

    '
  version: 2.0.0
servers:
- url: https://api.getgo.com/G2W/rest/v2
security:
- OAuth2: []
tags:
- name: Registrants
  description: Operations available for registrants of a given webinar.
paths:
  /organizers/{organizerKey}/webinars/{webinarKey}/registrants:
    post:
      tags:
      - Registrants
      operationId: createRegistrant
      summary: Create registrant
      description: 'Register an attendee for a scheduled webinar. The response contains the registrantKey and join URL for the registrant. An email will be sent to the registrant unless the organizer turns off the confirmation email setting from the GoTo Webinar website. Please note that you must provide all required fields including custom fields defined during the webinar creation. Use the API call ''Get registration fields'' to get a list of all fields, if they are required, and their possible values. At this time there are two versions of the ''Create Registrant'' call. The first version only accepts firstName, lastName, and email and ignores all other fields. If you have custom fields or want to capture additional information this version won''t work for you. The second version allows you to pass all required and optional fields, including custom fields defined when creating the webinar. To use the second version you must pass the Accept header value as ''application/json'' instead of ''application/vnd.citrix.g2wapi-v1.1+json.

        '
      parameters:
      - $ref: '#/components/parameters/organizerKey'
      - $ref: '#/components/parameters/webinarKey'
      - name: Accept
        in: header
        description: 'Set to ''application/json'' to make a registration using fields (custom or default) additional to the basic ones or set it to ''application/vnd.citrix.g2wapi-v1.1+json'' for just basic fields(firstName, lastName, and email).

          '
        required: false
        schema:
          type: string
      - name: resendConfirmation
        in: query
        description: Indicates whether the confirmation email should be resent when a registrant is re-registered. The default value is false.
        required: false
        schema:
          type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegistrantFields'
        description: The registrant details. To get all possible values run the API call 'Get registration fields' which is also part of this documentation.
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistrantCreated'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '409':
          description: The user is already registered
      x-codeSamples:
      - lang: Node + Axios
        source: "var axios = require(\"axios\").default;\n\nvar options = {\n  method: 'POST',\n  url: 'https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants',\n  params: {resendConfirmation: 'SOME_BOOLEAN_VALUE'},\n  headers: {\n    Accept: 'SOME_STRING_VALUE',\n    Authorization: 'Bearer REPLACE_BEARER_TOKEN',\n  },\n  data: {\n    firstName: 'string',\n    lastName: 'string',\n    email: 'string',\n    source: 'string',\n    address: 'string',\n    city: 'string',\n    state: 'string',\n    zipCode: 'string',\n    country: 'string',\n    phone: 'string',\n    organization: 'string',\n    jobTitle: 'string',\n    questionsAndComments: 'string',\n    industry: 'string',\n    numberOfEmployees: 'string',\n    purchasingTimeFrame: 'string',\n    purchasingRole: 'string',\n    responses: [{questionKey: 0, responseText: 'string', answerKey: 0}]\n  }\n};\n\naxios.request(options).then(function (response) {\n  console.log(response.data);\n}).catch(function (error) {\n  console.error(error);\n});"
      - lang: Shell + Curl
        source: "curl --request POST \\\n  --url 'https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants?resendConfirmation=SOME_BOOLEAN_VALUE' \\\n  --header 'Accept: SOME_STRING_VALUE' \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --header 'content-type: application/json' \\\n  --data '{\"firstName\":\"string\",\"lastName\":\"string\",\"email\":\"string\",\"source\":\"string\",\"address\":\"string\",\"city\":\"string\",\"state\":\"string\",\"zipCode\":\"string\",\"country\":\"string\",\"phone\":\"string\",\"organization\":\"string\",\"jobTitle\":\"string\",\"questionsAndComments\":\"string\",\"industry\":\"string\",\"numberOfEmployees\":\"string\",\"purchasingTimeFrame\":\"string\",\"purchasingRole\":\"string\",\"responses\":[{\"questionKey\":0,\"responseText\":\"string\",\"answerKey\":0}]}'"
      - lang: Python + Python3
        source: "import http.client\n\nconn = http.client.HTTPSConnection(\"api.getgo.com\")\n\npayload = \"{\\\"firstName\\\":\\\"string\\\",\\\"lastName\\\":\\\"string\\\",\\\"email\\\":\\\"string\\\",\\\"source\\\":\\\"string\\\",\\\"address\\\":\\\"string\\\",\\\"city\\\":\\\"string\\\",\\\"state\\\":\\\"string\\\",\\\"zipCode\\\":\\\"string\\\",\\\"country\\\":\\\"string\\\",\\\"phone\\\":\\\"string\\\",\\\"organization\\\":\\\"string\\\",\\\"jobTitle\\\":\\\"string\\\",\\\"questionsAndComments\\\":\\\"string\\\",\\\"industry\\\":\\\"string\\\",\\\"numberOfEmployees\\\":\\\"string\\\",\\\"purchasingTimeFrame\\\":\\\"string\\\",\\\"purchasingRole\\\":\\\"string\\\",\\\"responses\\\":[{\\\"questionKey\\\":0,\\\"responseText\\\":\\\"string\\\",\\\"answerKey\\\":0}]}\"\n\nheaders = {\n    'Accept': \"SOME_STRING_VALUE\",\n    'Authorization': \"Bearer REPLACE_BEARER_TOKEN\",\n    'content-type': \"application/json\"\n    }\n\nconn.request(\"POST\", \"/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants?resendConfirmation=SOME_BOOLEAN_VALUE\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
      - lang: Php + Http2
        source: "<?php\n\n$client = new http\\Client;\n$request = new http\\Client\\Request;\n\n$body = new http\\Message\\Body;\n$body->append('{\"firstName\":\"string\",\"lastName\":\"string\",\"email\":\"string\",\"source\":\"string\",\"address\":\"string\",\"city\":\"string\",\"state\":\"string\",\"zipCode\":\"string\",\"country\":\"string\",\"phone\":\"string\",\"organization\":\"string\",\"jobTitle\":\"string\",\"questionsAndComments\":\"string\",\"industry\":\"string\",\"numberOfEmployees\":\"string\",\"purchasingTimeFrame\":\"string\",\"purchasingRole\":\"string\",\"responses\":[{\"questionKey\":0,\"responseText\":\"string\",\"answerKey\":0}]}');\n\n$request->setRequestUrl('https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants');\n$request->setRequestMethod('POST');\n$request->setBody($body);\n\n$request->setQuery(new http\\QueryString([\n  'resendConfirmation' => 'SOME_BOOLEAN_VALUE'\n]));\n\n$request->setHeaders([\n  'Accept' => 'SOME_STRING_VALUE',\n  'Authorization' => 'Bearer REPLACE_BEARER_TOKEN',\n  'content-type' => 'application/json'\n]);\n\n$client->enqueue($request)->send();\n$response = $client->getResponse();\n\necho $response->getBody();"
      - lang: Ruby + Native
        source: 'require ''uri''

          require ''net/http''

          require ''openssl''


          url = URI("https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants?resendConfirmation=SOME_BOOLEAN_VALUE")


          http = Net::HTTP.new(url.host, url.port)

          http.use_ssl = true

          http.verify_mode = OpenSSL::SSL::VERIFY_NONE


          request = Net::HTTP::Post.new(url)

          request["Accept"] = ''SOME_STRING_VALUE''

          request["Authorization"] = ''Bearer REPLACE_BEARER_TOKEN''

          request["content-type"] = ''application/json''

          request.body = "{\"firstName\":\"string\",\"lastName\":\"string\",\"email\":\"string\",\"source\":\"string\",\"address\":\"string\",\"city\":\"string\",\"state\":\"string\",\"zipCode\":\"string\",\"country\":\"string\",\"phone\":\"string\",\"organization\":\"string\",\"jobTitle\":\"string\",\"questionsAndComments\":\"string\",\"industry\":\"string\",\"numberOfEmployees\":\"string\",\"purchasingTimeFrame\":\"string\",\"purchasingRole\":\"string\",\"responses\":[{\"questionKey\":0,\"responseText\":\"string\",\"answerKey\":0}]}"


          response = http.request(request)

          puts response.read_body'
    get:
      tags:
      - Registrants
      operationId: getAllRegistrantsForWebinar
      summary: Get registrants
      description: 'Retrieve registration details for all registrants of a specific webinar. Registrant details will not include all fields captured when creating the registrant. To see all data, use the API call ''Get Registrant''. Registrants can have one of the following states; WAITING - registrant registered and is awaiting approval (where organizer has required approval), APPROVED - registrant registered and is approved, and DENIED - registrant registered and was denied. We have pagination support for this API now. When you pass the page or limit parameter the response will follow RegistrantPaginatedResponse schema but without these params response will be in RegistrantArray schema as before

        '
      parameters:
      - $ref: '#/components/parameters/organizerKey'
      - $ref: '#/components/parameters/webinarKey'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/RegistrantArray'
                - $ref: '#/components/schemas/RegistrantPaginatedResponse'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
      - lang: Node + Axios
        source: "var axios = require(\"axios\").default;\n\nvar options = {\n  method: 'GET',\n  url: 'https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants',\n  params: {page: 'SOME_INTEGER_VALUE', limit: 'SOME_INTEGER_VALUE'},\n  headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}\n};\n\naxios.request(options).then(function (response) {\n  console.log(response.data);\n}).catch(function (error) {\n  console.error(error);\n});"
      - lang: Shell + Curl
        source: "curl --request GET \\\n  --url 'https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE' \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'"
      - lang: Python + Python3
        source: 'import http.client


          conn = http.client.HTTPSConnection("api.getgo.com")


          headers = { ''Authorization'': "Bearer REPLACE_BEARER_TOKEN" }


          conn.request("GET", "/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE", headers=headers)


          res = conn.getresponse()

          data = res.read()


          print(data.decode("utf-8"))'
      - lang: Php + Http2
        source: "<?php\n\n$client = new http\\Client;\n$request = new http\\Client\\Request;\n\n$request->setRequestUrl('https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants');\n$request->setRequestMethod('GET');\n$request->setQuery(new http\\QueryString([\n  'page' => 'SOME_INTEGER_VALUE',\n  'limit' => 'SOME_INTEGER_VALUE'\n]));\n\n$request->setHeaders([\n  'Authorization' => 'Bearer REPLACE_BEARER_TOKEN'\n]);\n\n$client->enqueue($request)->send();\n$response = $client->getResponse();\n\necho $response->getBody();"
      - lang: Ruby + Native
        source: 'require ''uri''

          require ''net/http''

          require ''openssl''


          url = URI("https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE")


          http = Net::HTTP.new(url.host, url.port)

          http.use_ssl = true

          http.verify_mode = OpenSSL::SSL::VERIFY_NONE


          request = Net::HTTP::Get.new(url)

          request["Authorization"] = ''Bearer REPLACE_BEARER_TOKEN''


          response = http.request(request)

          puts response.read_body'
  /organizers/{organizerKey}/webinars/{webinarKey}/registrants/{registrantKey}:
    delete:
      tags:
      - Registrants
      operationId: deleteRegistrant
      summary: Delete registrant
      description: Removes a webinar registrant from current registrations for the specified webinar. The webinar must be a scheduled, future webinar.
      parameters:
      - $ref: '#/components/parameters/organizerKey'
      - $ref: '#/components/parameters/webinarKey'
      - $ref: '#/components/parameters/registrantKey'
      responses:
        '204':
          description: No content
        '400':
          description: Bad Request
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
      - lang: Node + Axios
        source: "var axios = require(\"axios\").default;\n\nvar options = {\n  method: 'DELETE',\n  url: 'https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/%7BregistrantKey%7D',\n  headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}\n};\n\naxios.request(options).then(function (response) {\n  console.log(response.data);\n}).catch(function (error) {\n  console.error(error);\n});"
      - lang: Shell + Curl
        source: "curl --request DELETE \\\n  --url https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/%7BregistrantKey%7D \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'"
      - lang: Python + Python3
        source: 'import http.client


          conn = http.client.HTTPSConnection("api.getgo.com")


          headers = { ''Authorization'': "Bearer REPLACE_BEARER_TOKEN" }


          conn.request("DELETE", "/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/%7BregistrantKey%7D", headers=headers)


          res = conn.getresponse()

          data = res.read()


          print(data.decode("utf-8"))'
      - lang: Php + Http2
        source: "<?php\n\n$client = new http\\Client;\n$request = new http\\Client\\Request;\n\n$request->setRequestUrl('https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/%7BregistrantKey%7D');\n$request->setRequestMethod('DELETE');\n$request->setHeaders([\n  'Authorization' => 'Bearer REPLACE_BEARER_TOKEN'\n]);\n\n$client->enqueue($request)->send();\n$response = $client->getResponse();\n\necho $response->getBody();"
      - lang: Ruby + Native
        source: 'require ''uri''

          require ''net/http''

          require ''openssl''


          url = URI("https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/%7BregistrantKey%7D")


          http = Net::HTTP.new(url.host, url.port)

          http.use_ssl = true

          http.verify_mode = OpenSSL::SSL::VERIFY_NONE


          request = Net::HTTP::Delete.new(url)

          request["Authorization"] = ''Bearer REPLACE_BEARER_TOKEN''


          response = http.request(request)

          puts response.read_body'
    get:
      tags:
      - Registrants
      operationId: getRegistrant
      summary: Get registrant
      description: Retrieve registration details for a specific registrant.
      parameters:
      - $ref: '#/components/parameters/organizerKey'
      - $ref: '#/components/parameters/webinarKey'
      - $ref: '#/components/parameters/registrantKey'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistrantDetailed'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
      - lang: Node + Axios
        source: "var axios = require(\"axios\").default;\n\nvar options = {\n  method: 'GET',\n  url: 'https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/%7BregistrantKey%7D',\n  headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}\n};\n\naxios.request(options).then(function (response) {\n  console.log(response.data);\n}).catch(function (error) {\n  console.error(error);\n});"
      - lang: Shell + Curl
        source: "curl --request GET \\\n  --url https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/%7BregistrantKey%7D \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'"
      - lang: Python + Python3
        source: 'import http.client


          conn = http.client.HTTPSConnection("api.getgo.com")


          headers = { ''Authorization'': "Bearer REPLACE_BEARER_TOKEN" }


          conn.request("GET", "/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/%7BregistrantKey%7D", headers=headers)


          res = conn.getresponse()

          data = res.read()


          print(data.decode("utf-8"))'
      - lang: Php + Http2
        source: "<?php\n\n$client = new http\\Client;\n$request = new http\\Client\\Request;\n\n$request->setRequestUrl('https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/%7BregistrantKey%7D');\n$request->setRequestMethod('GET');\n$request->setHeaders([\n  'Authorization' => 'Bearer REPLACE_BEARER_TOKEN'\n]);\n\n$client->enqueue($request)->send();\n$response = $client->getResponse();\n\necho $response->getBody();"
      - lang: Ruby + Native
        source: 'require ''uri''

          require ''net/http''

          require ''openssl''


          url = URI("https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/%7BregistrantKey%7D")


          http = Net::HTTP.new(url.host, url.port)

          http.use_ssl = true

          http.verify_mode = OpenSSL::SSL::VERIFY_NONE


          request = Net::HTTP::Get.new(url)

          request["Authorization"] = ''Bearer REPLACE_BEARER_TOKEN''


          response = http.request(request)

          puts response.read_body'
  /organizers/{organizerKey}/webinars/{webinarKey}/registrants/fields:
    get:
      tags:
      - Registrants
      operationId: getRegistrationFields
      summary: Get registration fields
      description: Retrieve required, optional registration, and custom questions for a specified webinar.
      parameters:
      - $ref: '#/components/parameters/organizerKey'
      - $ref: '#/components/parameters/webinarKey'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistrationFields'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
      - lang: Node + Axios
        source: "var axios = require(\"axios\").default;\n\nvar options = {\n  method: 'GET',\n  url: 'https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/fields',\n  headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}\n};\n\naxios.request(options).then(function (response) {\n  console.log(response.data);\n}).catch(function (error) {\n  console.error(error);\n});"
      - lang: Shell + Curl
        source: "curl --request GET \\\n  --url https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/fields \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'"
      - lang: Python + Python3
        source: 'import http.client


          conn = http.client.HTTPSConnection("api.getgo.com")


          headers = { ''Authorization'': "Bearer REPLACE_BEARER_TOKEN" }


          conn.request("GET", "/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/fields", headers=headers)


          res = conn.getresponse()

          data = res.read()


          print(data.decode("utf-8"))'
      - lang: Php + Http2
        source: "<?php\n\n$client = new http\\Client;\n$request = new http\\Client\\Request;\n\n$request->setRequestUrl('https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/fields');\n$request->setRequestMethod('GET');\n$request->setHeaders([\n  'Authorization' => 'Bearer REPLACE_BEARER_TOKEN'\n]);\n\n$client->enqueue($request)->send();\n$response = $client->getResponse();\n\necho $response->getBody();"
      - lang: Ruby + Native
        source: 'require ''uri''

          require ''net/http''

          require ''openssl''


          url = URI("https://api.getgo.com/G2W/rest/v2/organizers/%7BorganizerKey%7D/webinars/%7BwebinarKey%7D/registrants/fields")


          http = Net::HTTP.new(url.host, url.port)

          http.use_ssl = true

          http.verify_mode = OpenSSL::SSL::VERIFY_NONE


          request = Net::HTTP::Get.new(url)

          request["Authorization"] = ''Bearer REPLACE_BEARER_TOKEN''


          response = http.request(request)

          puts response.read_body'
components:
  schemas:
    RegistrantArray:
      type: array
      items:
        $ref: '#/components/schemas/Registrant'
    RegistrationField:
      description: Describes a field for a webinar registration.
      required:
      - field
      - required
      - maxSize
      properties:
        field:
          type: string
          description: The name of the registration field
        answers:
          type: array
          items:
            type: string
          description: List of choices for a multiple choice registration field
        required:
          type: boolean
          description: Indicates whether the custom registration field is compulsory
        maxSize:
          type: integer
          format: int32
          description: The character size of the custom registration field (max 128)
    RegistrationAnswer:
      description: Describes an answer to a multiple choice custom registration field.
      required:
      - answer
      - answerKey
      properties:
        answer:
          type: string
          description: The answer value
        answerKey:
          type: integer
          format: int64
          description: The answer key
    Registrant:
      description: Describes a webinar registrant
      required:
      - lastName
      - email
      - firstName
      - registrantKey
      - registrationDate
      - status
      - joinUrl
      - timeZone
      properties:
        lastName:
          type: string
          description: The registrant's last name
        email:
          type: string
          description: The registrant's email address
        firstName:
          type: string
          description: The registrant's first name
        registrantKey:
          type: integer
          format: int64
          description: The registrant's key
        registrationDate:
          type: string
          format: date-time
          description: The registration date and time
        status:
          type: string
          enum:
          - APPROVED
          - DENIED
          - WAITING
          description: The registration status
        joinUrl:
          type: string
          description: The URL the registrant will use to join the webinar
        timeZone:
          type: string
          description: The time zone where the webinar will take place
    RegistrantQAResponse:
      description: 'Describes a completed registration question for a webinar registrant. If you use "Multiple choice" questions the response contains the numeric answerKey, otherwise the answer text.

        '
      required:
      - questionKey
      properties:
        questionKey:
          type: integer
          format: int64
          description: The unique key of the question
        responseText:
          type: string
          description: Answer of the question.
        answerKey:
          type: integer
          format: int64
          description: The numeric key of the answer to a multiple-choice question.
    RegistrationFields:
      description: The fields to be completed on the webinar registration form.
      required:
      - questions
      - fields
      properties:
        questions:
          type: array
          items:
            $ref: '#/components/schemas/RegistrationQuestion'
          description: Custom fields created by the organizer for the webinar registration form
        fields:
          type: array
          items:
            $ref: '#/components/schemas/RegistrationField'
          description: The default fields the organizer has selected for the webinar registration form
    RegistrantPaginatedResponse:
      description: Describes a list of webinar sessions
      required:
      - data
      - total
      - page
      - limit
      - pageSize
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Registrant'
        total:
          type: integer
          format: int32
          description: The total elements
        page:
          type: integer
          format: int32
          description: The current page number. The first page is 0
        limit:
          type: integer
          format: int32
          description: The number of items per page
        pageSize:
          type: integer
          format: int32
          description: The actual number of items in the current page
    RegistrantCreated:
      description: Describes a newly created webinar registrant.
      required:
      - registrantKey
      - joinUrl
      properties:
        registrantKey:
          type: integer
          format: int64
          description: The registrant's key
        joinUrl:
          type: string
          description: The URL the registrant will use to join the webinar.
    RegistrantDetailed:
      description: Detailed description of a webinar registrant with all registration fields.
      required:
      - firstName
      - lastName
      - email
      - registrantKey
      - registrationDate
      - status
      - joinUrl
      - timeZone
      properties:
        lastName:
          type: string
          description: The registrant's last name
        email:
          type: string
          description: The registrant's email address
        firstName:
          type: string
          description: The registrant's first name
        registrantKey:
          type: integer
          format: int64
          description: The registrant's key
        registrationDate:
          type: string
          format: date-time
          description: The registration date and time
        source:
          type: string
          description: The source that led to the registration. This can be any string like 'Newsletter 123' or 'Marketing campaign ABC'
        status:
          type: string
          enum:
          - APPROVED
          - DENIED
          - WAITING
          description: The registration status
        joinUrl:
          type: string
          description: The URL the registrant will use to join the webinar
        timeZone:
          type: string
          description: The time zone where the webinar will take place
        phone:
          type: string
          description: The registrant's phone
        state:
          type: string
          description: The registrant's state (US only)
        city:
          type: string
          description: The registrant's city
        organization:
          type: string
          description: The registrant's organization
        zipCode:
          type: string
          description: The registrant's zip (post) code
        numberOfEmployees:
          type: string
          description: The size in employees of the registrant's organization
        industry:
          type: string
          description: The type of industry the registrant's organization belongs to
        jobTitle:
          type: string
          description: The registrant's job title
        purchasingRole:
          type: string
          description: The registrant's role in purchasing the product
        implementationTimeFrame:
          type: string
          description: The time frame within which the product will be purchased
        purchasingTimeFrame:
          type: string
          description: The time frame within which the product will be purchased
        questionsAndComments:
          type: string
          description: Any questions or comments the registrant made at the time of registration
        employeeCount:
          type: string
          description: The size in employees of the registrant's organization
        country:
          type: string
          description: The registrant's country
        address:
          type: string
          description: The registrant's address
        type:
          type: string
          description: The type is REGULAR for 'One session' and 'Sequence' webinars. The type LATE is for registrants registering for past webinars. For webinar series this parameter is not passed
          enum:
          - LATE
          - REGULAR
        unsubscribed:
          type: boolean
          description: Indicates whether the registrant opted-out from receiving other emails from this webinar's organizer
        responses:
          description: Responses to custom questions
          type: array
          items:
            $ref: '#/components/schemas/CustomAnswers'
    RegistrantFields:
      description: Detailed description of a all fields to register a registrant for a webinar.
      required:
      - firstName
      - lastName
      - email
      properties:
        firstName:
          type: string
          description: The registrant's first name
        lastName:
          type: string
          description: The registrant's last name
        email:
          type: string
          description: The registrant's email address
        source:
          type: string
          description: The source that led to the registration. This can be any string like 'Newsletter 123' or 'Marketing campaign ABC'
        address:
          type: string
          description: The registrant's address
        city:
          type: string
          description: The registrant's city
        state:
          type: string
          description: The registrant's state (US only)
        zipCode:
          type: string
          description: The registrant's zip (post) 

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/goto-webinar/refs/heads/main/openapi/goto-webinar-registrants-api-openapi.yml