kinlane
8/17/2018 - 1:17 AM

GoToAssist Remote Support OpenAPI

GoToAssist Remote Support OpenAPI

{
  "swagger": "2.0",
  "info": {
    "version": "1.0",
    "title": "GoToAssist Remote Support",
    "description": "# Setup Instructions\r\n[GoToAssist Remote Support API Documentation](https://goto-developer.logmeininc.com/api/gotoassist-rs-api)\r\n\r\n### Environment Template\r\n1. **Choose the \"GoToAssist RS\" template** on the **environment dropdown menu** (top right corner of the window)\r\n2. **Click on the EYE icon (quick look)** right next to the environment dropdown box, then **click on EDIT** right next to the environment's name\r\n3. **Fill the environment variables *client_id* and *client_secret*** from your account. You can retrieve these by creating a new App on the [Developer Center](https://goto-developer.logmeininc.com/user/me/apps).\r\n\r\n### OAuth 2.0\r\n1. Make sure the GoToAssist RS environment is selected on the dropdown box on top right of the main screen.\r\n2. Right-click the collection on the left bar\r\n3. Click on **Edit**\r\n4. Click on **Authorization Tab**\r\n5. Click on **Get New Access Token**\r\n6. Fill the form with the variables below. They will be pulled automatically from the Environment template you just loaded:\r\n  - Callback URL: *{{callback_url}}*\r\n  - Auth URL: *{{auth_url}}*\r\n  - Access Token URL: *{{access_token_url}}*\r\n  - Client ID: *{{client_id}}*\r\n  - Client Secret: *{{client_secret}}*\r\n  - Client Authentication: *Send as Basic Auth header*\r\n7. Click on **Request Token**. You should see a GoToAssist login screen now.\r\n8. **Login** with your GoToAssist credentials.\r\n9. **Allow** the permission request to access data from your account.\r\n10. If you had success you should see your newly generated access token. Scroll to the bottom.\r\n11. Copy your **organizerKey**. You'll need to save it later as environment variable.\r\n12. Click on **Use Token**.\r\n13. Now just make sure you paste the **organizerKey** on the *{{organizerKey}}* variable in your environment.\r\n\r\n*Disclaimer: GoToAssist access tokens expire in just 1h, so you might need to repeat steps 1-12 of the OAuth 2.0 process every hour you are working with the API.*"
  },
  "host": "api.getgo.com",
  "basePath": "/G2A/rest/v1",
  "securityDefinitions": {
    "auth": {
      "type": "oauth2",
      "flow": "implicit",
      "authorizationUrl": "http://example.com/auth",
      "scopes": {},
      "x-skip-client-authentication": false
    }
  },
  "schemes": [
    "https"
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/systemLinks": {
      "get": {
        "description": "<p>This method retrieves all partner-system links that are registered for a given domain. These links are used by GoToAssist to make calls back to the partner system to enable the creation of tickets during support sessions.</p>\n\n<h3>  Request Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  systemDomain  </td>    <td>  string  </td>  <td>  The domain name of the partner system.  </td>  </tr>\n</table>                      \n\n\n<h3>  Response Parameters: (* Optional)  </h3>                \n<table border=1>                    \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  systemName  </td>  <td>  string  </td>  <td>  The human-readable name of the partner system (may be displayed to the user in the GoToAssist web application); it is used to uniquely identify partner systems, along with the systemDomain for a particular user  </td>  </tr>\n<tr>  <td>  systemDomain  </td>  <td>  string  </td>  <td>  The domain name of the partner system; it is used to uniquely identify partner systems, along with the systemName for a particular user  </td>  </tr>\n<tr>  <td>  userEmail  </td>  <td>  string  </td>  <td>  The email address of the user these links are for  </td>  </tr>\n<tr>  <td>  userToken  </td>  <td>  string  </td>  <td>  A unique identifier generated by the partner system that will be used to authenticate requests made by GoToAssist on behalf of this user  </td>  </tr>\n<tr>  <td>  callbackURL  </td>  <td>  string  </td>  <td>  The callback URL into the partner system  </td>  </tr>\n</table>                    \n\n<h3>Status Codes</h3>              \n<table border=1>              \n<tr>  <th>  Staus Code  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  200 OK  </td>  <td>  The information was successfully retrieved  </td>  </tr>\n<tr>  <td>  400 Bad Request  </td>  <td>  An error occurred due to a missing systemDomain parameter  </td>  </tr>\n<tr>  <td>  401 Unauthorized  </td>  <td>  An authentication parameter was passed, but either it was invalid or the technician is not entitled with a Remote Support seat  </td>  </tr>\n<tr>  <td>  500 Internal Server Error  </td>  <td>  An unhandled error occurred  </td>  </tr>\n</table>",
        "summary": "Partner-System Link Info",
        "tags": [
          "SystemLinks"
        ],
        "operationId": "SystemLinksGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "systemDomain",
            "in": "query",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [
          {
            "request": {
              "method": "GET",
              "uri": "/systemLinks?systemDomain={{systemDomain}}",
              "headers": {
                "Accept": "application/json",
                "Content-Type": "application/x-www-form-urlencoded"
              }
            },
            "expectedResponse": {
              "x-allowExtraHeaders": true,
              "x-bodyMatchMode": "NONE",
              "x-arrayOrderedMatching": false,
              "x-arrayCheckCount": false,
              "x-matchResponseSchema": true,
              "headers": {}
            },
            "x-testShouldPass": true,
            "x-testEnabled": true,
            "x-testName": "Partner-System Link Info",
            "x-testDescription": "<p>This method retrieves all partner-system links that are registered for a given domain. These links are used by GoToAssist to make calls back to the partner system to enable the creation of tickets during support sessions.</p>\n\n<h3>  Request Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  systemDomain  </td>    <td>  string  </td>  <td>  The domain name of the partner system.  </td>  </tr>\n</table>                      \n\n\n<h3>  Response Parameters: (* Optional)  </h3>                \n<table border=1>                    \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  systemName  </td>  <td>  string  </td>  <td>  The human-readable name of the partner system (may be displayed to the user in the GoToAssist web application); it is used to uniquely identify partner systems, along with the systemDomain for a particular user  </td>  </tr>\n<tr>  <td>  systemDomain  </td>  <td>  string  </td>  <td>  The domain name of the partner system; it is used to uniquely identify partner systems, along with the systemName for a particular user  </td>  </tr>\n<tr>  <td>  userEmail  </td>  <td>  string  </td>  <td>  The email address of the user these links are for  </td>  </tr>\n<tr>  <td>  userToken  </td>  <td>  string  </td>  <td>  A unique identifier generated by the partner system that will be used to authenticate requests made by GoToAssist on behalf of this user  </td>  </tr>\n<tr>  <td>  callbackURL  </td>  <td>  string  </td>  <td>  The callback URL into the partner system  </td>  </tr>\n</table>                    \n\n<h3>Status Codes</h3>              \n<table border=1>              \n<tr>  <th>  Staus Code  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  200 OK  </td>  <td>  The information was successfully retrieved  </td>  </tr>\n<tr>  <td>  400 Bad Request  </td>  <td>  An error occurred due to a missing systemDomain parameter  </td>  </tr>\n<tr>  <td>  401 Unauthorized  </td>  <td>  An authentication parameter was passed, but either it was invalid or the technician is not entitled with a Remote Support seat  </td>  </tr>\n<tr>  <td>  500 Internal Server Error  </td>  <td>  An unhandled error occurred  </td>  </tr>\n</table>"
          }
        ],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      },
      "post": {
        "description": "<p>This method creates system links, which allows the partner system to enable the creation of objects during attended support sessions by providing certain information to GoToAssist. If the partner system does not call this method, then the corresponding functionality in GoToAssist will be disabled automatically. Note: The partner system should call this method after a user has authenticated via OAuth.</p>\r\n<table border=1>                    \r\n<tr>  <th>  field  </th>  <th>  value  </th>  <th>  description  </th>  </tr>\r\n<tr>  <td>  \"systemName\"  </td>  <td>  \"The Company\"  </td>  <td>  String - The human-readable name of the partner system (may be displayed to the user in the GoToAssist web application); it is used to uniquely identify partner systems, along with the systemDomain for a particular user.  </td>  </tr>\r\n<tr>  <td>  \"systemDomain\"  </td>  <td>  \"theCompany.com\"  </td>  <td>  String - The domain name of the partner system; it is used to uniquely identify partner systems, along with the systemName for a particular user (NOTE: If a Create partner-system link call is received for the same user, systemName and systemDomain, then the previous links will be overwritten). </td>  </tr>\r\n<tr>  <td>  \"userEmail\"  </td>  <td>  \"valid.org@email.com\"  </td>  <td>  String with valid email syntax and address of the user these links are for.  </td>  </tr>\r\n<tr>  <td>  \"userToken\"  </td>  <td>  \"F5EE645AAA87462523475FFF8576348574\"  </td>  <td>  String - A unique identifier generated by the partner system that will be used to authenticate requests made by GoToAssist on behalf of this user.  </td>  </tr>\r\n<tr>  <td>  \"callbackURL\"  </td>  <td>  \"https://api.theCompany.com/g2a_prefix\"  </td>  <td>  The callback URL into the partner system.  </td>  </tr>\r\n<tr>  <td>  \"supportedCallbacks\"  </td>  <td>  \"n/a\"  </td>  <td>  The hash of callbacks that the partner system will support (corresponding to the APIs below); possible keys are as follows:  </td>  </tr>\r\n<tr>  <td>  \"createObject\"  </td>  <td>  \"true\"  </td>  <td> \"Boolean - \" </td>  </tr>\r\n<tr>  <td>  \"searchObjects\"  </td>  <td>  \"true\"  </td>  <td> \"Boolean - \" </td>  </tr>\r\n<tr>  <td>  \"associateObject\"  </td>  <td>  \"true\"  </td>  <td> \"Boolean - \" </td>  </tr>\r\n</table>\r\n\r\n<h3>Status Codes</h3>\r\n<table border=1>              \r\n<tr>  <th>  Status Code  </th>  <th>  Description  </th>  </tr>\r\n<tr>  <td>  200 OK  </td>  <td>  The callback links have been registered  </td>  </tr>\r\n<tr>  <td>  400 Bad Request  </td>  <td>  An error occurred due to invalid callback URL  </td>  </tr>\r\n<tr>  <td>  401 Unauthorized  </td>  <td>  An authentication parameter was passed, but either it was invalid or the technician is not entitled with a Remote Support seat  </td>  </tr>\r\n<tr>  <td>  500 Internal Server Error  </td>  <td>  An unhandled error occurred  </td>  </tr>\r\n</table>",
        "summary": "Partner-System Links",
        "tags": [
          "SystemLinks"
        ],
        "operationId": "SystemLinksPost",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "description": "",
            "schema": {
              "$ref": "#/definitions/PartnerSystem linksrequest"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [
          {
            "request": {
              "method": "POST",
              "uri": "/systemLinks",
              "headers": {
                "Content-Type": "application/json",
                "Accept": "application/json"
              },
              "body": "{\"systemName\":\"Test RS Call\",\"systemDomain\":\"testrs.com\",\"userEmail\":\"muddy.waters@DeBlues.com\",\"userToken\":\"F5EE645AAA87462523475FFF8576348574\",\"callbackUrl\":\"https://api.mondo-tickets.com/g2a_prefix\",\"supportedCallbacks\":{\"createObject\":true,\"searchObjects\":true,\"associateObject\":true}}"
            },
            "expectedResponse": {
              "x-allowExtraHeaders": true,
              "x-bodyMatchMode": "NONE",
              "x-arrayOrderedMatching": false,
              "x-arrayCheckCount": false,
              "x-matchResponseSchema": true,
              "headers": {}
            },
            "x-testShouldPass": true,
            "x-testEnabled": true,
            "x-testName": "Partner-System Links",
            "x-testDescription": "<p>This method creates system links, which allows the partner system to enable the creation of objects during attended support sessions by providing certain information to GoToAssist. If the partner system does not call this method, then the corresponding functionality in GoToAssist will be disabled automatically. Note: The partner system should call this method after a user has authenticated via OAuth.</p>\r\n<table border=1>                    \r\n<tr>  <th>  field  </th>  <th>  value  </th>  <th>  description  </th>  </tr>\r\n<tr>  <td>  \"systemName\"  </td>  <td>  \"The Company\"  </td>  <td>  String - The human-readable name of the partner system (may be displayed to the user in the GoToAssist web application); it is used to uniquely identify partner systems, along with the systemDomain for a particular user.  </td>  </tr>\r\n<tr>  <td>  \"systemDomain\"  </td>  <td>  \"theCompany.com\"  </td>  <td>  String - The domain name of the partner system; it is used to uniquely identify partner systems, along with the systemName for a particular user (NOTE: If a Create partner-system link call is received for the same user, systemName and systemDomain, then the previous links will be overwritten). </td>  </tr>\r\n<tr>  <td>  \"userEmail\"  </td>  <td>  \"valid.org@email.com\"  </td>  <td>  String with valid email syntax and address of the user these links are for.  </td>  </tr>\r\n<tr>  <td>  \"userToken\"  </td>  <td>  \"F5EE645AAA87462523475FFF8576348574\"  </td>  <td>  String - A unique identifier generated by the partner system that will be used to authenticate requests made by GoToAssist on behalf of this user.  </td>  </tr>\r\n<tr>  <td>  \"callbackURL\"  </td>  <td>  \"https://api.theCompany.com/g2a_prefix\"  </td>  <td>  The callback URL into the partner system.  </td>  </tr>\r\n<tr>  <td>  \"supportedCallbacks\"  </td>  <td>  \"n/a\"  </td>  <td>  The hash of callbacks that the partner system will support (corresponding to the APIs below); possible keys are as follows:  </td>  </tr>\r\n<tr>  <td>  \"createObject\"  </td>  <td>  \"true\"  </td>  <td> \"Boolean - \" </td>  </tr>\r\n<tr>  <td>  \"searchObjects\"  </td>  <td>  \"true\"  </td>  <td> \"Boolean - \" </td>  </tr>\r\n<tr>  <td>  \"associateObject\"  </td>  <td>  \"true\"  </td>  <td> \"Boolean - \" </td>  </tr>\r\n</table>\r\n\r\n<h3>Status Codes</h3>\r\n<table border=1>              \r\n<tr>  <th>  Status Code  </th>  <th>  Description  </th>  </tr>\r\n<tr>  <td>  200 OK  </td>  <td>  The callback links have been registered  </td>  </tr>\r\n<tr>  <td>  400 Bad Request  </td>  <td>  An error occurred due to invalid callback URL  </td>  </tr>\r\n<tr>  <td>  401 Unauthorized  </td>  <td>  An authentication parameter was passed, but either it was invalid or the technician is not entitled with a Remote Support seat  </td>  </tr>\r\n<tr>  <td>  500 Internal Server Error  </td>  <td>  An unhandled error occurred  </td>  </tr>\r\n</table>"
          }
        ],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      }
    },
    "/": {
      "get": {
        "description": "Retrieves a query-able set of tickets for a specific partner system.\n\n                                                         \n<h3>Request Parameters</h3>\n<table border=1>                          \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  userToken  </td>  <td>  string  </td>  <td>  The token identifying and authenticating the user in the partner system that this object is being created on behalf of this user.  </td>  </tr>\n</table>\n\n<h3>Query Parameters (* Optional)</h3>\n<table border=1>\n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  q *  </td>  <td>  string  </td>  <td>  A query string used to search for objects in the partner system. (It is up to the partner system to determine how the query string is matched. Match against fields like: ticket title, ticket body, requester name, ticket ID, ticket comments, tags, etc. Ideally the matching should be performed using a ‘contains’ type operation and in a case-insensitive way.)  </td>  </tr>                                     \n<tr>  <td>  limit *  </td>  <td>  integer  </td>  <td>  The maximum number of records to be fetched. Default value is 10. Suggested value is less than or equal to 10 for optimal performance.  </td>  </tr>                                     \n<tr>  <td>  offset *  </td>  <td>  number  </td>  <td>  Zero based offset for the first record to return. Default value is 0.  </td>  </tr>      \n</table>",
        "summary": "Get Tickets",
        "tags": [
          "Ticketing Callbacks"
        ],
        "operationId": "UnnammedEndpointGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "offset",
            "in": "query",
            "required": true,
            "type": "integer",
            "format": "int32",
            "description": ""
          },
          {
            "name": "limit",
            "in": "query",
            "required": true,
            "type": "integer",
            "format": "int32",
            "description": ""
          },
          {
            "name": "userToken",
            "in": "query",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [
          {
            "request": {
              "method": "GET",
              "uri": "/?q=<>&offset=0&limit=10&userToken=F5EE645AAA87462523475FFF8576348574",
              "headers": {
                "Content-Type": "application/x-www-form-urlencoded",
                "Accept": "application/json"
              }
            },
            "expectedResponse": {
              "x-allowExtraHeaders": true,
              "x-bodyMatchMode": "NONE",
              "x-arrayOrderedMatching": false,
              "x-arrayCheckCount": false,
              "x-matchResponseSchema": true,
              "headers": {}
            },
            "x-testShouldPass": true,
            "x-testEnabled": true,
            "x-testName": "Get Tickets",
            "x-testDescription": "Retrieves a query-able set of tickets for a specific partner system.\n\n                                                         \n<h3>Request Parameters</h3>\n<table border=1>                          \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  userToken  </td>  <td>  string  </td>  <td>  The token identifying and authenticating the user in the partner system that this object is being created on behalf of this user.  </td>  </tr>\n</table>\n\n<h3>Query Parameters (* Optional)</h3>\n<table border=1>\n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  q *  </td>  <td>  string  </td>  <td>  A query string used to search for objects in the partner system. (It is up to the partner system to determine how the query string is matched. Match against fields like: ticket title, ticket body, requester name, ticket ID, ticket comments, tags, etc. Ideally the matching should be performed using a ‘contains’ type operation and in a case-insensitive way.)  </td>  </tr>                                     \n<tr>  <td>  limit *  </td>  <td>  integer  </td>  <td>  The maximum number of records to be fetched. Default value is 10. Suggested value is less than or equal to 10 for optimal performance.  </td>  </tr>                                     \n<tr>  <td>  offset *  </td>  <td>  number  </td>  <td>  Zero based offset for the first record to return. Default value is 0.  </td>  </tr>      \n</table>"
          }
        ],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      },
      "put": {
        "description": "Associates a ticket for a particular partner with a current session.\n\n<h3>  Request Parameters:  </h3>                \n<table border=1>                    \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  sessionId  </td>  <td>  string  </td>  <td>  The unique ID of the session to associate with the new partner object.  </td>  </tr>\n<tr>  <td>  userToken  </td>  <td>  string  </td>  <td>  The token identifying and authenticating the user in the partner system that this object is being created on behalf of this user.  </td>  </tr>\n<tr>  <td>  partnerObject  </td>  <td>  string  </td>  <td>  The partner object to associate with the session.  </td>  </tr>\n</table>",
        "summary": "Associate Ticket",
        "tags": [
          "Ticketing Callbacks"
        ],
        "operationId": "UnnammedEndpointPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "description": "",
            "schema": {
              "$ref": "#/definitions/AssociateTicketrequest"
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [
          {
            "request": {
              "method": "PUT",
              "uri": "/",
              "headers": {
                "Content-Type": "application/json",
                "Accept": "application/json"
              },
              "body": "{\"sessionId\":\"SS-111222333\",\"userToken\":\"F5EE645AAA87462523475FFF8576348574\",\"partnerObject\":\"123\"}"
            },
            "expectedResponse": {
              "x-allowExtraHeaders": true,
              "x-bodyMatchMode": "NONE",
              "x-arrayOrderedMatching": false,
              "x-arrayCheckCount": false,
              "x-matchResponseSchema": true,
              "headers": {}
            },
            "x-testShouldPass": true,
            "x-testEnabled": true,
            "x-testName": "Associate Ticket",
            "x-testDescription": "Associates a ticket for a particular partner with a current session.\n\n<h3>  Request Parameters:  </h3>                \n<table border=1>                    \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  sessionId  </td>  <td>  string  </td>  <td>  The unique ID of the session to associate with the new partner object.  </td>  </tr>\n<tr>  <td>  userToken  </td>  <td>  string  </td>  <td>  The token identifying and authenticating the user in the partner system that this object is being created on behalf of this user.  </td>  </tr>\n<tr>  <td>  partnerObject  </td>  <td>  string  </td>  <td>  The partner object to associate with the session.  </td>  </tr>\n</table>"
          }
        ],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      },
      "post": {
        "description": "Creates a new ticket connecting the agent's system with the partner system for a specific issue.\n\n<h3>  Request Parameters: (* Optional)  </h3>                \n<table border=1>                    \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  sessionId  </td>  <td>  string  </td>  <td>  The unique ID of the session to associate with the new partner object.  </td>  </tr>\n<tr>  <td>  userToken  </td>  <td>  string  </td>  <td>  The token identifying and authenticating the user in the partner system that this object is being created on behalf of this user.  </td>  </tr>\n<tr>  <td>  title  </td>  <td>  string  </td>  <td>  A string entered by the technician that should be the title of the new object.  </td>  </tr>\n<tr>  <td>  body  </td>  <td>  string  </td>  <td>  A string entered by the technician that should become the body of the new object.  </td>  </tr>\n</table>",
        "summary": "Create Ticket",
        "tags": [
          "Ticketing Callbacks"
        ],
        "operationId": "UnnammedEndpointPost",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "description": "",
            "schema": {
              "$ref": "#/definitions/CreateTicketrequest"
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [
          {
            "request": {
              "method": "POST",
              "uri": "/",
              "headers": {
                "Content-Type": "application/json",
                "Accept": "application/json"
              },
              "body": "{\"sessionId\":\"SS-111222333\",\"userToken\":\"F5EE645AAA87462523475FFF8576348574\",\"title\":\"User needs help installing Office\",\"body\":\"I am going to install office for them now\"}"
            },
            "expectedResponse": {
              "x-allowExtraHeaders": true,
              "x-bodyMatchMode": "NONE",
              "x-arrayOrderedMatching": false,
              "x-arrayCheckCount": false,
              "x-matchResponseSchema": true,
              "headers": {}
            },
            "x-testShouldPass": true,
            "x-testEnabled": true,
            "x-testName": "Create Ticket",
            "x-testDescription": "Creates a new ticket connecting the agent's system with the partner system for a specific issue.\n\n<h3>  Request Parameters: (* Optional)  </h3>                \n<table border=1>                    \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  sessionId  </td>  <td>  string  </td>  <td>  The unique ID of the session to associate with the new partner object.  </td>  </tr>\n<tr>  <td>  userToken  </td>  <td>  string  </td>  <td>  The token identifying and authenticating the user in the partner system that this object is being created on behalf of this user.  </td>  </tr>\n<tr>  <td>  title  </td>  <td>  string  </td>  <td>  A string entered by the technician that should be the title of the new object.  </td>  </tr>\n<tr>  <td>  body  </td>  <td>  string  </td>  <td>  A string entered by the technician that should become the body of the new object.  </td>  </tr>\n</table>"
          }
        ],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      }
    },
    "/archive/recordings/urls[&{attribute}={readyForDownloadRecordingId}]": {
      "get": {
        "description": "<p>This method retrieves download links for a list of recordings. Each recording returns a link to the MP4 file, the .events file and the thumbnail. If a recording is not available for download then it will be omitted from the returned list. The archiving script may use the returned URLs to download each resource for the recording. The URLs will be valid for at least 48 hours. The URL contains a large random number so that the URL for recordings cannot be guessed. The response includes the recording start time to make it easier for the archiving script to place recordings in directories based on date. No more than 500 recordings can be requested at once.</p>\n\n<p><strong>Note:</strong> Session recording must be enabled on the account in order to use this API method. To enable session recording, log in at https://app.gotoassist.com (link is external) and go to Configure > GoToAssist Settings > Enable Session Recording check box.</p>\n\n<h3>  Response Parameters  </h3>                \n<table border=1>                    \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  recordingId  </td>  <td>  number  </td>  <td>  The recordingId of the session recording to be downloaded  </td>  </tr>\n<tr>  <td>  recordingUrl  </td>  <td>  string  </td>  <td>  The URL of MP4 recording file  </td>  </tr>\n<tr>  <td>  recordingStartTime  </td>  <td>  ISO 8601 format*  </td>  <td>  The start time of recording  </td>  </tr>\n<tr>  <td>  eventsUrl  </td>  <td>  string  </td>  <td>  The URL of the events recording file  </td>  </tr>\n<tr>  <td>  thumbnailUrl  </td>  <td>  string  </td>  <td>  The URL of the thumbnail of recording file  </td>  </tr>\n<tr>  <td>  recordingSize  </td>  <td>  string  </td>  <td>  The size of the .mp4 file in bytes  </td>  </tr>\n</table>\n<p>* <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601 format reference</a></p>\n                    \n<h3>Status Codes</h3>                    \n<table border=1>                    \n<tr>  <th>  Staus Code  </th>  <th>  description  </th>  </tr>      \n<tr>  <td>  200 OK  </td>  <td>  A list of URLs has been returned  </td>  </tr>      \n<tr>  <td>  400 Bad Request  </td>  <td>  Request may be malformed or property may be missing or invalid  </td>  </tr>      \n<tr>  <td>  403 Forbidden  </td>  <td>  Invalid authorization header or invalid recording Ids  </td>  </tr>      \n<tr>  <td>  500 Internal Server Error  </td>  <td>  Unexpected server error  </td>  </tr>      \n</table>",
        "summary": "Download Recordings",
        "tags": [
          "Recordings"
        ],
        "operationId": "ArchiveRecordingsUrlsAPIGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "attribute",
            "in": "path",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "readyForDownloadRecordingId",
            "in": "path",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      }
    },
    "/companies": {
      "get": {
        "description": "<p>This method retrieves information about the companies that the authenticated user has access to.<\\p>\n\n<table border=1>                    \n<h3>  Query Parameters (all are optional)  </h3>                \n<tr>  <td>  q  </td>  <td>  string  </td>  <td>  A search query to filter the returned records. Performs a contains check on companyName  </td>  </tr>\n<tr>  <td>  limit  </td>  <td>  integer  </td>  <td>  The maximum number of records to be fetched. Default limit is 50. Valid range is 1 to 50. Greater than 50 results in bad request.  </td>  </tr>\n<tr>  <td>  offset  </td>  <td>  number  </td>  <td>  Zero based offset for the first record to return. Default value is 0.  </td>  </tr>\n<tr>  <td>  sortField  </td>  <td>  string  </td>  <td>  Name of the field to sort by, can be one of companyId, companyName.  </td>  </tr>\n<tr>  <td>  sortOrder  </td>  <td>    </td>  <td>  Sort order can be specified explicitly. Allowed values are “asc” for ascending order and “desc” for descending order.  </td>  </tr>\n</table>\n\n<h3>Status Codes</h3>              \n<table border=1>              \n<tr>  <th>  Staus Code  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  200 OK  </td>  <td>  The information was successfully retrieved  </td>  </tr>\n<tr>  <td>  401 Unauthorized  </td>  <td>  An authentication parameter was passed, but either it was invalid or the technician is not entitled with a Remote Support seat;  </td>  </tr>\n<tr>  <td>  403 Forbidden  </td>  <td>  Access denied. User doesn’t have required roles  </td>  </tr>\n<tr>  <td>  404 Not Found  </td>  <td>  No companies found  </td>  </tr>\n<tr>  <td>  405 Method Not Allowed  </td>  <td>  The method was entered incorrectly (i.e., the technician tried to use POST, PUT etc. instead of GET)  </td>  </tr>\n<tr>  <td>  500 Internal Server Error  </td>  <td>  An unhandled error occurred  </td>  </tr>\n</table>",
        "summary": "Get Companies",
        "tags": [
          "Sessions"
        ],
        "operationId": "CompaniesGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [
          {
            "request": {
              "method": "GET",
              "uri": "/companies",
              "headers": {
                "Accept": "application/json",
                "Content-Type": "application/x-www-form-urlencoded"
              }
            },
            "expectedResponse": {
              "x-allowExtraHeaders": true,
              "x-bodyMatchMode": "NONE",
              "x-arrayOrderedMatching": false,
              "x-arrayCheckCount": false,
              "x-matchResponseSchema": true,
              "headers": {}
            },
            "x-testShouldPass": true,
            "x-testEnabled": true,
            "x-testName": "Get Companies",
            "x-testDescription": "<p>This method retrieves information about the companies that the authenticated user has access to.<\\p>\n\n<table border=1>                    \n<h3>  Query Parameters (all are optional)  </h3>                \n<tr>  <td>  q  </td>  <td>  string  </td>  <td>  A search query to filter the returned records. Performs a contains check on companyName  </td>  </tr>\n<tr>  <td>  limit  </td>  <td>  integer  </td>  <td>  The maximum number of records to be fetched. Default limit is 50. Valid range is 1 to 50. Greater than 50 results in bad request.  </td>  </tr>\n<tr>  <td>  offset  </td>  <td>  number  </td>  <td>  Zero based offset for the first record to return. Default value is 0.  </td>  </tr>\n<tr>  <td>  sortField  </td>  <td>  string  </td>  <td>  Name of the field to sort by, can be one of companyId, companyName.  </td>  </tr>\n<tr>  <td>  sortOrder  </td>  <td>    </td>  <td>  Sort order can be specified explicitly. Allowed values are “asc” for ascending order and “desc” for descending order.  </td>  </tr>\n</table>\n\n<h3>Status Codes</h3>              \n<table border=1>              \n<tr>  <th>  Staus Code  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  200 OK  </td>  <td>  The information was successfully retrieved  </td>  </tr>\n<tr>  <td>  401 Unauthorized  </td>  <td>  An authentication parameter was passed, but either it was invalid or the technician is not entitled with a Remote Support seat;  </td>  </tr>\n<tr>  <td>  403 Forbidden  </td>  <td>  Access denied. User doesn’t have required roles  </td>  </tr>\n<tr>  <td>  404 Not Found  </td>  <td>  No companies found  </td>  </tr>\n<tr>  <td>  405 Method Not Allowed  </td>  <td>  The method was entered incorrectly (i.e., the technician tried to use POST, PUT etc. instead of GET)  </td>  </tr>\n<tr>  <td>  500 Internal Server Error  </td>  <td>  An unhandled error occurred  </td>  </tr>\n</table>"
          }
        ],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      }
    },
    "/sessions": {
      "get": {
        "description": "<p>This method retrieves detailed information about all current or previous support sessions (either attended or unattended) for a specified date range. Information about sessions that are complete may only be available for a limited period of time after the end of the session (currently, the information is available for at least 30 days). The session must have been hosted from an account or company that the authenticated user has access to.</p>\n\n<h3>  Request Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  sessionType  </td>    <td>  string  </td>  <td>  The type of the session. Must be set to SCREEN_SHARING.  </td>  </tr>\n</table>\n\n<h3>  Response Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  totalNumSessions  </td>    <td>  number  </td>  <td>  The number of sessions returned.  </td>  </tr>\n<tr>  <th>  For Each Session  </th>    <th>     </th>  <th>     </th>  </tr>\n<tr>  <td>  sessionStartToken  </td>    <td>  number  </td>  <td>  A numeric value used to start the session.  </td>  </tr>\n<tr>  <td>  customerJoinUrl  </td>    <td>  string  </td>  <td>  A URL that can be sent to a customer to join the session.  </td>  </tr>\n<tr>  <td>  sessionId  </td>    <td>  number  </td>  <td>  The unique ID of this session.  </td>  </tr>\n<tr>  <td>  sessionType  </td>    <td>  string  </td>  <td>  For these sessions, always screen_sharing.  </td>  </tr>\n<tr>  <td>  partnerObject   </td>    <td>  number  </td>  <td>  The ID of the object in the partner system that is associated with this session.  </td>  </tr>\n<tr>  <td>  partnerObjectUrl  </td>    <td>  string  </td>  <td>  The URL for the expert to view the associated partnerObject.  </td>  </tr>\n<tr>  <td>  status  </td>    <td>  string  </td>  <td>  The current state of the session; it can be: <br/>\n<ul>\n<li>waiting = Waiting for the customer to join the session.</li>\n<li>active = Customer has joined and session is currently active.</li>\n<li>complete = Session has ended after the customer joined.</li>\n<li>abandoned = Session has ended without any customer joining.</li>\n<li>notStarted = Session was created but never started by the expert.</li>\n</ul></td>  </tr>\n<tr>  <td>  startedAt  </td>    <td>  ISO 8061 format*  </td>  <td>  The time that the session started.  </td>  </tr>\n<tr>  <td>  customerJoinedAt  </td>    <td>  ISO 8061 format*  </td>  <td>  The time that the customer joined the session.  </td>  </tr>\n<tr>  <td>  endedAt  </td>    <td>  ISO 8061 format*  </td>  <td>  The time that the session ended.  </td>  </tr>\n<tr>  <td>  expertName  </td>    <td>  string  </td>  <td>  The human-readable name of the first technician in the support session.  </td>  </tr>\n<tr>  <td>  expertEmail  </td>    <td>  string  </td>  <td>  Email id of the first expert in the session.  </td>  </tr>\n<tr>  <td>  expertUserKey  </td>    <td>  string  </td>  <td>  Unique ID of the first expert in the session in the G2A system.  </td>  </tr>\n<tr>  <td>  customerName  </td>    <td>  string  </td>  <td>  The human-readable name of the customer in the support session.  </td>  </tr>\n<tr>  <td>  customerEmail  </td>    <td>  string  </td>  <td>  The email address of the customer in the support session.  </td>  </tr>\n<tr>  <td>  accountKey  </td>    <td>  number  </td>  <td>  The unique GoToAssist system ID of the account the support session was hosted from.  </td>  </tr>\n<tr>  <td>  sessionRecordingUrl  </td>    <td>  number  </td>  <td>  The URL where the technician can view a recording of the session within the GoToAssist web application (only available if the technician has opted to record support sessions (link is external))  </td>  </tr>\n</table>                      \n<p>* <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601 format reference</a></p>",
        "summary": "Get All Sessions",
        "tags": [
          "Sessions"
        ],
        "operationId": "SessionsGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "sessionType",
            "in": "query",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "fromTime",
            "in": "query",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "toTime",
            "in": "query",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [
          {
            "request": {
              "method": "GET",
              "uri": "/sessions?sessionType=SCREEN_SHARING&fromTime={{YYYY-MM-DD}}T{{HH:MM:SS}}Z&toTime={{YYYY-MM-DD}}T{{HH:MM:SS}}",
              "headers": {
                "Accept": "application/json",
                "Content-Type": "application/x-www-form-urlencoded"
              }
            },
            "expectedResponse": {
              "x-allowExtraHeaders": true,
              "x-bodyMatchMode": "NONE",
              "x-arrayOrderedMatching": false,
              "x-arrayCheckCount": false,
              "x-matchResponseSchema": true,
              "headers": {}
            },
            "x-testShouldPass": true,
            "x-testEnabled": true,
            "x-testName": "Get All Sessions",
            "x-testDescription": "<p>This method retrieves detailed information about all current or previous support sessions (either attended or unattended) for a specified date range. Information about sessions that are complete may only be available for a limited period of time after the end of the session (currently, the information is available for at least 30 days). The session must have been hosted from an account or company that the authenticated user has access to.</p>\n\n<h3>  Request Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  sessionType  </td>    <td>  string  </td>  <td>  The type of the session. Must be set to SCREEN_SHARING.  </td>  </tr>\n</table>\n\n<h3>  Response Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  totalNumSessions  </td>    <td>  number  </td>  <td>  The number of sessions returned.  </td>  </tr>\n<tr>  <th>  For Each Session  </th>    <th>     </th>  <th>     </th>  </tr>\n<tr>  <td>  sessionStartToken  </td>    <td>  number  </td>  <td>  A numeric value used to start the session.  </td>  </tr>\n<tr>  <td>  customerJoinUrl  </td>    <td>  string  </td>  <td>  A URL that can be sent to a customer to join the session.  </td>  </tr>\n<tr>  <td>  sessionId  </td>    <td>  number  </td>  <td>  The unique ID of this session.  </td>  </tr>\n<tr>  <td>  sessionType  </td>    <td>  string  </td>  <td>  For these sessions, always screen_sharing.  </td>  </tr>\n<tr>  <td>  partnerObject   </td>    <td>  number  </td>  <td>  The ID of the object in the partner system that is associated with this session.  </td>  </tr>\n<tr>  <td>  partnerObjectUrl  </td>    <td>  string  </td>  <td>  The URL for the expert to view the associated partnerObject.  </td>  </tr>\n<tr>  <td>  status  </td>    <td>  string  </td>  <td>  The current state of the session; it can be: <br/>\n<ul>\n<li>waiting = Waiting for the customer to join the session.</li>\n<li>active = Customer has joined and session is currently active.</li>\n<li>complete = Session has ended after the customer joined.</li>\n<li>abandoned = Session has ended without any customer joining.</li>\n<li>notStarted = Session was created but never started by the expert.</li>\n</ul></td>  </tr>\n<tr>  <td>  startedAt  </td>    <td>  ISO 8061 format*  </td>  <td>  The time that the session started.  </td>  </tr>\n<tr>  <td>  customerJoinedAt  </td>    <td>  ISO 8061 format*  </td>  <td>  The time that the customer joined the session.  </td>  </tr>\n<tr>  <td>  endedAt  </td>    <td>  ISO 8061 format*  </td>  <td>  The time that the session ended.  </td>  </tr>\n<tr>  <td>  expertName  </td>    <td>  string  </td>  <td>  The human-readable name of the first technician in the support session.  </td>  </tr>\n<tr>  <td>  expertEmail  </td>    <td>  string  </td>  <td>  Email id of the first expert in the session.  </td>  </tr>\n<tr>  <td>  expertUserKey  </td>    <td>  string  </td>  <td>  Unique ID of the first expert in the session in the G2A system.  </td>  </tr>\n<tr>  <td>  customerName  </td>    <td>  string  </td>  <td>  The human-readable name of the customer in the support session.  </td>  </tr>\n<tr>  <td>  customerEmail  </td>    <td>  string  </td>  <td>  The email address of the customer in the support session.  </td>  </tr>\n<tr>  <td>  accountKey  </td>    <td>  number  </td>  <td>  The unique GoToAssist system ID of the account the support session was hosted from.  </td>  </tr>\n<tr>  <td>  sessionRecordingUrl  </td>    <td>  number  </td>  <td>  The URL where the technician can view a recording of the session within the GoToAssist web application (only available if the technician has opted to record support sessions (link is external))  </td>  </tr>\n</table>                      \n<p>* <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601 format reference</a></p>"
          }
        ],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      },
      "post": {
        "description": "<p>This method creates a new screen sharing support session (either attended or unattended) by generating a URL that automatically launches technicians into a new session when clicked. If a machineUuid request parameter is specified, an unattended support session will be created; if it is not specified, then an attended session will be created. See \"Request Parameters\" for more information. Note: The locale of the session start dialog will be based upon the technician’s locale setting within GoToAssist.</p>\n\n<p><strong>Note:</strong> This method was formerly named \"Create Attended Session,\" but has been renamed to address the fact that it now includes unattended support sessions as well.</p>\n\n<h3>  Request Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  sessionStatusCallbackUrl*  </td>    <td>  string  </td>  <td>  The URL that will receive a POST when the session status changes. A POST will also be made to the sessionStatusCallbackUrl when a customer joins the session and when the session ends (whether or not a customer joined). The contents of the POST will be similar as the GET /v1/sessions/ API. <br/>Note: The ID of the session is not known until the session is actually started on the endpoint. If the URL is not specified or the session is never started (e.g., if the customer cancels the installation of the GoToAssist Customer desktop application), then the callback will not be made.  </td>  </tr>\n<tr>  <td>  sessionType  </td>    <td>  string  </td>  <td>  The type of session to create (only \"SCREEN_SHARING\" can be used at this time).  </td>  </tr>\n<tr>  <td>  partnerObject*  </td>    <td>  string  </td>  <td>  The ID of object in the partner system that this session will be associated with.  </td>  </tr>\n<tr>  <td>  partnerObjectUrl*  </td>    <td>  string  </td>  <td>  The URL that may be used in the GoToAssist Expert desktop application if the technician wants to view the partner object. Note: The URL can be used in a popup window or iframe that is 600 pixels wide and 500 pixels wide. For example, a popup window could be created with HTML code as follows: \"<p><code><a href=\"#\" onclick=\"window.open('https://api.getgo.com/G2A/rest/v1/session?layout=iframe&amp;partnerObject=123&amp;partnerObjectUrl=http…’,’Starting Support Session’,'height=600,width=600,scrollbars=no,resizable=no');\">Start Remote Support</a> </code></p>\"  </td>  </tr>\n<tr>  <td>  customerName*  </td>    <td>  string  </td>  <td>  The name of the customer that the session is being started for.  </td>  </tr>\n<tr>  <td>  customerEmail*  </td>    <td>  string  </td>  <td>  The email address of the customer that the session is being started for (if available)  </td>  </tr>\n<tr>  <td>  machineUuid*  </td>    <td>  string  </td>  <td>  The machineUuid is only necessary for unattended support sessions. If the machineUuid is present when a screen sharing session is started, then the endpoint will connect to the specified unattended machine and an unattended support session will be started. If no machineUuid is specified, then an attended support session will be created. A list of machineUuid parameters associated with the user and company will be available through a /machines API in future.  </td>  </tr>\n</table>                      \n<p>* Optional parameters</p>\n\n<h3>Status Codes</h3>              \n<table border=1>              \n<tr>  <th>  Staus Code  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  200 OK  </td>  <td>  The response contains the URL to start the session  </td>  </tr>\n<tr>  <td>  400 Bad Request  </td>  <td>  An error occurred due to missing required parameters or portal not being created  </td>  </tr>\n<tr>  <td>  401 Unauthorized  </td>  <td>  An authentication parameter was passed, but either it was invalid or the technician is not entitled with a Remote Support seat  </td>  </tr>\n<tr>  <td>  403 Forbidden  </td>  <td>  Access denied. User doesn’t have required roles  </td>  </tr>\n<tr>  <td>  404 Not Found  </td>  <td>  A machineUuid was specified, but the specified machine was not found in an account the user has access to  </td>  </tr>\n<tr>  <td>  405 Method Not Allowed  </td>  <td>  The method was entered incorrectly (i.e., the technician tried to use POST, PUT etc. instead of GET)  </td>  </tr>\n<tr>  <td>  500 Internal Server Error  </td>  <td>  An unhandled error occurred  </td>  </tr>\n</table>",
        "summary": "Start Screen Sharing Session",
        "tags": [
          "Sessions"
        ],
        "operationId": "SessionsPost2",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "description": "",
            "schema": {
              "$ref": "#/definitions/StartScreenSharingSessionrequest"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [
          {
            "request": {
              "method": "POST",
              "uri": "/sessions",
              "headers": {
                "Content-Type": "application/json",
                "Accept": "application/json"
              },
              "body": "{\"sessionType\":\"screen_sharing\",\"sessionStatusCallbackUrl\":\"https://myapp.com/rest/sessionChanged\",\"partnerObject\":\"123\",\"partnerObjectUrl\":\"https://mysupport.com/tickets/123\",\"customerName\":\"Jane Blogs\",\"customerEmail\":\"jane@blogs.com\",\"machineUuid\":\"3424-234234-23443234\"}"
            },
            "expectedResponse": {
              "x-allowExtraHeaders": true,
              "x-bodyMatchMode": "NONE",
              "x-arrayOrderedMatching": false,
              "x-arrayCheckCount": false,
              "x-matchResponseSchema": true,
              "headers": {}
            },
            "x-testShouldPass": true,
            "x-testEnabled": true,
            "x-testName": "Start Screen Sharing Session",
            "x-testDescription": "<p>This method creates a new screen sharing support session (either attended or unattended) by generating a URL that automatically launches technicians into a new session when clicked. If a machineUuid request parameter is specified, an unattended support session will be created; if it is not specified, then an attended session will be created. See \"Request Parameters\" for more information. Note: The locale of the session start dialog will be based upon the technician’s locale setting within GoToAssist.</p>\n\n<p><strong>Note:</strong> This method was formerly named \"Create Attended Session,\" but has been renamed to address the fact that it now includes unattended support sessions as well.</p>\n\n<h3>  Request Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  sessionStatusCallbackUrl*  </td>    <td>  string  </td>  <td>  The URL that will receive a POST when the session status changes. A POST will also be made to the sessionStatusCallbackUrl when a customer joins the session and when the session ends (whether or not a customer joined). The contents of the POST will be similar as the GET /v1/sessions/ API. <br/>Note: The ID of the session is not known until the session is actually started on the endpoint. If the URL is not specified or the session is never started (e.g., if the customer cancels the installation of the GoToAssist Customer desktop application), then the callback will not be made.  </td>  </tr>\n<tr>  <td>  sessionType  </td>    <td>  string  </td>  <td>  The type of session to create (only \"SCREEN_SHARING\" can be used at this time).  </td>  </tr>\n<tr>  <td>  partnerObject*  </td>    <td>  string  </td>  <td>  The ID of object in the partner system that this session will be associated with.  </td>  </tr>\n<tr>  <td>  partnerObjectUrl*  </td>    <td>  string  </td>  <td>  The URL that may be used in the GoToAssist Expert desktop application if the technician wants to view the partner object. Note: The URL can be used in a popup window or iframe that is 600 pixels wide and 500 pixels wide. For example, a popup window could be created with HTML code as follows: \"<p><code><a href=\"#\" onclick=\"window.open('https://api.getgo.com/G2A/rest/v1/session?layout=iframe&amp;partnerObject=123&amp;partnerObjectUrl=http…’,’Starting Support Session’,'height=600,width=600,scrollbars=no,resizable=no');\">Start Remote Support</a> </code></p>\"  </td>  </tr>\n<tr>  <td>  customerName*  </td>    <td>  string  </td>  <td>  The name of the customer that the session is being started for.  </td>  </tr>\n<tr>  <td>  customerEmail*  </td>    <td>  string  </td>  <td>  The email address of the customer that the session is being started for (if available)  </td>  </tr>\n<tr>  <td>  machineUuid*  </td>    <td>  string  </td>  <td>  The machineUuid is only necessary for unattended support sessions. If the machineUuid is present when a screen sharing session is started, then the endpoint will connect to the specified unattended machine and an unattended support session will be started. If no machineUuid is specified, then an attended support session will be created. A list of machineUuid parameters associated with the user and company will be available through a /machines API in future.  </td>  </tr>\n</table>                      \n<p>* Optional parameters</p>\n\n<h3>Status Codes</h3>              \n<table border=1>              \n<tr>  <th>  Staus Code  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  200 OK  </td>  <td>  The response contains the URL to start the session  </td>  </tr>\n<tr>  <td>  400 Bad Request  </td>  <td>  An error occurred due to missing required parameters or portal not being created  </td>  </tr>\n<tr>  <td>  401 Unauthorized  </td>  <td>  An authentication parameter was passed, but either it was invalid or the technician is not entitled with a Remote Support seat  </td>  </tr>\n<tr>  <td>  403 Forbidden  </td>  <td>  Access denied. User doesn’t have required roles  </td>  </tr>\n<tr>  <td>  404 Not Found  </td>  <td>  A machineUuid was specified, but the specified machine was not found in an account the user has access to  </td>  </tr>\n<tr>  <td>  405 Method Not Allowed  </td>  <td>  The method was entered incorrectly (i.e., the technician tried to use POST, PUT etc. instead of GET)  </td>  </tr>\n<tr>  <td>  500 Internal Server Error  </td>  <td>  An unhandled error occurred  </td>  </tr>\n</table>"
          }
        ],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      }
    },
    "/archive/recordings": {
      "get": {
        "description": "<p>This method retrieves a list of all available recordings on the account. Only recordings which are available for transcoding or downloading will be returned. The recording IDs are always returned in the order in which the recordings were started (i.e., startTime order). The request must contain one or more of the following: accountKey, userKey or companyId. The list of recordings can be filtered by the request parameters listed below.</p>\n\n<p><strong>Note:</strong> Session recording must be enabled on the account in order to use this API method. To enable session recording, log in at https://app.gotoassist.com (link is external) and go to Configure > GoToAssist Settings > Enable Session Recording check box.</p>\n\n<h3>  Request Parameters  </h3>                \n<p>  Each request must contain one or more of the following: accountKey, userKey or companyId.  </p>                \n<table border=1>                    \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  accountKey  </td>  <td>  number  </td>  <td>  The account key associated with the recording ( available in the Get Screen Sharing Session Info (link is external) method response )  </td>  </tr>\n<tr>  <td>  userKey  </td>  <td>  number  </td>  <td>  The user key of the technician who started the recorded session (available in the Authentication (link is external) API method response)  </td>  </tr>\n<tr>  <td>  companyId  </td>  <td>  number  </td>  <td>  The companyId associated with the recording for unattended support sessions only ( available in the Get Companies (link is external) API method response )  </td>  </tr>\n<tr>  <td>  sessionType *  </td>  <td>  number  </td>  <td>  The type of session: attended (0) or unattended (1)  </td>  </tr>\n<tr>  <td>  fromTime *  </td>  <td>  ISO 8601 format **  </td>  <td>  The oldest sessions that should be retrieved (startTime must be greater than or equal to fromTime)  </td>  </tr>\n<tr>  <td>  toTime *  </td>  <td>  ISO 8601 format **  </td>  <td>  The most recent sessions that should be retrieved (startTime must be greater than or equal to fromTime)  </td>  </tr>\n<tr>  <td>  timePeriod *  </td>  <td>  number  </td>  <td>  The recordings within a Time Period, starting from currentDate (ex: ”timePeriod=30” would retrieve the last 30 days’ recordings)  </td>  </tr>\n<tr>  <td>  archived *  </td>  <td>  number  </td>  <td>  The option to include only archived recordings, as follows: include only archived recordings (1) or include only non-archived recordings (0 or omit)  </td>  </tr>\n</table>                    \n<p>* Optional</p>                    \n<p>** <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601 format reference</a></p>                    \n                    \n<h3>  Response Parameters  </h3>                \n<p>  No more than 500 recordings at a time will be returned for readyForTranscode or readyForDownload.  </p>                \n<table border=1>                    \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  readyForTranscode  </td>  <td>  array  </td>  <td>  A list of recordingIds for recordings that are ready to be transcoded  </td>  </tr>\n<tr>  <td>  readyForDownload  </td>  <td>  array  </td>  <td>  A list of recordingIds for recordings that are ready to be downloaded  </td>  </tr>\n</table>                    \n                    \n<h3>Status Codes</h3>                    \n<table border=1>                    \n<tr>  <th>  Staus Code  </th>  <th>  description  </th>  </tr>      \n<tr>  <td>  200 OK  </td>  <td>  Recordings retrieved successfully  </td>  </tr>      \n<tr>  <td>  400 Bad Request  </td>  <td>  Request may be malformed or property may be missing or invalid  </td>  </tr>      \n<tr>  <td>  403 Forbidden  </td>  <td>  Invalid authorization header or invalid userKey, accountKey or companyId  </td>  </tr>      \n<tr>  <td>  500 Internal Server Error  </td>  <td>  Unexpected server error  </td>  </tr>      \n</table>",
        "summary": "Available Recordings",
        "tags": [
          "Recordings"
        ],
        "operationId": "ArchiveRecordingsGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "userKey",
            "in": "query",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [
          {
            "request": {
              "method": "GET",
              "uri": "/archive/recordings?userKey={{organizerKey}}",
              "headers": {
                "Accept": "application/json"
              }
            },
            "expectedResponse": {
              "x-allowExtraHeaders": true,
              "x-bodyMatchMode": "NONE",
              "x-arrayOrderedMatching": false,
              "x-arrayCheckCount": false,
              "x-matchResponseSchema": true,
              "headers": {}
            },
            "x-testShouldPass": true,
            "x-testEnabled": true,
            "x-testName": "Available Recordings",
            "x-testDescription": "<p>This method retrieves a list of all available recordings on the account. Only recordings which are available for transcoding or downloading will be returned. The recording IDs are always returned in the order in which the recordings were started (i.e., startTime order). The request must contain one or more of the following: accountKey, userKey or companyId. The list of recordings can be filtered by the request parameters listed below.</p>\n\n<p><strong>Note:</strong> Session recording must be enabled on the account in order to use this API method. To enable session recording, log in at https://app.gotoassist.com (link is external) and go to Configure > GoToAssist Settings > Enable Session Recording check box.</p>\n\n<h3>  Request Parameters  </h3>                \n<p>  Each request must contain one or more of the following: accountKey, userKey or companyId.  </p>                \n<table border=1>                    \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  accountKey  </td>  <td>  number  </td>  <td>  The account key associated with the recording ( available in the Get Screen Sharing Session Info (link is external) method response )  </td>  </tr>\n<tr>  <td>  userKey  </td>  <td>  number  </td>  <td>  The user key of the technician who started the recorded session (available in the Authentication (link is external) API method response)  </td>  </tr>\n<tr>  <td>  companyId  </td>  <td>  number  </td>  <td>  The companyId associated with the recording for unattended support sessions only ( available in the Get Companies (link is external) API method response )  </td>  </tr>\n<tr>  <td>  sessionType *  </td>  <td>  number  </td>  <td>  The type of session: attended (0) or unattended (1)  </td>  </tr>\n<tr>  <td>  fromTime *  </td>  <td>  ISO 8601 format **  </td>  <td>  The oldest sessions that should be retrieved (startTime must be greater than or equal to fromTime)  </td>  </tr>\n<tr>  <td>  toTime *  </td>  <td>  ISO 8601 format **  </td>  <td>  The most recent sessions that should be retrieved (startTime must be greater than or equal to fromTime)  </td>  </tr>\n<tr>  <td>  timePeriod *  </td>  <td>  number  </td>  <td>  The recordings within a Time Period, starting from currentDate (ex: ”timePeriod=30” would retrieve the last 30 days’ recordings)  </td>  </tr>\n<tr>  <td>  archived *  </td>  <td>  number  </td>  <td>  The option to include only archived recordings, as follows: include only archived recordings (1) or include only non-archived recordings (0 or omit)  </td>  </tr>\n</table>                    \n<p>* Optional</p>                    \n<p>** <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601 format reference</a></p>                    \n                    \n<h3>  Response Parameters  </h3>                \n<p>  No more than 500 recordings at a time will be returned for readyForTranscode or readyForDownload.  </p>                \n<table border=1>                    \n<tr>  <th>  field  </th>  <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  readyForTranscode  </td>  <td>  array  </td>  <td>  A list of recordingIds for recordings that are ready to be transcoded  </td>  </tr>\n<tr>  <td>  readyForDownload  </td>  <td>  array  </td>  <td>  A list of recordingIds for recordings that are ready to be downloaded  </td>  </tr>\n</table>                    \n                    \n<h3>Status Codes</h3>                    \n<table border=1>                    \n<tr>  <th>  Staus Code  </th>  <th>  description  </th>  </tr>      \n<tr>  <td>  200 OK  </td>  <td>  Recordings retrieved successfully  </td>  </tr>      \n<tr>  <td>  400 Bad Request  </td>  <td>  Request may be malformed or property may be missing or invalid  </td>  </tr>      \n<tr>  <td>  403 Forbidden  </td>  <td>  Invalid authorization header or invalid userKey, accountKey or companyId  </td>  </tr>      \n<tr>  <td>  500 Internal Server Error  </td>  <td>  Unexpected server error  </td>  </tr>      \n</table>"
          }
        ],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      }
    },
    "/session": {
      "get": {
        "description": "<p>This method allows a partner system to launch an attended support session within a browser window. This API does not require authentication, so the technician will be prompted to enter their credentials when they run the GoToAssist Expert desktop application for the first time. Since the technician is not required to navigate to a URL, no API is implemented to create the session. Note: This method was formerly named \"Create Attended Session in browser,\" but has been renamed.</p>\n\n<h3>  Request Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  sessionType  </td>    <td>  string  </td>  <td>  The type of session to create (only \"SCREEN_SHARING\" can be used at this time).  </td>  </tr>\n<tr>  <td>  layout*  </td>    <td>  string  </td>  <td>  The style of HTML that will be displayed when starting the session (e.g., \"iFrame\"). If this parameter is not present, then the HTML will fill the entire browser window.  </td>  </tr>\n<tr>  <td>  partnerObject*  </td>    <td>  string  </td>  <td>  The ID of object in the partner system that this session will be associated with.  </td>  </tr>\n<tr>  <td>  partnerObjectUrl*  </td>    <td>  string  </td>  <td>  The URL that may be used in the GoToAssist Expert desktop application if the technician wants to view the partner object. Note: The URL can be used in a popup window or iframe that is 600 pixels wide and 500 pixels wide. For example, a popup window could be created with HTML code as follows: <p><code><a href=\"#\" onclick=\"window.open('https://api.getgo.com/G2A/rest/v1/session?layout=iframe&amp;partnerObject=123&amp;partnerObjectUrl=http…’,’Starting Support Session’,'height=600,width=600,scrollbars=no,resizable=no');\">Start Remote Support</a> </code></p>  </td>  </tr>\n<tr>  <td>  sessionStatusCallbackUrl*  </td>    <td>  string  </td>  <td>  The URL that will receive a POST when the session status changes. A POST will also be made to the sessionStatusCallbackUrl when a customer joins the session and when the session ends (whether or not a customer joined). The contents of the POST will be similar as the GET /v1/sessions/ API. <br/>Note: The ID of the session is not known until the session is actually started on the endpoint. If the URL is not specified or the session is never started (e.g., if the customer cancels the installation of the GoToAssist Customer desktop application), then the callback will not be made.  </td>  </tr>\n</table>                      \n<p>* Optional parameters</p>",
        "summary": "Start Attended Session in Browser",
        "tags": [
          "Sessions"
        ],
        "operationId": "SessionGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "sessionType",
            "in": "query",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [
          {
            "request": {
              "method": "GET",
              "uri": "/session?sessionType=SCREEN_SHARING",
              "headers": {
                "Accept": "application/json",
                "Content-Type": "application/x-www-form-urlencoded"
              }
            },
            "expectedResponse": {
              "x-allowExtraHeaders": true,
              "x-bodyMatchMode": "NONE",
              "x-arrayOrderedMatching": false,
              "x-arrayCheckCount": false,
              "x-matchResponseSchema": true,
              "headers": {}
            },
            "x-testShouldPass": true,
            "x-testEnabled": true,
            "x-testName": "Start Attended Session in Browser",
            "x-testDescription": "<p>This method allows a partner system to launch an attended support session within a browser window. This API does not require authentication, so the technician will be prompted to enter their credentials when they run the GoToAssist Expert desktop application for the first time. Since the technician is not required to navigate to a URL, no API is implemented to create the session. Note: This method was formerly named \"Create Attended Session in browser,\" but has been renamed.</p>\n\n<h3>  Request Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  sessionType  </td>    <td>  string  </td>  <td>  The type of session to create (only \"SCREEN_SHARING\" can be used at this time).  </td>  </tr>\n<tr>  <td>  layout*  </td>    <td>  string  </td>  <td>  The style of HTML that will be displayed when starting the session (e.g., \"iFrame\"). If this parameter is not present, then the HTML will fill the entire browser window.  </td>  </tr>\n<tr>  <td>  partnerObject*  </td>    <td>  string  </td>  <td>  The ID of object in the partner system that this session will be associated with.  </td>  </tr>\n<tr>  <td>  partnerObjectUrl*  </td>    <td>  string  </td>  <td>  The URL that may be used in the GoToAssist Expert desktop application if the technician wants to view the partner object. Note: The URL can be used in a popup window or iframe that is 600 pixels wide and 500 pixels wide. For example, a popup window could be created with HTML code as follows: <p><code><a href=\"#\" onclick=\"window.open('https://api.getgo.com/G2A/rest/v1/session?layout=iframe&amp;partnerObject=123&amp;partnerObjectUrl=http…’,’Starting Support Session’,'height=600,width=600,scrollbars=no,resizable=no');\">Start Remote Support</a> </code></p>  </td>  </tr>\n<tr>  <td>  sessionStatusCallbackUrl*  </td>    <td>  string  </td>  <td>  The URL that will receive a POST when the session status changes. A POST will also be made to the sessionStatusCallbackUrl when a customer joins the session and when the session ends (whether or not a customer joined). The contents of the POST will be similar as the GET /v1/sessions/ API. <br/>Note: The ID of the session is not known until the session is actually started on the endpoint. If the URL is not specified or the session is never started (e.g., if the customer cancels the installation of the GoToAssist Customer desktop application), then the callback will not be made.  </td>  </tr>\n</table>                      \n<p>* Optional parameters</p>"
          }
        ],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      }
    },
    "/sessions/{sessionId}": {
      "get": {
        "description": "<p>This method retrieves detailed information about a current or previous support session (either attended or unattended) based on the sessionID or sessionToken. “sessionToken” is returned in response of create screen-sharing session API. Information about sessions that are complete may only be available for a limited period of time after the end of the session (currently, the information is available for at least 30 days). The session must have been hosted from an account or company that the authenticated user has access to.</p>\r\n\r\n<p><strong>Note:</strong> This method was formerly named \"Get Attended Session Info,\" but has been renamed to address the fact that it now includes unattended support sessions as well.</p>\r\n\r\n<h3>  Response Parameters  </h3>                  \r\n<table border=1>                      \r\n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\r\n<tr>  <td>  sessionId  </td>    <td>  string  </td>  <td>  The unique ID of this session.  </td>  </tr>\r\n<tr>  <td>  sessionType  </td>    <td>  string  </td>  <td>  The type of the session; this determines what other attributes the response may contain.  </td>  </tr>\r\n<tr>  <td>  status  </td>    <td>  string  </td>  <td>  \"The current state of the session; it can be: <br/><ul>\r\n<li>waiting = Waiting for the customer to join the session.</li>\r\n<li>active = Customer has joined and session is currently active.</li>\r\n<li>complete = Session has ended after the customer joined.</li>\r\n<li>abandoned = Session has ended without any customer joining.</li>\r\n<li>notStarted = Session was created but never started by the expert.</li></ul>\"  </td>  </tr>\r\n<tr>  <td>  accountKey  </td>    <td>  number  </td>  <td>  The unique GoToAssist system ID of the account the support session was hosted from.  </td>  </tr>\r\n<tr>  <td>  expertName  </td>    <td>  string  </td>  <td>  The human-readable name of the first technician in the support session.  </td>  </tr>\r\n<tr>  <td>  expertEmail  </td>    <td>  string  </td>  <td>  Email id of the first expert in the session.  </td>  </tr>\r\n<tr>  <td>  expertUserKey  </td>    <td>  string  </td>  <td>  Unique ID of the first expert in the session in the G2A system.  </td>  </tr>\r\n<tr>  <td>  partnerObject  </td>    <td>  number  </td>  <td>  The ID of the object in the partner system that is associated with this session.  </td>  </tr>\r\n<tr>  <td>  partnerObjectUrl  </td>    <td>  string  </td>  <td>  The URL for the expert to view the associated partnerObject.  </td>  </tr>\r\n<tr>  <td>  startedAt*  </td>    <td>  ISO 8061 format*  </td>  <td>  The time that the session started.  </td>  </tr>\r\n<tr>  <td>  customerJoinedAt*  </td>    <td>  ISO 8061 format*  </td>  <td>  The time that the customer joined the session.  </td>  </tr>\r\n<tr>  <td>  endedAt*  </td>    <td>  ISO 8061 format*  </td>  <td>  The time that the session ended.  </td>  </tr>\r\n<tr>  <td>  unattendedMachineName*  </td>    <td>  string  </td>  <td>  Name of the unattended machine the session is with if this is an unattended session.  </td>  </tr>\r\n<tr>  <td>  unattendedMachineUuid*  </td>    <td>  string  </td>  <td>  ID of the unattended machine the session is with if this is an unattended session.  </td>  </tr>\r\n<tr>  <td>  accountName*  </td>    <td>  string  </td>  <td>  The human-readable name of the account the support session was hosted from (unattended sessions only)  </td>  </tr>\r\n<tr>  <td>  customerName*  </td>    <td>  string  </td>  <td>  The human-readable name of the customer in the support session.  </td>  </tr>\r\n<tr>  <td>  customerEmail*  </td>    <td>  string  </td>  <td>  The email address of the customer in the support session.  </td>  </tr>\r\n<tr>  <td>  customerJoinUrl  </td>    <td>  string  </td>  <td>  A URL that can be sent to a customer to join the session.  </td>  </tr>\r\n<tr>  <td>  notes*  </td>    <td>  string  </td>  <td>  All notes that were entered by the technician in the Viewer during the support session  </td>  </tr>\r\n<tr>  <td>  sessionRecordingUrl*  </td>    <td>  string  </td>  <td>  The URL where the technician can view a recording of the session within the GoToAssist web application (only available if the technician has opted to record support sessions (link is external))  </td>  </tr>\r\n<tr>  <td>  collaborators*  </td>    <td>  array  </td>  <td>  A list of other users who collaborated on the support session (i.e., other technicians who joined the session)  </td>  </tr>\r\n</table>                      \r\n<p>* Parameters only listed if available/applicable</p>\r\n\r\n<h3>Status Codes</h3>              \r\n<table border=1>              \r\n<tr>  <th>  Staus Code  </th>  <th>  description  </th>  </tr>\r\n<tr>  <td>  200 OK  </td>  <td>  The information was successfully retrieved  </td>  </tr>\r\n<tr>  <td>  401 Unauthorized  </td>  <td>  An authentication parameter was passed, but either it was invalid or the technician is not entitled with a Remote Support seat  </td>  </tr>\r\n<tr>  <td>  404 Not Found  </td>  <td>  The sessionID is not valid for the authorized user and the session could not be found  </td>  </tr>\r\n<tr>  <td>  405 Method Not Allowed  </td>  <td>  The method was entered incorrectly (i.e., the technician tried to use POST, PUT etc. instead of GET)  </td>  </tr>\r\n<tr>  <td>  500 Internal Server Error  </td>  <td>  An unhandled error occurred  </td>  </tr>\r\n</table>",
        "summary": "Get Screen Sharing Session Info",
        "tags": [
          "Sessions"
        ],
        "operationId": "SessionsBySessionIdGet2",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      }
    },
    "/archive/recordings/transcode/{readyForTranscodeRecordingIds}": {
      "post": {
        "description": "<p>This method requests that a list of recordings be transcoded; once the API passes successfully, transcoding will be initiated for each of the recordings in the list. A result of “204” will be returned, regardless of the current state of the recordings (i.e., even if they are already transcoded). No more than 500 recordings can be transcoded at once.</p>\n\n<p><strong>Note:</strong> Session recording must be enabled on the account in order to use this API method. To enable session recording, log in at https://app.gotoassist.com (link is external) and go to Configure > GoToAssist Settings > Enable Session Recording check box.</p>\n\n<h3>  Request Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  recordingIds  </td>    <td>  array  </td>  <td>  A list of RecordingIds for the recordings to be transcoded  </td>  </tr>\n</table>                      \n\n<h3>Status Codes</h3>                \n<table border=1>                \n<tr>  <th>  Staus Code  </th>    <th>  description  </th>  </tr>\n<tr>  <td>  204 No Content  </td>    <td>  Transcoding initiated  </td>  </tr>\n<tr>  <td>  400 Bad Request  </td>    <td>  Request may be malformed or property may be missing or invalid  </td>  </tr>\n<tr>  <td>  403 Forbidden  </td>    <td>  Invalid authorization header or invalid recordingIDs  </td>  </tr>\n<tr>  <td>  500 Internal Server Error  </td>    <td>  Unexpected server error  </td>  </tr>\n</table>",
        "summary": "Transcode Recordings",
        "tags": [
          "Recordings"
        ],
        "operationId": "ArchiveRecordingsTranscodeByReadyForTranscodeRecordingIdsPost",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "readyForTranscodeRecordingIds",
            "in": "path",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      }
    },
    "/sessions/{sessionId}/events": {
      "get": {
        "description": "<p>Get information about a current or previous web-chat session based upon the sessionID. The session must have been run within an account or company that the authenticated user has access to.</p>\n\n<h3>  Response Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  sessionId  </td>    <td>  string  </td>  <td>  The unique ID of this session  </td>  </tr>\n<tr>  <td>  startTime  </td>    <td>  ISO 8601 format*  </td>  <td>  The start time of web-chat session  </td>  </tr>\n<tr>  <td>  endTime  </td>    <td>  ISO 8601 format*  </td>  <td>  The endTime of the session  </td>  </tr>\n<tr>  <td>  timeStamp  </td>    <td>  ISO 8601 format*  </td>  <td>  Time when the event occurred  </td>  </tr>\n<tr>  <td>  content  </td>    <td>  string  </td>  <td>  Details of the event. It could be a question/answer asked by customer/expert or could indicate joining or ending of session by expert  </td>  </tr>\n<tr>  <td>  participantName  </td>    <td>  string  </td>  <td>  Name of the customer or expert  </td>  </tr>\n</table>                      \n<p>* <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601 format reference</a></p>\n\n<h3>Status Codes</h3>              \n<table border=1>              \n<tr>  <th>  Staus Code  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  200 OK  </td>  <td>  WebChat transcripts info successfully fetched  </td>  </tr>\n<tr>  <td>  400 Bad Request  </td>  <td>  An error occurred due to missing required parameters or portal not being created  </td>  </tr>\n<tr>  <td>  401 Unauthorized  </td>  <td>  An authentication parameter was passed, but either it was invalid or the technician is not entitled with a Remote Support seat  </td>  </tr>\n<tr>  <td>  403 Forbidden  </td>  <td>  Access denied. User doesn’t have required roles  </td>  </tr>\n<tr>  <td>  404 Not Found  </td>  <td>  No web-chat transcript found for the specified session-id  </td>  </tr>\n<tr>  <td>  405 Method Not Allowed  </td>  <td>  The method was entered incorrectly (i.e., the technician tried to use POST, PUT etc. instead of GET)  </td>  </tr>\n<tr>  <td>  500 Internal Server Error  </td>  <td>  An unhandled error occurred  </td>  </tr>\n</table>",
        "summary": "Get WebChat Transcript Info",
        "tags": [
          "Sessions"
        ],
        "operationId": "SessionsEventsBySessionIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      }
    },
    "/companies/{companyId}/machines": {
      "get": {
        "description": "<p>This method retrieves information about the unattended machines associated with a specified company.</p>\n\n<h3>  Response Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  totalNumMachines  </td>    <td>  integer  </td>  <td>  Number of machines returned.  </td>  </tr>\n<tr>  <td>  machines  </td>    <td>  map  </td>  <td>  Map of machines matching the search criteria.  </td>  </tr>\n<tr>  <td>  machineUuid  </td>    <td>  string  </td>  <td>  Un-attended machine uuid.  </td>  </tr>\n<tr>  <td>  machineName  </td>    <td>  string  </td>  <td>  Name of the un-attended machine.  </td>  </tr>\n<tr>  <td>  dnsName  </td>    <td>  string  </td>  <td>  DNS name of the un-attended machine  </td>  </tr>\n<tr>  <td>  ipAddresses  </td>    <td>  string  </td>  <td>  IP Addresses associated with the un-attended machine.  </td>  </tr>\n<tr>  <td>  machineStatus  </td>    <td>  string  </td>  <td>  The current state of the session; it can be one of the following:<br/><ul><li>ONLINE = un-attended machine is online</li>\n<li>OFFLINE = un-attended machine is offline</li>\n<li>BLOCKED = access to un-attended machine has been blocked</li>\n<li>REMOVED = un-attended machine setup has been removed</li></ul></td>  </tr>\n<tr>  <td>  companyId  </td>    <td>  string  </td>  <td>  Id of the company with which the un-attended machine has been associated.  </td>  </tr>\n</table>                      \n\n<h3>Status Codes</h3>              \n<table border=1>              \n<tr>  <th>  Staus Code  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  200 OK  </td>  <td>  The information was successfully retrieved  </td>  </tr>\n<tr>  <td>  401 Unauthorized  </td>  <td>  An authentication parameter was passed, but either it was invalid or the technician is not entitled with a Remote Support seat  </td>  </tr>\n<tr>  <td>  403 Forbidden  </td>  <td>  Access denied. User doesn’t have required roles  </td>  </tr>\n<tr>  <td>  404 Not Found  </td>  <td>  No machines found  </td>  </tr>\n<tr>  <td>  405 Method Not Allowed  </td>  <td>  The method was entered incorrectly (i.e., the technician tried to use POST, PUT etc. instead of GET)  </td>  </tr>\n<tr>  <td>  500 Internal Server Error  </td>  <td>  An unhandled error occurred  </td>  </tr>\n</table>",
        "summary": "Get Machines",
        "tags": [
          "Sessions"
        ],
        "operationId": "CompaniesMachinesByCompanyIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "companyId",
            "in": "path",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      }
    },
    "/archive/recordings/archived/{recordingIDs}": {
      "put": {
        "description": "<p>This method marks a list of recordings as archived by setting their archived flag to “true.” No more than 500 recordings can be marked as archived once.</p>\n\n<p><strong>Note:</strong> Session recording must be enabled on the account in order to use this API method. To enable session recording, log in at https://app.gotoassist.com (link is external) and go to Configure > GoToAssist Settings > Enable Session Recording check box.</p>\n\n<h3>  Request Parameters  </h3>                  \n<table border=1>                      \n<tr>  <th>  field  </th>    <th>  data type  </th>  <th>  description  </th>  </tr>\n<tr>  <td>  recordingIds  </td>    <td>  array  </td>  <td>  A list of recordingIDs for the recordings to be archived  </td>  </tr>\n</table>\n\n<h3>Status Codes</h3>                \n<table border=1>                \n<tr>  <th>  Staus Code  </th>    <th>  description  </th>  </tr>\n<tr>  <td>  204 No Content  </td>    <td>  Recordings have been archived  </td>  </tr>\n<tr>  <td>  400 Bad Request  </td>    <td>  Request may be malformed or property may be missing or invalid  </td>  </tr>\n<tr>  <td>  403 Forbidden  </td>    <td>  Invalid authorization header or invalid recordingIDs  </td>  </tr>\n<tr>  <td>  500 Internal Server Error  </td>    <td>  Unexpected server error  </td>  </tr>\n</table>",
        "summary": "Mark Recordings as Archived",
        "tags": [
          "Recordings"
        ],
        "operationId": "ArchiveRecordingsArchivedByRecordingIDsPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "type": "string",
            "description": ""
          },
          {
            "name": "recordingIDs",
            "in": "path",
            "required": true,
            "type": "string",
            "description": ""
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "auth": []
          }
        ],
        "x-unitTests": [],
        "x-operation-settings": {
          "CollectParameters": false,
          "AllowDynamicQueryParameters": false,
          "AllowDynamicFormParameters": false,
          "IsMultiContentStreaming": false
        }
      }
    }
  },
  "definitions": {
    "PartnerSystem linksrequest": {
      "title": "Partner-System LinksRequest",
      "example": {
        "systemName": "Test RS Call",
        "systemDomain": "testrs.com",
        "userEmail": "muddy.waters@DeBlues.com",
        "userToken": "F5EE645AAA87462523475FFF8576348574",
        "callbackUrl": "https://api.mondo-tickets.com/g2a_prefix",
        "supportedCallbacks": {
          "createObject": true,
          "searchObjects": true,
          "associateObject": true
        }
      },
      "type": "object",
      "properties": {
        "systemName": {
          "description": "",
          "example": "Test RS Call",
          "type": "string"
        },
        "systemDomain": {
          "description": "",
          "example": "testrs.com",
          "type": "string"
        },
        "userEmail": {
          "description": "",
          "example": "muddy.waters@DeBlues.com",
          "type": "string"
        },
        "userToken": {
          "description": "",
          "example": "F5EE645AAA87462523475FFF8576348574",
          "type": "string"
        },
        "callbackUrl": {
          "description": "",
          "example": "https://api.mondo-tickets.com/g2a_prefix",
          "type": "string"
        },
        "supportedCallbacks": {
          "$ref": "#/definitions/SupportedCallbacks"
        }
      },
      "required": [
        "systemName",
        "systemDomain",
        "userEmail",
        "userToken",
        "callbackUrl",
        "supportedCallbacks"
      ]
    },
    "SupportedCallbacks": {
      "title": "SupportedCallbacks",
      "example": {
        "createObject": true,
        "searchObjects": true,
        "associateObject": true
      },
      "type": "object",
      "properties": {
        "createObject": {
          "description": "",
          "example": true,
          "type": "boolean"
        },
        "searchObjects": {
          "description": "",
          "example": true,
          "type": "boolean"
        },
        "associateObject": {
          "description": "",
          "example": true,
          "type": "boolean"
        }
      },
      "required": [
        "createObject",
        "searchObjects",
        "associateObject"
      ]
    },
    "CreateTicketrequest": {
      "title": "Create TicketRequest",
      "example": {
        "sessionId": "SS-111222333",
        "userToken": "F5EE645AAA87462523475FFF8576348574",
        "title": "User needs help installing Office",
        "body": "I am going to install office for them now"
      },
      "type": "object",
      "properties": {
        "sessionId": {
          "description": "",
          "example": "SS-111222333",
          "type": "string"
        },
        "userToken": {
          "description": "",
          "example": "F5EE645AAA87462523475FFF8576348574",
          "type": "string"
        },
        "title": {
          "description": "",
          "example": "User needs help installing Office",
          "type": "string"
        },
        "body": {
          "description": "",
          "example": "I am going to install office for them now",
          "type": "string"
        }
      },
      "required": [
        "sessionId",
        "userToken",
        "title",
        "body"
      ]
    },
    "StartWebchatSessionrequest": {
      "title": "Start WebChat SessionRequest",
      "example": {
        "sessionType": "web_chat",
        "sessionStatusCallbackUrl": "https://myapp.com/rest/sessionChanged",
        "portalName": "acme-corp",
        "partnerObject": "123",
        "partnerObjectUrl": "https://mysupport.com/tickets/123",
        "customerFirstName": "Jane",
        "customerLastName": "Blogs",
        "customerEmail": "jane@blogs.com"
      },
      "type": "object",
      "properties": {
        "sessionType": {
          "description": "",
          "example": "web_chat",
          "type": "string"
        },
        "sessionStatusCallbackUrl": {
          "description": "",
          "example": "https://myapp.com/rest/sessionChanged",
          "type": "string"
        },
        "portalName": {
          "description": "",
          "example": "acme-corp",
          "type": "string"
        },
        "partnerObject": {
          "description": "",
          "example": "123",
          "type": "string"
        },
        "partnerObjectUrl": {
          "description": "",
          "example": "https://mysupport.com/tickets/123",
          "type": "string"
        },
        "customerFirstName": {
          "description": "",
          "example": "Jane",
          "type": "string"
        },
        "customerLastName": {
          "description": "",
          "example": "Blogs",
          "type": "string"
        },
        "customerEmail": {
          "description": "",
          "example": "jane@blogs.com",
          "type": "string"
        }
      },
      "required": [
        "sessionType",
        "sessionStatusCallbackUrl",
        "portalName",
        "partnerObject",
        "partnerObjectUrl",
        "customerFirstName",
        "customerLastName",
        "customerEmail"
      ]
    },
    "StartScreenSharingSessionrequest": {
      "title": "Start Screen Sharing SessionRequest",
      "example": {
        "sessionType": "screen_sharing",
        "sessionStatusCallbackUrl": "https://myapp.com/rest/sessionChanged",
        "partnerObject": "123",
        "partnerObjectUrl": "https://mysupport.com/tickets/123",
        "customerName": "Jane Blogs",
        "customerEmail": "jane@blogs.com",
        "machineUuid": "3424-234234-23443234"
      },
      "type": "object",
      "properties": {
        "sessionType": {
          "description": "",
          "example": "screen_sharing",
          "type": "string"
        },
        "sessionStatusCallbackUrl": {
          "description": "",
          "example": "https://myapp.com/rest/sessionChanged",
          "type": "string"
        },
        "partnerObject": {
          "description": "",
          "example": "123",
          "type": "string"
        },
        "partnerObjectUrl": {
          "description": "",
          "example": "https://mysupport.com/tickets/123",
          "type": "string"
        },
        "customerName": {
          "description": "",
          "example": "Jane Blogs",
          "type": "string"
        },
        "customerEmail": {
          "description": "",
          "example": "jane@blogs.com",
          "type": "string"
        },
        "machineUuid": {
          "description": "",
          "example": "3424-234234-23443234",
          "type": "string"
        }
      },
      "required": [
        "sessionType",
        "sessionStatusCallbackUrl",
        "partnerObject",
        "partnerObjectUrl",
        "customerName",
        "customerEmail",
        "machineUuid"
      ]
    },
    "AssociateTicketrequest": {
      "title": "Associate TicketRequest",
      "example": {
        "sessionId": "SS-111222333",
        "userToken": "F5EE645AAA87462523475FFF8576348574",
        "partnerObject": "123"
      },
      "type": "object",
      "properties": {
        "sessionId": {
          "description": "",
          "example": "SS-111222333",
          "type": "string"
        },
        "userToken": {
          "description": "",
          "example": "F5EE645AAA87462523475FFF8576348574",
          "type": "string"
        },
        "partnerObject": {
          "description": "",
          "example": "123",
          "type": "string"
        }
      },
      "required": [
        "sessionId",
        "userToken",
        "partnerObject"
      ]
    }
  }
}