GoTo Webinar Sessions API

Session reporting for GoTo Webinar — 7 operations covering an organizer's sessions in a date range, the sessions of a webinar, one session, its attendance performance, and its polls, Q&A questions and surveys.

OpenAPI Specification

goto-webinar-sessions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GoTo Webinar 2.0 REST Sessions 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: Sessions
  description: Operations available for sessions of a given webinar.
paths:
  /organizers/{organizerKey}/sessions:
    get:
      tags:
      - Sessions
      operationId: getOrganizerSessions
      summary: Get organizer sessions
      description: Retrieve all completed sessions of all the webinars of a given organizer.
      parameters:
      - $ref: '#/components/parameters/organizerKey'
      - $ref: '#/components/parameters/requiredFromTime'
      - $ref: '#/components/parameters/requiredToTime'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/size'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportingSessionsResponse'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
      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/sessions',\n  params: {\n    fromTime: '2020-03-13T10:00:00Z',\n    toTime: '2020-03-13T22:00:00Z',\n    page: 'SOME_INTEGER_VALUE',\n    size: 'SOME_INTEGER_VALUE'\n  },\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/sessions?fromTime=2020-03-13T10%3A00%3A00Z&toTime=2020-03-13T22%3A00%3A00Z&page=SOME_INTEGER_VALUE&size=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/sessions?fromTime=2020-03-13T10%3A00%3A00Z&toTime=2020-03-13T22%3A00%3A00Z&page=SOME_INTEGER_VALUE&size=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/sessions');\n$request->setRequestMethod('GET');\n$request->setQuery(new http\\QueryString([\n  'fromTime' => '2020-03-13T10:00:00Z',\n  'toTime' => '2020-03-13T22:00:00Z',\n  'page' => 'SOME_INTEGER_VALUE',\n  'size' => '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/sessions?fromTime=2020-03-13T10%3A00%3A00Z&toTime=2020-03-13T22%3A00%3A00Z&page=SOME_INTEGER_VALUE&size=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}/sessions:
    get:
      tags:
      - Sessions
      operationId: getAllSessions
      summary: Get webinar sessions
      description: Retrieves details for all past sessions of a specific webinar.
      parameters:
      - $ref: '#/components/parameters/organizerKey'
      - $ref: '#/components/parameters/webinarKey'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/size'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportingSessionsResponse'
        '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/sessions',\n  params: {page: 'SOME_INTEGER_VALUE', size: '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/sessions?page=SOME_INTEGER_VALUE&size=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/sessions?page=SOME_INTEGER_VALUE&size=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/sessions');\n$request->setRequestMethod('GET');\n$request->setQuery(new http\\QueryString([\n  'page' => 'SOME_INTEGER_VALUE',\n  'size' => '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/sessions?page=SOME_INTEGER_VALUE&size=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}/sessions/{sessionKey}:
    get:
      tags:
      - Sessions
      operationId: getWebinarSession
      summary: Get webinar session
      description: 'Retrieves attendance details for a specific webinar session that has ended. If attendees attended the session (''registrantsAttended''), specific attendance details, such as attendenceTime for a registrant, will also be retrieved.

        '
      parameters:
      - $ref: '#/components/parameters/organizerKey'
      - $ref: '#/components/parameters/webinarKey'
      - $ref: '#/components/parameters/sessionKey'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Attendee'
        '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/sessions/%7BsessionKey%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/sessions/%7BsessionKey%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/sessions/%7BsessionKey%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/sessions/%7BsessionKey%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/sessions/%7BsessionKey%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}/sessions/{sessionKey}/performance:
    get:
      tags:
      - Sessions
      operationId: getPerformance
      summary: Get session performance
      description: Get performance details for a session.
      parameters:
      - $ref: '#/components/parameters/organizerKey'
      - $ref: '#/components/parameters/webinarKey'
      - $ref: '#/components/parameters/sessionKey'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionPerformance'
        '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/sessions/%7BsessionKey%7D/performance',\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/sessions/%7BsessionKey%7D/performance \\\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/sessions/%7BsessionKey%7D/performance", 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/sessions/%7BsessionKey%7D/performance');\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/sessions/%7BsessionKey%7D/performance")


          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}/sessions/{sessionKey}/polls:
    get:
      tags:
      - Sessions
      operationId: getPolls
      summary: Get session polls
      description: Retrieve all collated attendee questions and answers for polls from a specific webinar session.
      parameters:
      - $ref: '#/components/parameters/organizerKey'
      - $ref: '#/components/parameters/webinarKey'
      - $ref: '#/components/parameters/sessionKey'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Poll'
        '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/sessions/%7BsessionKey%7D/polls',\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/sessions/%7BsessionKey%7D/polls \\\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/sessions/%7BsessionKey%7D/polls", 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/sessions/%7BsessionKey%7D/polls');\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/sessions/%7BsessionKey%7D/polls")


          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}/sessions/{sessionKey}/questions:
    get:
      tags:
      - Sessions
      operationId: getQuestions
      summary: Get session questions
      description: Retrieve questions and answers for a past webinar session.
      parameters:
      - $ref: '#/components/parameters/organizerKey'
      - $ref: '#/components/parameters/webinarKey'
      - $ref: '#/components/parameters/sessionKey'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AttendeeQuestion'
        '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/sessions/%7BsessionKey%7D/questions',\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/sessions/%7BsessionKey%7D/questions \\\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/sessions/%7BsessionKey%7D/questions", 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/sessions/%7BsessionKey%7D/questions');\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/sessions/%7BsessionKey%7D/questions")


          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}/sessions/{sessionKey}/surveys:
    get:
      tags:
      - Sessions
      operationId: getSurveys
      summary: Get session surveys
      description: Retrieve surveys for a past webinar session.
      parameters:
      - $ref: '#/components/parameters/organizerKey'
      - $ref: '#/components/parameters/webinarKey'
      - $ref: '#/components/parameters/sessionKey'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Poll'
        '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/sessions/%7BsessionKey%7D/surveys',\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/sessions/%7BsessionKey%7D/surveys \\\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/sessions/%7BsessionKey%7D/surveys", 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/sessions/%7BsessionKey%7D/surveys');\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/sessions/%7BsessionKey%7D/surveys")


          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:
    Attendee:
      description: Describes the attendee of a webinar
      required:
      - registrantKey
      - firstName
      - lastName
      - email
      - attendanceTimeInSeconds
      - attendance
      - sessionKey
      properties:
        registrantKey:
          type: integer
          format: int64
          description: The key of the webinar attendee
        firstName:
          type: string
          description: The attendee's first name
        lastName:
          type: string
          description: The attendee's last name
        email:
          type: string
          description: The attendee's email address
        attendanceTimeInSeconds:
          type: integer
          format: int64
          description: The total attendance time in seconds
        sessionKey:
          type: integer
          format: int64
          description: The unique key of the webinar session
        attendance:
          type: array
          items:
            $ref: '#/components/schemas/Attendance'
          description: The list of times the attendee joined and left the webinar session
    AnswerToAttendeeQuestion:
      description: Describes an answer to a question asked by an attendee during a webinar session.
      required:
      - answer
      - answeredBy
      - answererRole
      - answerTime
      - answererEmail
      properties:
        answer:
          type: string
          description: An answer given to a question asked by an attendee during a webinar session
        answeredBy:
          type: string
          description: The key of the organizer that answered the attendee's question
        answererRole:
          type: string
          description: The role of the answerer
        answerTime:
          type: string
          description: The key of the organizer that answered the attendee's question
        answererEmail:
          type: string
          description: The answerer's email address
    SessionInfoStatistics:
      description: Describes session details for webinar session
      required:
      - webinarName
      - webinarId
      - sessionKey
      - timeZone
      - experienceType
      - recurrencePeriod
      - startTime
      - endTime
      - registrationEmailOpenedCount
      - registrationLinkClickedCount
      properties:
        webinarName:
          type: string
          description: Name of the webinar
        webinarId:
          type: string
          description: The 9-digit webinar ID
        sessionKey:
          type: string
          description: The key of the webinar session
        timeZone:
          type: string
          description: The time zone where the webinar will take place
        experienceType:
          description: Specifies the webinar experience type.
          type: string
          enum:
          - CLASSIC
          - BROADCAST
          - SIMULIVE
        recurrencePeriod:
          type: string
        startTime:
          type: string
          format: date-time
          description: The starting time of an interval, e.g. 2020-03-13T10:00:00Z
        endTime:
          type: string
          format: date-time
          description: The ending time of an interval, e.g. 2020-03-13T22:00:00Z
        registrationEmailOpenedCount:
          type: string
          description: The count of opened registration emails
        registrationLinkClickedCount:
          type: string
          description: The count of registration links clicked
    PollResponse:
      description: One of the potential responses/options to a poll or survey launched by an organizer during a webinar session.
      required:
      - text
      - percentage
      properties:
        text:
          type: string
          description: The text of the response/option to a poll or survey
        percentage:
          type: number
          format: float
          description: The percentage of responses that favored this particular option
          maximum: 100
          minimum: 0
    SessionPerformance:
      description: Describes performance details for webinar sessions
      required:
      - sessionInfo
      - attendance
      - pollsAndSurveys
      properties:
        sessionInfo:
          $ref: '#/components/schemas/SessionInfoStatistics'
        attendance:
          $ref: '#/components/schemas/AttendanceStatistics'
        pollsAndSurveys:
          $ref: '#/components/schemas/PollsAndSurveysStatistics'
    AttendeeQuestion:
      description: Describes the question asked by an attendee during a webinar session; includes the answers given to it.
      required:
      - answers
      - question
      - askedBy
      - askerKey
      - dateAsked
      properties:
        answers:
          type: array
          items:
            $ref: '#/components/schemas/AnswerToAttendeeQuestion'
          description: Answer to a question of an attendee and key of the organizer that answered
        question:
          type: string
          description: The question asked by the attendee
        askedBy:
          type: string
          description: The email address of the attendee that asked the question
        askerKey:
          type: string
          description: The key of the attendee who asked the question
        dateAsked:
          type: string
          format: date-time
          description: The date on which the question was asked e.g. 2020-03-13T10:00:00Z
    Poll:
      description: A poll or survey launched by an organizer during or after a webinar session; includes the responses given to it by the attendees.
      required:
      - responses
      - question
      - numberOfResponses
      properties:
        responses:
          type: array
          items:
            $ref: '#/components/schemas/PollResponse'
          description: The responses given by the attendees to the poll or survey
        question:
          type: string
          description: The poll or survey question asked by the webinar organizer
        numberOfResponses:
          type: integer
          format: int32
          description: The total number of responses received for this poll or survey
    ReportingSession:
      description: Describes a completed webinar session.
      required:
      - sessionKey
      - webinarKey
      - webinarName
      - startTime
      - endTime
      - registrantsAttended
      - registrantCount
      - accountKey
      - creatingOrganizerKey
      - creatingOrganizerName
      - startingOrganizerKey
      - startingOrganizerName
      - totalPollCount
      - timeZone
      - experienceType
      - webinarID
      properties:
        sessionKey:
          type: string
          description: The unique key of the webinar session
        webinarKey:
          type: string
          description: The unique key of the webinar
        webinarName:
          type: string
          description: The webinar name
        startTime:
          type: string
          format: date-time
          description: The starting time of the webinar session
        endTime:
          type: string
          format: date-time
          description: The ending time of the webinar session
        registrantsAttended:
          type: integer
          format: int32
          description: The number of registrants who attended the webinar session
        registrantCount:
          type: integer
          format: int32
          description: The total number of registrants for the webinar
        accountKey:
          type: string
          description: The key of the account
        creatingOrganizerKey:
          type: string
          description: The key of the webinar organizer who scheduled the webinar
        creatingOrganizerName:
          type: string
          description: The name of the webinar organizer who scheduled the webinar
        startingOrganizerKey:
          type: string
          description: The key of the webinar organizer who started the webinar session
        startingOrganizerName:
          type: string
          description: The name of the webinar organizer who started the webinar session
        totalPollCount:
          type: integer
          format: int32
          description: The total num

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