[
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The SDK creation factory. Create an instance of the SDK by calling this factory with the desired configurations.\nThe SDK instance will be referred as 'api' throughout the rest of the documentation content."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 3,
        "type": null
      },
      {
        "title": "method",
        "description": null,
        "lineNumber": 4,
        "name": "create"
      },
      {
        "title": "param",
        "description": "The configuration object.",
        "lineNumber": 5,
        "type": {
          "type": "NameExpression",
          "name": "config"
        },
        "name": "config"
      },
      {
        "title": "return",
        "description": "The SDK instance.",
        "lineNumber": 6,
        "type": {
          "type": "NameExpression",
          "name": "api"
        }
      },
      {
        "title": "example",
        "description": "// Instantiate the SDK.\nimport { create } from '@rbbn/webrtc-js-sdk'\nconst client = create({\n    authentication: { ... },\n    logs: { ... },\n    ...\n});\n// Use the SDK's API.\nclient.on( ... );",
        "lineNumber": 7
      }
    ],
    "loc": {
      "start": {
        "line": 3,
        "column": 0
      },
      "end": {
        "line": 20,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 121,
          "column": 0
        },
        "end": {
          "line": 121,
          "column": 58
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/builds/core/index.js"
    },
    "augments": [],
    "examples": [
      {
        "description": "// Instantiate the SDK.\nimport { create } from '@rbbn/webrtc-js-sdk'\nconst client = create({\n    authentication: { ... },\n    logs: { ... },\n    ...\n});\n// Use the SDK's API.\nclient.on( ... );"
      }
    ],
    "implements": [],
    "params": [
      {
        "title": "param",
        "name": "config",
        "lineNumber": 5,
        "description": {
          "type": "root",
          "children": [
            {
              "type": "paragraph",
              "children": [
                {
                  "type": "text",
                  "value": "The configuration object."
                }
              ]
            }
          ]
        },
        "type": {
          "type": "NameExpression",
          "name": "config"
        }
      }
    ],
    "properties": [],
    "returns": [
      {
        "description": {
          "type": "root",
          "children": [
            {
              "type": "paragraph",
              "children": [
                {
                  "type": "text",
                  "value": "The SDK instance."
                }
              ]
            }
          ]
        },
        "title": "returns",
        "type": {
          "type": "NameExpression",
          "name": "api"
        }
      }
    ],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "function",
    "name": "create",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [],
      "static": []
    },
    "path": [
      {
        "name": "create",
        "kind": "function"
      }
    ],
    "namespace": "create"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The configuration object. This object defines what different configuration\nvalues you can use when instantiating the SDK using the "
            },
            {
              "type": "link",
              "url": "#create",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "create"
                }
              ]
            },
            {
              "type": "text",
              "value": " function."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 3,
        "type": null
      },
      {
        "title": "module",
        "description": null,
        "lineNumber": 4,
        "type": null,
        "name": "config"
      }
    ],
    "loc": {
      "start": {
        "line": 31,
        "column": 0
      },
      "end": {
        "line": 36,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 121,
          "column": 0
        },
        "end": {
          "line": 121,
          "column": 58
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/builds/core/index.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "module",
    "name": "config",
    "members": {
      "global": [],
      "inner": [],
      "instance": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Configuration options for the Logs feature."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will log information about the operations it is performing. The\namount of information will depend on how the Logs feature is configured."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The format of logs can also be customized by providing a\n"
                  },
                  {
                    "type": "link",
                    "url": "#loggerloghandler",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "LogHandler"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ". This function will receive a\n"
                  },
                  {
                    "type": "link",
                    "url": "#loggerlogentry",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "LogEntry"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " which it can handle as it sees fit. By\ndefault, the SDK will log information to the console. For more\ninformation, see the "
                  },
                  {
                    "type": "link",
                    "url": "#logger",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Logs feature"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " description."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 12,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 13
            },
            {
              "title": "name",
              "description": null,
              "lineNumber": 14,
              "name": "config.logs"
            },
            {
              "title": "memberof",
              "description": "config",
              "lineNumber": 15
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 16,
              "name": "logs"
            },
            {
              "title": "instance",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "param",
              "description": "Logs configs.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "logs"
            },
            {
              "title": "param",
              "description": "Log level to be set. See {@link logger.levels}.",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "logs.logLevel",
              "default": "'debug'"
            },
            {
              "title": "param",
              "description": "The function to receive log entries from the\n   SDK. If not provided, a default handler will be used that logs entries\n   to the console.",
              "lineNumber": 20,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "logger.LogHandler"
                }
              },
              "name": "logs.handler"
            },
            {
              "title": "param",
              "description": "Options specifically for action logs when\n   logLevel is at DEBUG+ levels. Set this to false to not output action logs.",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "UnionType",
                  "elements": [
                    {
                      "type": "NameExpression",
                      "name": "Object"
                    },
                    {
                      "type": "NameExpression",
                      "name": "boolean"
                    }
                  ]
                }
              },
              "name": "logs.logActions",
              "default": "false"
            },
            {
              "title": "param",
              "description": "The function to receive action\n   log entries from the SDK. If not provided, a default handler will be used\n   that logs actions to the console.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "logger.LogHandler"
                }
              },
              "name": "logs.logActions.handler"
            },
            {
              "title": "param",
              "description": "Only output information\n   about the action itself. Omits the SDK context for when it occurred.",
              "lineNumber": 28,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "logs.logActions.actionOnly",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Whether logs should be\n   minimized when initially output. The full log is still output and can be\n   inspected on the console.",
              "lineNumber": 30,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "logs.logActions.collapsed",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Include a diff of what SDK\n   context was changed by the action.",
              "lineNumber": 33,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "logs.logActions.diff",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Log level to be set\n   on the action logs",
              "lineNumber": 35,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "logs.logActions.level",
              "default": "'debug'"
            },
            {
              "title": "param",
              "description": "Allow action payloads\n   to be exposed in the logs, potentially displaying sensitive information.",
              "lineNumber": 37,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "logs.logActions.exposePayloads",
              "default": "true"
            }
          ],
          "loc": {
            "start": {
              "line": 7,
              "column": 0
            },
            "end": {
              "line": 46,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 47,
                "column": 0
              },
              "end": {
                "line": 51,
                "column": 1
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/logs/configs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "logs",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Logs configs."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "logs.logLevel",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Log level to be set. See "
                          },
                          {
                            "type": "link",
                            "url": "#loggerlevels",
                            "title": null,
                            "jsdoc": true,
                            "children": [
                              {
                                "type": "text",
                                "value": "logger.levels"
                              }
                            ]
                          },
                          {
                            "type": "text",
                            "value": "."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  },
                  "default": "'debug'"
                },
                {
                  "title": "param",
                  "name": "logs.handler",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The function to receive log entries from the\nSDK. If not provided, a default handler will be used that logs entries\nto the console."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "logger.LogHandler"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "logs.logActions",
                  "lineNumber": 23,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options specifically for action logs when\nlogLevel is at DEBUG+ levels. Set this to false to not output action logs."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "UnionType",
                    "elements": [
                      {
                        "type": "NameExpression",
                        "name": "Object"
                      },
                      {
                        "type": "NameExpression",
                        "name": "boolean"
                      }
                    ]
                  },
                  "default": "false",
                  "properties": [
                    {
                      "title": "param",
                      "name": "logs.logActions.handler",
                      "lineNumber": 25,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The function to receive action\nlog entries from the SDK. If not provided, a default handler will be used\nthat logs actions to the console."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "logger.LogHandler"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "logs.logActions.actionOnly",
                      "lineNumber": 28,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Only output information\nabout the action itself. Omits the SDK context for when it occurred."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "boolean"
                      },
                      "default": "false"
                    },
                    {
                      "title": "param",
                      "name": "logs.logActions.collapsed",
                      "lineNumber": 30,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Whether logs should be\nminimized when initially output. The full log is still output and can be\ninspected on the console."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "boolean"
                      },
                      "default": "false"
                    },
                    {
                      "title": "param",
                      "name": "logs.logActions.diff",
                      "lineNumber": 33,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Include a diff of what SDK\ncontext was changed by the action."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "boolean"
                      },
                      "default": "false"
                    },
                    {
                      "title": "param",
                      "name": "logs.logActions.level",
                      "lineNumber": 35,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Log level to be set\non the action logs"
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "string"
                      },
                      "default": "'debug'"
                    },
                    {
                      "title": "param",
                      "name": "logs.logActions.exposePayloads",
                      "lineNumber": 37,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Allow action payloads\nto be exposed in the logs, potentially displaying sensitive information."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "boolean"
                      },
                      "default": "true"
                    }
                  ]
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "instance",
          "name": "config.logs",
          "memberof": "config",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "config",
              "kind": "module"
            },
            {
              "name": "config.logs",
              "scope": "instance"
            }
          ],
          "namespace": "config#config.logs"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Configuration options for the Connectivity feature.\nThe SDK can only use keepalive as the connectivity check."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Keep Alive: The client sends \"keepalive\" messages (to the server) on the websocket at regular intervals. This lets the server know that the client is still connected, and that it should \"keep the connection alive\"."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "For more information on keepalive see here: "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "https://en.wikipedia.org/wiki/Keepalive",
                    "children": [
                      {
                        "type": "text",
                        "value": "https://en.wikipedia.org/wiki/Keepalive"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 7,
              "type": null
            },
            {
              "title": "name",
              "description": null,
              "lineNumber": 8,
              "name": "config.connectivity"
            },
            {
              "title": "memberof",
              "description": "config",
              "lineNumber": 9
            },
            {
              "title": "instance",
              "description": null,
              "lineNumber": 10
            },
            {
              "title": "param",
              "description": "Connectivity configs.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "connectivity"
            },
            {
              "title": "param",
              "description": "Time in between websocket ping attempts (milliseconds).",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Number"
                }
              },
              "name": "connectivity.pingInterval",
              "default": "30000"
            },
            {
              "title": "param",
              "description": "Number of failed reconnect attempts before reporting an error. Can be set to 0 to not limit reconnection attempts.",
              "lineNumber": 13,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Number"
                }
              },
              "name": "connectivity.reconnectLimit",
              "default": "5"
            },
            {
              "title": "param",
              "description": "Base time between websocket reconnect attempts (milliseconds).",
              "lineNumber": 14,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Number"
                }
              },
              "name": "connectivity.reconnectDelay",
              "default": "5000"
            },
            {
              "title": "param",
              "description": "Reconnect delay multiplier for subsequent attempts. The reconnect delay time will be multiplied by this after each failed reconnect attempt to increase the delay between attempts. eg. 5000ms then 10000ms then 20000ms delay if value is 2.",
              "lineNumber": 15,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Number"
                }
              },
              "name": "connectivity.reconnectTimeMultiplier",
              "default": "1"
            },
            {
              "title": "param",
              "description": "Maximum time delay between reconnect attempts (milliseconds). Used in conjunction with the reconnect time multiplier to prevent overly long delays between reconnection attempts.",
              "lineNumber": 16,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Number"
                }
              },
              "name": "connectivity.reconnectTimeLimit",
              "default": "640000"
            },
            {
              "title": "param",
              "description": "Flag to determine whether the SDK will attempt to automatically reconnect after connectivity disruptions.",
              "lineNumber": 17,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Boolean"
                }
              },
              "name": "connectivity.autoReconnect",
              "default": "true"
            },
            {
              "title": "param",
              "description": "Flag to determine whether the SDK should check connectivity.",
              "lineNumber": 18,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Boolean"
                }
              },
              "name": "connectivity.checkConnectivity",
              "default": "true"
            },
            {
              "title": "param",
              "description": "When set to 'query', the OAuth bearer access token will be appended as a query string parameter to the websocket address.",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "connectivity.webSocketOAuthMode",
              "default": "none"
            }
          ],
          "loc": {
            "start": {
              "line": 10,
              "column": 0
            },
            "end": {
              "line": 30,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 31,
                "column": 0
              },
              "end": {
                "line": 41,
                "column": 1
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/connectivity/plugin/configs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "connectivity",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Connectivity configs."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "connectivity.pingInterval",
                  "lineNumber": 12,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Time in between websocket ping attempts (milliseconds)."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Number"
                  },
                  "default": "30000"
                },
                {
                  "title": "param",
                  "name": "connectivity.reconnectLimit",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Number of failed reconnect attempts before reporting an error. Can be set to 0 to not limit reconnection attempts."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Number"
                  },
                  "default": "5"
                },
                {
                  "title": "param",
                  "name": "connectivity.reconnectDelay",
                  "lineNumber": 14,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Base time between websocket reconnect attempts (milliseconds)."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Number"
                  },
                  "default": "5000"
                },
                {
                  "title": "param",
                  "name": "connectivity.reconnectTimeMultiplier",
                  "lineNumber": 15,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Reconnect delay multiplier for subsequent attempts. The reconnect delay time will be multiplied by this after each failed reconnect attempt to increase the delay between attempts. eg. 5000ms then 10000ms then 20000ms delay if value is 2."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Number"
                  },
                  "default": "1"
                },
                {
                  "title": "param",
                  "name": "connectivity.reconnectTimeLimit",
                  "lineNumber": 16,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Maximum time delay between reconnect attempts (milliseconds). Used in conjunction with the reconnect time multiplier to prevent overly long delays between reconnection attempts."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Number"
                  },
                  "default": "640000"
                },
                {
                  "title": "param",
                  "name": "connectivity.autoReconnect",
                  "lineNumber": 17,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Flag to determine whether the SDK will attempt to automatically reconnect after connectivity disruptions."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Boolean"
                  },
                  "default": "true"
                },
                {
                  "title": "param",
                  "name": "connectivity.checkConnectivity",
                  "lineNumber": 18,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Flag to determine whether the SDK should check connectivity."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Boolean"
                  },
                  "default": "true"
                },
                {
                  "title": "param",
                  "name": "connectivity.webSocketOAuthMode",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "When set to 'query', the OAuth bearer access token will be appended as a query string parameter to the websocket address."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  },
                  "default": "none"
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "name": "config.connectivity",
          "memberof": "config",
          "scope": "instance",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "config",
              "kind": "module"
            },
            {
              "name": "config.connectivity",
              "scope": "instance"
            }
          ],
          "namespace": "config#config.connectivity"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Configuration options for the notification feature."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "name",
              "description": null,
              "lineNumber": 3,
              "name": "config.notifications"
            },
            {
              "title": "memberof",
              "description": "config",
              "lineNumber": 4
            },
            {
              "title": "instance",
              "description": null,
              "lineNumber": 5
            },
            {
              "title": "param",
              "description": "The notifications configuration object.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "notifications"
            },
            {
              "title": "param",
              "description": "Default amount of event ids to remember for de-duplication purposes.",
              "lineNumber": 7,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "notifications.idCacheLength",
              "default": "100"
            },
            {
              "title": "param",
              "description": "Communication channel mode used for incoming call notifications. Supported values are 'any-channel' or 'push-channel-only'.",
              "lineNumber": 8,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "notifications.incomingCallNotificationMode",
              "default": "'any-channel'"
            },
            {
              "title": "param",
              "description": "Object describing the server to use for push services.",
              "lineNumber": 9,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "notifications.pushRegistration"
            },
            {
              "title": "param",
              "description": "Hostname for the push registration server.",
              "lineNumber": 10,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "notifications.pushRegistration.server"
            },
            {
              "title": "param",
              "description": "Port for the push registration server.",
              "lineNumber": 11,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "notifications.pushRegistration.port"
            },
            {
              "title": "param",
              "description": "Protocol for the push registration server.",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "notifications.pushRegistration.protocol"
            },
            {
              "title": "param",
              "description": "Version for the push registration server.",
              "lineNumber": 13,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "notifications.pushRegistration.version"
            }
          ],
          "loc": {
            "start": {
              "line": 7,
              "column": 0
            },
            "end": {
              "line": 21,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 23,
                "column": 0
              },
              "end": {
                "line": 26,
                "column": 1
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/notifications/configs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "notifications",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The notifications configuration object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "notifications.idCacheLength",
                  "lineNumber": 7,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Default amount of event ids to remember for de-duplication purposes."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  },
                  "default": "100"
                },
                {
                  "title": "param",
                  "name": "notifications.incomingCallNotificationMode",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Communication channel mode used for incoming call notifications. Supported values are 'any-channel' or 'push-channel-only'."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  },
                  "default": "'any-channel'"
                },
                {
                  "title": "param",
                  "name": "notifications.pushRegistration",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Object describing the server to use for push services."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "notifications.pushRegistration.server",
                      "lineNumber": 10,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Hostname for the push registration server."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "notifications.pushRegistration.port",
                      "lineNumber": 11,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Port for the push registration server."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "notifications.pushRegistration.protocol",
                      "lineNumber": 12,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Protocol for the push registration server."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "notifications.pushRegistration.version",
                      "lineNumber": 13,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Version for the push registration server."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      }
                    }
                  ]
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "name": "config.notifications",
          "memberof": "config",
          "scope": "instance",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "config",
              "kind": "module"
            },
            {
              "name": "config.notifications",
              "scope": "instance"
            }
          ],
          "namespace": "config#config.notifications"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Configurable options for the Request plugin."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK uses the Request plugin to make REST requests to the Gateway."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 6
            },
            {
              "title": "name",
              "description": null,
              "lineNumber": 7,
              "name": "config.request"
            },
            {
              "title": "memberof",
              "description": "config",
              "lineNumber": 8
            },
            {
              "title": "instance",
              "description": null,
              "lineNumber": 9
            },
            {
              "title": "param",
              "description": "Request configuration",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "request"
            },
            {
              "title": "param",
              "description": "The timeout for REST requests, in milliseconds. After this time, the request will be considered failed.",
              "lineNumber": 11,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Number"
                }
              },
              "name": "request.restTimeout",
              "default": "30000"
            }
          ],
          "loc": {
            "start": {
              "line": 7,
              "column": 0
            },
            "end": {
              "line": 19,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 20,
                "column": 0
              },
              "end": {
                "line": 22,
                "column": 1
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/request/configs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "request",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Request configuration"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "request.restTimeout",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The timeout for REST requests, in milliseconds. After this time, the request will be considered failed."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Number"
                  },
                  "default": "30000"
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "instance",
          "name": "config.request",
          "memberof": "config",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "config",
              "kind": "module"
            },
            {
              "name": "config.request",
              "scope": "instance"
            }
          ],
          "namespace": "config#config.request"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Configuration options for the Authentication feature."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "name",
              "description": null,
              "lineNumber": 3,
              "name": "config.authentication"
            },
            {
              "title": "memberof",
              "description": "config",
              "lineNumber": 4
            },
            {
              "title": "instance",
              "description": null,
              "lineNumber": 5
            },
            {
              "title": "param",
              "description": "Authentication configs.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "authentication"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "authentication.server"
            },
            {
              "title": "param",
              "description": "Hostname of the server to be used for requests.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "authentication.server.base"
            },
            {
              "title": "param",
              "description": "Protocol to be used for requests.",
              "lineNumber": 9,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "authentication.server.protocol",
              "default": "'https'"
            },
            {
              "title": "param",
              "description": "Port to be used for requests.",
              "lineNumber": 10,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "authentication.server.port",
              "default": "443"
            }
          ],
          "loc": {
            "start": {
              "line": 7,
              "column": 0
            },
            "end": {
              "line": 18,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 20,
                "column": 0
              },
              "end": {
                "line": 27,
                "column": 1
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/auth/configs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "authentication",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Authentication configs."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "authentication.server",
                  "lineNumber": 7,
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "authentication.server.base",
                      "lineNumber": 8,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Hostname of the server to be used for requests."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    },
                    {
                      "title": "param",
                      "name": "authentication.server.protocol",
                      "lineNumber": 9,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Protocol to be used for requests."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "string"
                      },
                      "default": "'https'"
                    },
                    {
                      "title": "param",
                      "name": "authentication.server.port",
                      "lineNumber": 10,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Port to be used for requests."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "number"
                      },
                      "default": "443"
                    }
                  ]
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "name": "config.authentication",
          "memberof": "config",
          "scope": "instance",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "config",
              "kind": "module"
            },
            {
              "name": "config.authentication",
              "scope": "instance"
            }
          ],
          "namespace": "config#config.authentication"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Configuration options for the Subscription feature."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "name",
              "description": null,
              "lineNumber": 3,
              "name": "config.subscription"
            },
            {
              "title": "memberof",
              "description": "config",
              "lineNumber": 4
            },
            {
              "title": "instance",
              "description": null,
              "lineNumber": 5
            },
            {
              "title": "param",
              "description": "Subscription config.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "subscription"
            },
            {
              "title": "param",
              "description": "The lifetime (in seconds) of a subscription. The SDK will automatically refresh the subscription before it expires. Cannot be less than minimum threshold of 60 seconds.",
              "lineNumber": 7,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "subscription.expires",
              "default": "3600"
            },
            {
              "title": "param",
              "description": "The maximum number of times this client will retry in order to subscribe for a\ngiven service, while getting 'Service Unavailable' from backend.",
              "lineNumber": 8,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "subscription.serviceUnavailableMaxRetries",
              "default": "3"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "subscription.websocket"
            },
            {
              "title": "param",
              "description": "Hostname of the server to be used for websocket notifications.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "subscription.websocket.server"
            },
            {
              "title": "param",
              "description": "Protocol to be used for websocket notifications.",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "subscription.websocket.protocol",
              "default": "wss"
            },
            {
              "title": "param",
              "description": "Port to be used for websocket notifications.",
              "lineNumber": 13,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Number"
                }
              },
              "name": "subscription.websocket.port",
              "default": "443"
            }
          ],
          "loc": {
            "start": {
              "line": 10,
              "column": 0
            },
            "end": {
              "line": 24,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 25,
                "column": 0
              },
              "end": {
                "line": 32,
                "column": 1
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/subscription/configs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "subscription",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Subscription config."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "subscription.expires",
                  "lineNumber": 7,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The lifetime (in seconds) of a subscription. The SDK will automatically refresh the subscription before it expires. Cannot be less than minimum threshold of 60 seconds."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  },
                  "default": "3600"
                },
                {
                  "title": "param",
                  "name": "subscription.serviceUnavailableMaxRetries",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The maximum number of times this client will retry in order to subscribe for a\ngiven service, while getting 'Service Unavailable' from backend."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  },
                  "default": "3"
                },
                {
                  "title": "param",
                  "name": "subscription.websocket",
                  "lineNumber": 10,
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "subscription.websocket.server",
                      "lineNumber": 11,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Hostname of the server to be used for websocket notifications."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    },
                    {
                      "title": "param",
                      "name": "subscription.websocket.protocol",
                      "lineNumber": 12,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Protocol to be used for websocket notifications."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "string"
                      },
                      "default": "wss"
                    },
                    {
                      "title": "param",
                      "name": "subscription.websocket.port",
                      "lineNumber": 13,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Port to be used for websocket notifications."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "Number"
                      },
                      "default": "443"
                    }
                  ]
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "name": "config.subscription",
          "memberof": "config",
          "scope": "instance",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "config",
              "kind": "module"
            },
            {
              "name": "config.subscription",
              "scope": "instance"
            }
          ],
          "namespace": "config#config.subscription"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Configuration options for the call feature."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "name",
              "description": null,
              "lineNumber": 3,
              "name": "config.call"
            },
            {
              "title": "memberof",
              "description": "config",
              "lineNumber": 4
            },
            {
              "title": "instance",
              "description": null,
              "lineNumber": 5
            },
            {
              "title": "param",
              "description": "The call configuration object.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "call"
            },
            {
              "title": "param",
              "description": "A key-value dictionary that corresponds\n   to the available RTCPeerConfiguration which is normally passed when creating an RTCPeerConnection.\n   See {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection#parameters RTCPeerConnection's configuration parameters} for more information.\n   This is the recommended way of setting ICE servers and other RTCPeerConnection-related configuration.",
              "lineNumber": 7,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.RTCPeerConnectionConfig"
                }
              },
              "name": "call.defaultPeerConfig"
            },
            {
              "title": "param",
              "description": "The amount of time to wait for an ideal candidate in milliseconds.\n   The default is 1000ms. An ideal list of candidates is a complete list of candidates considering the RTCPeerConnection configuration.\n   Note that this values will not be considered if a custom function is passed through the `iceCollectionCheckFunction`, and\n   any timeouts must be handled by the custom function.",
              "lineNumber": 11,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "call.iceCollectionIdealTimeout",
              "default": "1000"
            },
            {
              "title": "param",
              "description": "The maximum amount of time to wait for ICE collection in milliseconds.\n   The default is 3000ms. After this time has been reached, the call will proceed with the currently gathered candidates.\n   Note that this values will not be considered if a custom function is passed through the `iceCollectionCheckFunction`, and\n   any timeouts must be handled by the custom function.",
              "lineNumber": 15,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "call.iceCollectionMaxTimeout",
              "default": "3000"
            },
            {
              "title": "param",
              "description": "Override the default IceCollectionCheckFunction to manually decide when\n   to proceed with operations, error out, or wait for the appropriate states and candidates. The function will receive an object containing\n   the ice collection info. See {@link call.IceCollectionInfo IceCollectionInfo} for more details. The function must return\n   a results object with details on how to proceed with the ICE collection check or operatiaon. See {@link call.IceCollectionCheckResult IceCollectionResult}\n   object for details on the format of the return object. See {@link call.IceCollectionCheckFunction IceCollectionCheckFunction} for\n   more information on the form of the function, as well as information about the default IceCollectionCheckFunction that is used if nothing is provided.",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Function"
                }
              },
              "name": "call.iceCollectionCheckFunction"
            },
            {
              "title": "param",
              "description": "Whether server-provided TURN credentials should be used.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "call.serverTurnCredentials",
              "default": "true"
            },
            {
              "title": "param",
              "description": "List of SDP handler functions to modify SDP. Advanced usage.",
              "lineNumber": 26,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.SdpHandlerFunction"
                    }
                  ]
                }
              },
              "name": "call.sdpHandlers"
            },
            {
              "title": "param",
              "description": "Whether early media should be supported for calls. Not supported on Firefox.",
              "lineNumber": 27,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "call.earlyMedia",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Whether the SDK should re-sync all call states after connecting (requires WebRTC Gateway 4.7.1+).",
              "lineNumber": 28,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "call.resyncOnConnect",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Whether to remove a=group attributes to stop media bundling from incoming and outgoing SDP messages.",
              "lineNumber": 29,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "call.removeBundling",
              "default": "false"
            },
            {
              "title": "param",
              "description": "The mode for sending ringing feedback to the Caller ('auto', 'manual').\n   By default, feedback will be automatically sent when a call has been received. In 'manual' mode, the application\n   must initiate the feedback being sent. See the `call.sendRingingFeedback` API for more info.",
              "lineNumber": 30,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "call.ringingFeedbackMode",
              "default": "'auto'"
            },
            {
              "title": "param",
              "description": "Time interval, in milliseconds between call audits.",
              "lineNumber": 33,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "call.callAuditTimer",
              "default": "25000"
            },
            {
              "title": "param",
              "description": "Delay, in milliseconds for the passive side of a call to wait before trying a media reconnection.",
              "lineNumber": 34,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "call.mediaConnectionRetryDelay",
              "default": "3000"
            },
            {
              "title": "param",
              "description": "Specifies whether or not SIP address normalization will be applied.",
              "lineNumber": 35,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "call.normalizeDestination",
              "default": "true"
            }
          ],
          "loc": {
            "start": {
              "line": 19,
              "column": 0
            },
            "end": {
              "line": 55,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 71,
                "column": 0
              },
              "end": {
                "line": 158,
                "column": 1
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/link/index.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "call",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The call configuration object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "call.defaultPeerConfig",
                  "lineNumber": 7,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "A key-value dictionary that corresponds\nto the available RTCPeerConfiguration which is normally passed when creating an RTCPeerConnection.\nSee "
                          },
                          {
                            "type": "link",
                            "url": "https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection#parameters",
                            "title": null,
                            "jsdoc": true,
                            "children": [
                              {
                                "type": "text",
                                "value": "RTCPeerConnection's configuration parameters"
                              }
                            ]
                          },
                          {
                            "type": "text",
                            "value": " for more information.\nThis is the recommended way of setting ICE servers and other RTCPeerConnection-related configuration."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.RTCPeerConnectionConfig"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "call.iceCollectionIdealTimeout",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The amount of time to wait for an ideal candidate in milliseconds.\nThe default is 1000ms. An ideal list of candidates is a complete list of candidates considering the RTCPeerConnection configuration.\nNote that this values will not be considered if a custom function is passed through the "
                          },
                          {
                            "type": "inlineCode",
                            "value": "iceCollectionCheckFunction"
                          },
                          {
                            "type": "text",
                            "value": ", and\nany timeouts must be handled by the custom function."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  },
                  "default": "1000"
                },
                {
                  "title": "param",
                  "name": "call.iceCollectionMaxTimeout",
                  "lineNumber": 15,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The maximum amount of time to wait for ICE collection in milliseconds.\nThe default is 3000ms. After this time has been reached, the call will proceed with the currently gathered candidates.\nNote that this values will not be considered if a custom function is passed through the "
                          },
                          {
                            "type": "inlineCode",
                            "value": "iceCollectionCheckFunction"
                          },
                          {
                            "type": "text",
                            "value": ", and\nany timeouts must be handled by the custom function."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  },
                  "default": "3000"
                },
                {
                  "title": "param",
                  "name": "call.iceCollectionCheckFunction",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Override the default IceCollectionCheckFunction to manually decide when\nto proceed with operations, error out, or wait for the appropriate states and candidates. The function will receive an object containing\nthe ice collection info. See "
                          },
                          {
                            "type": "link",
                            "url": "#callicecollectioninfo",
                            "title": null,
                            "jsdoc": true,
                            "children": [
                              {
                                "type": "text",
                                "value": "IceCollectionInfo"
                              }
                            ]
                          },
                          {
                            "type": "text",
                            "value": " for more details. The function must return\na results object with details on how to proceed with the ICE collection check or operatiaon. See "
                          },
                          {
                            "type": "link",
                            "url": "#callicecollectioncheckresult",
                            "title": null,
                            "jsdoc": true,
                            "children": [
                              {
                                "type": "text",
                                "value": "IceCollectionResult"
                              }
                            ]
                          },
                          {
                            "type": "text",
                            "value": "\nobject for details on the format of the return object. See "
                          },
                          {
                            "type": "link",
                            "url": "#callicecollectioncheckfunction",
                            "title": null,
                            "jsdoc": true,
                            "children": [
                              {
                                "type": "text",
                                "value": "IceCollectionCheckFunction"
                              }
                            ]
                          },
                          {
                            "type": "text",
                            "value": " for\nmore information on the form of the function, as well as information about the default IceCollectionCheckFunction that is used if nothing is provided."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Function"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "call.serverTurnCredentials",
                  "lineNumber": 25,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether server-provided TURN credentials should be used."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "true"
                },
                {
                  "title": "param",
                  "name": "call.sdpHandlers",
                  "lineNumber": 26,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of SDP handler functions to modify SDP. Advanced usage."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "call.SdpHandlerFunction"
                        }
                      ]
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "call.earlyMedia",
                  "lineNumber": 27,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether early media should be supported for calls. Not supported on Firefox."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "call.resyncOnConnect",
                  "lineNumber": 28,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the SDK should re-sync all call states after connecting (requires WebRTC Gateway 4.7.1+)."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "call.removeBundling",
                  "lineNumber": 29,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to remove a=group attributes to stop media bundling from incoming and outgoing SDP messages."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "call.ringingFeedbackMode",
                  "lineNumber": 30,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The mode for sending ringing feedback to the Caller ('auto', 'manual').\nBy default, feedback will be automatically sent when a call has been received. In 'manual' mode, the application\nmust initiate the feedback being sent. See the "
                          },
                          {
                            "type": "inlineCode",
                            "value": "call.sendRingingFeedback"
                          },
                          {
                            "type": "text",
                            "value": " API for more info."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  },
                  "default": "'auto'"
                },
                {
                  "title": "param",
                  "name": "call.callAuditTimer",
                  "lineNumber": 33,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Time interval, in milliseconds between call audits."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  },
                  "default": "25000"
                },
                {
                  "title": "param",
                  "name": "call.mediaConnectionRetryDelay",
                  "lineNumber": 34,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Delay, in milliseconds for the passive side of a call to wait before trying a media reconnection."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  },
                  "default": "3000"
                },
                {
                  "title": "param",
                  "name": "call.normalizeDestination",
                  "lineNumber": 35,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Specifies whether or not SIP address normalization will be applied."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "true"
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "name": "config.call",
          "memberof": "config",
          "scope": "instance",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "config",
              "kind": "module"
            },
            {
              "name": "config.call",
              "scope": "instance"
            }
          ],
          "namespace": "config#config.call"
        }
      ],
      "events": [],
      "static": []
    },
    "path": [
      {
        "name": "config",
        "kind": "module"
      }
    ],
    "namespace": "config"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'api' is the type returned by the create function.\nIt contains various top-level functions that pertain to SDK global instance\nas well as several nested namespaces that pertain to various features (e.g. call, contacts, presence, etc)."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 5,
        "type": null
      },
      {
        "title": "module",
        "description": null,
        "lineNumber": 6,
        "type": null,
        "name": "api"
      }
    ],
    "loc": {
      "start": {
        "line": 22,
        "column": 0
      },
      "end": {
        "line": 29,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 121,
          "column": 0
        },
        "end": {
          "line": 121,
          "column": 58
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/builds/core/index.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "module",
    "name": "api",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An error occurred with server authorization."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event will be emitted anytime a REST request to the server is rejected\ndue to an authorization issue. This may occur for invalid credentials or\nexpired tokens, depending on which form of authentication the application\nhas chosen to use."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 7,
              "type": null
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 8
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 9,
              "name": "restAuthorization"
            },
            {
              "title": "event",
              "description": "request:error",
              "lineNumber": 10
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "api.BasicError"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 14,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 15,
                "column": 0
              },
              "end": {
                "line": 15,
                "column": 44
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/request/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 12,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "api.BasicError"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "api",
          "kind": "event",
          "name": "request:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "request:error",
              "kind": "event"
            }
          ],
          "namespace": "api.event:request:error"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The authentication credentials have changed."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event is triggered after calling the "
                  },
                  {
                    "type": "link",
                    "url": "#apisetcredentials",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "setCredentials"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The current user information can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "api.getUserInfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "getUserInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 7,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 8
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 9,
              "name": "auth"
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 10
            },
            {
              "title": "event",
              "description": "auth:change",
              "lineNumber": 11
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 14,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 15,
                "column": 0
              },
              "end": {
                "line": 15,
                "column": 40
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/auth/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "api",
          "kind": "event",
          "name": "auth:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "auth:change",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "api.event:auth:change"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "There was an error with authentication credentials."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event is triggered after calling the "
                  },
                  {
                    "type": "link",
                    "url": "#apisetcredentials",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "setCredentials"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 6
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 7,
              "name": "auth"
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 8
            },
            {
              "title": "event",
              "description": "auth:error",
              "lineNumber": 9
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "api.BasicError"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 17,
              "column": 0
            },
            "end": {
              "line": 30,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 31,
                "column": 0
              },
              "end": {
                "line": 31,
                "column": 38
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/auth/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "api.BasicError"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "api",
          "kind": "event",
          "name": "auth:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "auth:error",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "api.event:auth:error"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Returns the current version of the API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "getVersion"
            }
          ],
          "loc": {
            "start": {
              "line": 197,
              "column": 4
            },
            "end": {
              "line": 203,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 204,
                "column": 4
              },
              "end": {
                "line": 206,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/factory.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "api",
          "kind": "function",
          "name": "getVersion",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "getVersion",
              "kind": "function"
            }
          ],
          "namespace": "apigetVersion"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Destroys the SDK, and removes its state, rendering the SDK unusable.\nUseful when a user logs out and their call data needs to be destroyed.\nThe SDK must be recreated to be usable again.\nThe destroy command is async, and will happen on the next tick\nso as not to interfere with any ongoing events."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 7,
              "type": null
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 8
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 9,
              "name": "destroy"
            },
            {
              "title": "example",
              "description": "// Instantiate the SDK.\nimport { create } from '@rbbn/webrtc-js-sdk'\nconst config = {\n    authentication: { ... },\n    logs: { ... },\n    ...\n}\nlet client = create(config);\nclient.on( ... )\n// Use the SDK\n...\n// Destroy the SDK, then recreate on the next step\nclient.destroy()\nclient = create(config)\nclient.on( ... )",
              "lineNumber": 10
            }
          ],
          "loc": {
            "start": {
              "line": 209,
              "column": 4
            },
            "end": {
              "line": 235,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 236,
                "column": 4
              },
              "end": {
                "line": 270,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/factory.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Instantiate the SDK.\nimport { create } from '@rbbn/webrtc-js-sdk'\nconst config = {\n    authentication: { ... },\n    logs: { ... },\n    ...\n}\nlet client = create(config);\nclient.on( ... )\n// Use the SDK\n...\n// Destroy the SDK, then recreate on the next step\nclient.destroy()\nclient = create(config)\nclient.on( ... )"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "api",
          "kind": "function",
          "name": "destroy",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "destroy",
              "kind": "function"
            }
          ],
          "namespace": "apidestroy"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Gets the current configuration Object. This is the object that is initially set as part of SDK creation using 'create' function."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 5
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 6,
              "name": "config"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "getConfig"
            },
            {
              "title": "returns",
              "description": "A configuration Object.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 22,
              "column": 4
            },
            "end": {
              "line": 31,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 32,
                "column": 4
              },
              "end": {
                "line": 35,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/config/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A configuration Object."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "api",
          "kind": "function",
          "name": "getConfig",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "getConfig",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "api.getConfig"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Update the configuration values for the SDK to use."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will only modify the configurations provided, leaving other configurations\nas they were originally set, by performing a merge of the new values into the\nprevious values."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Please note that the object provided to the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "updateConfig"
                  },
                  {
                    "type": "text",
                    "value": " API may be different\nthan the object retrieved from the "
                  },
                  {
                    "type": "link",
                    "url": "#apigetconfig",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "getConfig"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API. This may happen when a format\nchange has happened and the SDK modifies the provided format to alleviate\nbackwards-compatibility issues. We recommend ensuring the configurations you\nprovide are as described by the "
                  },
                  {
                    "type": "link",
                    "url": "#config",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "config"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " section."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 13,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 15
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 16,
              "name": "config"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 17,
              "name": "updateConfig"
            },
            {
              "title": "param",
              "description": "Key-value pairs that will be placed into the store. See {@link config} for details on what key-value pairs are available for use.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "newConfigValues"
            },
            {
              "title": "example",
              "description": "// Instantiate the SDK with certain configs.\nconst client = create({\n  authentication: { ... },\n  logs: { ... },\n  ...\n})\n\n// Modify a subsection of the configs at a later time.\n// This will only update the specified configurations.\nclient.updateConfig({\n    logs: {\n      loglevel: 'DEBUG'\n    }\n})",
              "lineNumber": 19
            }
          ],
          "loc": {
            "start": {
              "line": 37,
              "column": 4
            },
            "end": {
              "line": 71,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 72,
                "column": 4
              },
              "end": {
                "line": 87,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/config/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Instantiate the SDK with certain configs.\nconst client = create({\n  authentication: { ... },\n  logs: { ... },\n  ...\n})\n\n// Modify a subsection of the configs at a later time.\n// This will only update the specified configurations.\nclient.updateConfig({\n    logs: {\n      loglevel: 'DEBUG'\n    }\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "newConfigValues",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Key-value pairs that will be placed into the store. See "
                      },
                      {
                        "type": "link",
                        "url": "#config",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "config"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": " for details on what key-value pairs are available for use."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "api",
          "kind": "function",
          "name": "updateConfig",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "updateConfig",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "api.updateConfig"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Add an event listener for the specified event type. The event is emitted by the SDK instance."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "on"
            },
            {
              "title": "param",
              "description": "The event type for which to add the listener.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "type"
            },
            {
              "title": "param",
              "description": "The listener for the event type. The parameters of the listener depend on the event type.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Function"
              },
              "name": "listener"
            },
            {
              "title": "example",
              "description": "// Listen for events of a specific type emitted by the SDK.\nclient.on('dummy:event', function (params) {\n   // Handle the event.\n})",
              "lineNumber": 8
            }
          ],
          "loc": {
            "start": {
              "line": 13,
              "column": 4
            },
            "end": {
              "line": 26,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 27,
                "column": 4
              },
              "end": {
                "line": 30,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/events/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Listen for events of a specific type emitted by the SDK.\nclient.on('dummy:event', function (params) {\n   // Handle the event.\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "type",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The event type for which to add the listener."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "listener",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The listener for the event type. The parameters of the listener depend on the event type."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Function"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "api",
          "kind": "function",
          "name": "on",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "on",
              "kind": "function"
            }
          ],
          "namespace": "apion"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Removes an event listener for the specified event type. The event is emitted by the SDK instance."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "off"
            },
            {
              "title": "param",
              "description": "The event type for which to remote the listener.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "type"
            },
            {
              "title": "param",
              "description": "The listener to remove.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Function"
              },
              "name": "listener"
            }
          ],
          "loc": {
            "start": {
              "line": 32,
              "column": 4
            },
            "end": {
              "line": 40,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 41,
                "column": 4
              },
              "end": {
                "line": 44,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/events/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "type",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The event type for which to remote the listener."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "listener",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The listener to remove."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Function"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "api",
          "kind": "function",
          "name": "off",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "off",
              "kind": "function"
            }
          ],
          "namespace": "apioff"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Adds a global event listener to SDK instance."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "subscribe"
            },
            {
              "title": "param",
              "description": "The event listener to add. The parameters are (type, ...args), where args depend on the event type.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Function"
              },
              "name": "listener"
            }
          ],
          "loc": {
            "start": {
              "line": 46,
              "column": 4
            },
            "end": {
              "line": 53,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 54,
                "column": 4
              },
              "end": {
                "line": 57,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/events/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "listener",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The event listener to add. The parameters are (type, ...args), where args depend on the event type."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Function"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "api",
          "kind": "function",
          "name": "subscribe",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "subscribe",
              "kind": "function"
            }
          ],
          "namespace": "apisubscribe"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Removes a global event listener from SDK instance."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "unsubscribe"
            },
            {
              "title": "param",
              "description": "The event listener to remove.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Function"
              },
              "name": "listener"
            }
          ],
          "loc": {
            "start": {
              "line": 59,
              "column": 4
            },
            "end": {
              "line": 66,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 67,
                "column": 4
              },
              "end": {
                "line": 70,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/events/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "listener",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The event listener to remove."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Function"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "api",
          "kind": "function",
          "name": "unsubscribe",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "unsubscribe",
              "kind": "function"
            }
          ],
          "namespace": "apiunsubscribe"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieve information about the browser being used."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Browser information being defined indicates that the browser supports\nbasic webRTC scenarios."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 6
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "getBrowserDetails"
            },
            {
              "title": "return",
              "description": "Object containing `browser` and `version` information.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "example",
              "description": "const details = client.getBrowserDetails()\n\nlog(`Browser in use: ${details.browser}, version ${details.version}.`)",
              "lineNumber": 9
            }
          ],
          "loc": {
            "start": {
              "line": 21,
              "column": 2
            },
            "end": {
              "line": 34,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 35,
                "column": 2
              },
              "end": {
                "line": 38,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/index.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "const details = client.getBrowserDetails()\n\nlog(`Browser in use: ${details.browser}, version ${details.version}.`)"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Object containing "
                      },
                      {
                        "type": "inlineCode",
                        "value": "browser"
                      },
                      {
                        "type": "text",
                        "value": " and "
                      },
                      {
                        "type": "inlineCode",
                        "value": "version"
                      },
                      {
                        "type": "text",
                        "value": " information."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "api",
          "kind": "function",
          "name": "getBrowserDetails",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "getBrowserDetails",
              "kind": "function"
            }
          ],
          "namespace": "apigetBrowserDetails"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves information about the current user."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "getUserInfo"
            },
            {
              "title": "returns",
              "description": "user The user data.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "returns",
              "description": "user.username The username of the current user. Note that this username can take different encoded forms.\n                                It's not meant to be displayed to a user.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "returns",
              "description": "user.token The current access token.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 20,
              "column": 4
            },
            "end": {
              "line": 30,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 31,
                "column": 4
              },
              "end": {
                "line": 34,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/auth/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "user The user data."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "user.username The username of the current user. Note that this username can take different encoded forms.\nIt's not meant to be displayed to a user."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "user.token The current access token."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "api",
          "kind": "function",
          "name": "getUserInfo",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "getUserInfo",
              "kind": "function"
            }
          ],
          "namespace": "apigetUserInfo"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sets the user credentials necessary to make requests to the platform."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit an "
                  },
                  {
                    "type": "link",
                    "url": "#apieventauthchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "auth:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event when the credentials\nare set. If there was an issue with the credentials, an "
                  },
                  {
                    "type": "link",
                    "url": "#apieventautherror",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "auth:error"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent will be emitted instead."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The currently set user information can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "api.getUserInfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "getUserInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If credentials have previously been set, they cannot be set again if there is an active\nsubscription. An "
                  },
                  {
                    "type": "link",
                    "url": "#apieventautherror",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "auth:error"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " will be emitted in\nthis scenario."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 13,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 15
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 16,
              "name": "userCredentialsAuth"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 17,
              "name": "setCredentials"
            },
            {
              "title": "param",
              "description": "The credentials object.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "credentials"
            },
            {
              "title": "param",
              "description": "The username including the application's domain.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "credentials.username"
            },
            {
              "title": "param",
              "description": "The user's password.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "credentials.password"
            },
            {
              "title": "param",
              "description": "The user's authorization name.",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "credentials.authname"
            },
            {
              "title": "returns",
              "description": null,
              "lineNumber": 22,
              "type": {
                "type": "UndefinedLiteral"
              }
            },
            {
              "title": "example",
              "description": "client.setCredentials({\n  username: 'alfred@example.com',\n  password: '********'\n  authname: '********'\n});",
              "lineNumber": 23
            }
          ],
          "loc": {
            "start": {
              "line": 39,
              "column": 4
            },
            "end": {
              "line": 68,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 140,
                "column": 4
              },
              "end": {
                "line": 151,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/auth/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.setCredentials({\n  username: 'alfred@example.com',\n  password: '********'\n  authname: '********'\n});"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "credentials",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The credentials object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "credentials.username",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The username including the application's domain."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "credentials.password",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The user's password."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "credentials.authname",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The user's authorization name."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": []
              },
              "title": "returns",
              "type": {
                "type": "UndefinedLiteral"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "api",
          "kind": "function",
          "name": "setCredentials",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "setCredentials",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "api.setCredentials"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sets the user credentials necessary to make requests to the platform, using HMAC token authentication."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An HMAC token is used to verify a user via the user's authorization within an of organization. HMAC tokens\nare generated by using the HmacSHA1 algorithm and a key on a data object containing an\n"
                  },
                  {
                    "type": "inlineCode",
                    "value": "authenticationTokenRequest"
                  },
                  {
                    "type": "text",
                    "value": " object with the following properties:"
                  }
                ]
              },
              {
                "type": "list",
                "ordered": false,
                "start": null,
                "spread": false,
                "children": [
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "subscriberId - The user's subscriber ID in the organization."
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "organizationId - The ID of the organization the user is a part of."
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit an "
                  },
                  {
                    "type": "link",
                    "url": "#apieventauthchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "auth:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event when the credentials\nare set. If there was an issue with the credentials, an "
                  },
                  {
                    "type": "link",
                    "url": "#apieventautherror",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "auth:error"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent will be emitted instead."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The currently set user information can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "api.getUserInfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "getUserInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If credentials have previously been set, they cannot be set again if there is an active\nsubscription. An "
                  },
                  {
                    "type": "link",
                    "url": "#apieventautherror",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "auth:error"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " will be emitted in\nthis scenario."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 19,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 20
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 21
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 22,
              "name": "hmacTokenAuth"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 23,
              "name": "setCredentials"
            },
            {
              "title": "param",
              "description": "The credentials object.",
              "lineNumber": 24,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "credentials"
            },
            {
              "title": "param",
              "description": "The username.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "credentials.username"
            },
            {
              "title": "param",
              "description": "An HMAC token for the user with the provided user ID.",
              "lineNumber": 26,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "credentials.hmacToken"
            },
            {
              "title": "returns",
              "description": null,
              "lineNumber": 27,
              "type": {
                "type": "UndefinedLiteral"
              }
            },
            {
              "title": "example",
              "description": "const hmacToken = HmacSHA1Algorithm({\n  authenticationTokenRequest: {\n    subscriberId: 'alfred',\n    organizationId: 'example.com'\n  }\n}, key)\n\nclient.setCredentials({\n  username: 'alfred@example.com',\n  hmacToken\n});",
              "lineNumber": 28
            }
          ],
          "loc": {
            "start": {
              "line": 69,
              "column": 4
            },
            "end": {
              "line": 109,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 140,
                "column": 4
              },
              "end": {
                "line": 151,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/auth/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "const hmacToken = HmacSHA1Algorithm({\n  authenticationTokenRequest: {\n    subscriberId: 'alfred',\n    organizationId: 'example.com'\n  }\n}, key)\n\nclient.setCredentials({\n  username: 'alfred@example.com',\n  hmacToken\n});"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "credentials",
              "lineNumber": 24,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The credentials object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "credentials.username",
                  "lineNumber": 25,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The username."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "credentials.hmacToken",
                  "lineNumber": 26,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "An HMAC token for the user with the provided user ID."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": []
              },
              "title": "returns",
              "type": {
                "type": "UndefinedLiteral"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "api",
          "kind": "function",
          "name": "setCredentials",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "setCredentials",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "api.setCredentials"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sets the user credentials necessary to make requests to the platform, using bearer token authentication."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The bearerAccessToken provided establishes what can be accessed by the SDK. The bearerAccessToken\ncan be set again after subscription as long as the subscribed username is passed with the updated bearerAccessToken."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit an "
                  },
                  {
                    "type": "link",
                    "url": "#apieventauthchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "auth:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event when the credentials\nare set. If there was an issue with the credentials, an "
                  },
                  {
                    "type": "link",
                    "url": "#apieventautherror",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "auth:error"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent will be emitted instead."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The currently set user information can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "api.getUserInfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "getUserInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If credentials have previously been set, they cannot be set again if there is an active\nsubscription. An "
                  },
                  {
                    "type": "link",
                    "url": "#apieventautherror",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "auth:error"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " will be emitted in\nthis scenario."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 17
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 18,
              "name": "bearerAccessTokenAuth"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 19,
              "name": "setCredentials"
            },
            {
              "title": "param",
              "description": "The credentials object.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "credentials"
            },
            {
              "title": "param",
              "description": "The username without the application's domain.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "credentials.username"
            },
            {
              "title": "param",
              "description": "A bearerAccessToken retrieved using the authentication APIs of the platform.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "credentials.bearerAccessToken"
            },
            {
              "title": "returns",
              "description": null,
              "lineNumber": 23,
              "type": {
                "type": "UndefinedLiteral"
              }
            },
            {
              "title": "example",
              "description": "client.setCredentials({\n  username: 'alfred@example.com',\n  bearerAccessToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'\n});",
              "lineNumber": 24
            }
          ],
          "loc": {
            "start": {
              "line": 110,
              "column": 4
            },
            "end": {
              "line": 139,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 140,
                "column": 4
              },
              "end": {
                "line": 151,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/auth/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.setCredentials({\n  username: 'alfred@example.com',\n  bearerAccessToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'\n});"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "credentials",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The credentials object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "credentials.username",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The username without the application's domain."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "credentials.bearerAccessToken",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "A bearerAccessToken retrieved using the authentication APIs of the platform."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": []
              },
              "title": "returns",
              "type": {
                "type": "UndefinedLiteral"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "api",
          "kind": "function",
          "name": "setCredentials",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "setCredentials",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "api.setCredentials"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sets the user credentials necessary for REST authorization to the configured WebRTC Gateway."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "setCredentials",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "setCredentials"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a return value instead\nof emitting events. This API will not cause any authentication events to be emitted during this operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "There are no pre-requisites for this API. Credentials will be updated if existing credentials were already set.\nIf there is an active subscription using the credentials, the username cannot be changed, but the authorization\nmethod can be changed. For example, if using a token method, to provide a new token before the previous one expires."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Note: Though this API's name is suffixed with \"Async\", it is not asynchronous and does not return a promise.\nIt is a synchronous operation that will return immediately after setting the credentials. The \"Async\"\nsuffix is used to indicate the new APIs that provide feedback via return values instead of events, which\nare promise-based but with a few exceptions such as this API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 18
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 19,
              "name": "setCredentialsAsync"
            },
            {
              "title": "param",
              "description": "The credentials object.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "credentials"
            },
            {
              "title": "returns",
              "description": "Returns after credentials have been set.",
              "lineNumber": 21,
              "type": {
                "type": "UndefinedLiteral"
              }
            },
            {
              "title": "throws",
              "description": "Throws an error if the credentials cannot be set.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "// Set credentials using the username/password method.\ntry {\n  // Though \"Async\", does not return a promise. See Note in API description.\n  client.setCredentialsAsync({ username, password })\n  // Credentials set successfully.\n} catch (error) {\n  // Credentials could not be set.\n  const { code, message } = error\n}",
              "lineNumber": 23
            }
          ],
          "loc": {
            "start": {
              "line": 153,
              "column": 4
            },
            "end": {
              "line": 186,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 187,
                "column": 4
              },
              "end": {
                "line": 190,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/auth/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Set credentials using the username/password method.\ntry {\n  // Though \"Async\", does not return a promise. See Note in API description.\n  client.setCredentialsAsync({ username, password })\n  // Credentials set successfully.\n} catch (error) {\n  // Credentials could not be set.\n  const { code, message } = error\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "credentials",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The credentials object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Returns after credentials have been set."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "UndefinedLiteral"
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Throws an error if the credentials cannot be set."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "api",
          "kind": "function",
          "name": "setCredentialsAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "setCredentialsAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "api.setCredentialsAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The Basic Error object. Provides information about an error that occurred in the SDK."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 4,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "BasicError"
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 5
            },
            {
              "title": "property",
              "description": "The code of the error. If no code is known, this will be 'NO_CODE'.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "code"
            },
            {
              "title": "property",
              "description": "A human-readable message to describe the error. If no message is known, this will be 'An error occurred'.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "message"
            }
          ],
          "loc": {
            "start": {
              "line": 3,
              "column": 0
            },
            "end": {
              "line": 11,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 13,
                "column": 0
              },
              "end": {
                "line": 28,
                "column": 16
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/errors/index.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "code",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The code of the error. If no code is known, this will be 'NO_CODE'."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "message",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A human-readable message to describe the error. If no message is known, this will be 'An error occurred'."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "BasicError",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "api",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "api",
              "kind": "module"
            },
            {
              "name": "BasicError",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "api.BasicError"
        }
      ]
    },
    "path": [
      {
        "name": "api",
        "kind": "module"
      }
    ],
    "namespace": "api"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'call' namespace (within the 'api' type) is used to make audio and video calls to and from\nSIP users and PSTN phones."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "Call functions are all part of the 'call' namespace."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 6,
        "type": null
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 7,
        "type": null,
        "name": "call"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 9,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 535,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "call",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A call operation has either started, been updated, or finished."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Information about ongoing call operations are stored on the\n"
                  },
                  {
                    "type": "link",
                    "url": "#callcallobject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "CallObject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ". This event indicates that an operation's\ninformation has changed."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The status of an operation indicates whether the local or remote side of the\ncall is currently processing it, with values being 'ONGOING' or 'PENDING',\nrespectively. All operations will begin as 'ONGOING' status with an event\nindicating the 'START' transition. Operations that require a response from\nthe remote side will have an 'UPDATE' transition to the 'PENDING' status once\nit starts to wait for the response. Once complete, an event will indicate\na 'FINISH' transition and the operation will be removed from the call state."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 14,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 15
            },
            {
              "title": "event",
              "description": "call:operation",
              "lineNumber": 16
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID for the call being operated on.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "The type of operation causing this event.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.operation"
            },
            {
              "title": "param",
              "description": "The unique ID of the call operation.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.operationId"
            },
            {
              "title": "param",
              "description": "The transition reason for the operation change.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.transition"
            },
            {
              "title": "param",
              "description": "Flag indicating whether the operation was local or not.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "params.isLocal"
            },
            {
              "title": "param",
              "description": "The operation information before this change.\n   If the transition is to \"start\" the operation, there will be no previous information.",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "params.previous"
            },
            {
              "title": "param",
              "description": "The operation that was ongoing.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "params.previous.operation"
            },
            {
              "title": "param",
              "description": "The operation status before this change.",
              "lineNumber": 26,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "params.previous.status"
            },
            {
              "title": "param",
              "description": "An error object, if the operation was not successful.",
              "lineNumber": 27,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "api.BasicError"
                }
              },
              "name": "params.error"
            },
            {
              "title": "example",
              "description": "client.on('call:operation', (params) => {\n   const { callId, operationId } = params\n\n   // Get the operation from the call's state that this event is about.\n   const call = client.call.getById(callId)\n   const operation = call.currentOperations.find(op => op.id === operationId)\n   log(`${operation.type} operation is now ${operation.status} for call ${callId}.`)\n})",
              "lineNumber": 28
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 38,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 39,
                "column": 0
              },
              "end": {
                "line": 39,
                "column": 46
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('call:operation', (params) => {\n   const { callId, operationId } = params\n\n   // Get the operation from the call's state that this event is about.\n   const call = client.call.getById(callId)\n   const operation = call.currentOperations.find(op => op.id === operationId)\n   log(`${operation.type} operation is now ${operation.status} for call ${callId}.`)\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 18,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID for the call being operated on."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.operation",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The type of operation causing this event."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.operationId",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The unique ID of the call operation."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.transition",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The transition reason for the operation change."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.isLocal",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Flag indicating whether the operation was local or not."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  }
                },
                {
                  "title": "param",
                  "name": "params.previous",
                  "lineNumber": 23,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The operation information before this change.\nIf the transition is to \"start\" the operation, there will be no previous information."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "params.previous.operation",
                      "lineNumber": 25,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The operation that was ongoing."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "params.previous.status",
                      "lineNumber": 26,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The operation status before this change."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 27,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "An error object, if the operation was not successful."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "api.BasicError"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:operation",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:operation",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:operation"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An outgoing call has been started."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Information about the Call can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nAPI."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 7
            },
            {
              "title": "event",
              "description": "call:start",
              "lineNumber": 8
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the call.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            }
          ],
          "loc": {
            "start": {
              "line": 41,
              "column": 0
            },
            "end": {
              "line": 52,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 53,
                "column": 0
              },
              "end": {
                "line": 53,
                "column": 40
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 10,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:start",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:start",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:start"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A new joined call has been started."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Information about the Call can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nAPI."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 7
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 8,
              "name": "link_call"
            },
            {
              "title": "event",
              "description": "call:join",
              "lineNumber": 9
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the call.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "An error object, if the operation was not successful.",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "api.BasicError"
                }
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 55,
              "column": 0
            },
            "end": {
              "line": 68,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 69,
                "column": 0
              },
              "end": {
                "line": 69,
                "column": 36
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 12,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "An error object, if the operation was not successful."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "api.BasicError"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:join",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:join",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:join"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A new incoming call has been received."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Information about the Call can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nAPI."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "NOTE: Upon receiving this notification the call is in \"Initiating\" state. In order\nto answer calls, they must be in either \"Ringing\" or \"Initiated\" states. Therefore,\nthis event should not be used to prompt the user to respond. Instead, the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event should be used for this purpose."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 11,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 12
            },
            {
              "title": "event",
              "description": "call:receive",
              "lineNumber": 13
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the call.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "An error object, if the operation was not successful.",
              "lineNumber": 16,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "api.BasicError"
                }
              },
              "name": "params.error"
            },
            {
              "title": "example",
              "description": "client.on('call:receive', function(params) {\n    // We have received a call\n    promptUser(client.call.getById(params.callId));\n});",
              "lineNumber": 17
            }
          ],
          "loc": {
            "start": {
              "line": 71,
              "column": 0
            },
            "end": {
              "line": 93,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 94,
                "column": 0
              },
              "end": {
                "line": 94,
                "column": 43
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('call:receive', function(params) {\n    // We have received a call\n    promptUser(client.call.getById(params.callId));\n});"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 15,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 16,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "An error object, if the operation was not successful."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "api.BasicError"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:receive",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:receive",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:receive"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Call's state has changed."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "See "
                  },
                  {
                    "type": "link",
                    "url": "#callstates",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.states"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " for information about call states."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 5
            },
            {
              "title": "event",
              "description": "call:stateChange",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the Media object that was operated on.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "The call's properties before the operation changed it.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.previous"
            },
            {
              "title": "param",
              "description": "The previous state of the call.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.previous.state"
            },
            {
              "title": "param",
              "description": "Contains more detailed information about the state change.",
              "lineNumber": 11,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "params.transition"
            },
            {
              "title": "param",
              "description": "The status code associated with the particular state change's reason.",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "params.transition.statusCode"
            },
            {
              "title": "param",
              "description": "The reason for the state change.",
              "lineNumber": 13,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "params.transition.reasonText"
            },
            {
              "title": "param",
              "description": "The previous local hold state. Present when the state change was a hold/unhold operation.",
              "lineNumber": 14,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "params.previous.localHold"
            },
            {
              "title": "param",
              "description": "The previous remote hold state. Present when the state change was a hold/unhold operation.",
              "lineNumber": 15,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "params.previous.remoteHold"
            },
            {
              "title": "param",
              "description": "An error object, if the operation was not successful.",
              "lineNumber": 16,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "api.BasicError"
                }
              },
              "name": "params.error"
            },
            {
              "title": "example",
              "description": "client.on('call:stateChange', function (params) {\n    const call = client.call.getById(params.callId)\n    const prevState = params.previous.state\n    log(`Call changed from ${prevState} to ${call.state} state.`)\n\n    // Handle the event depending on the new call state.\n    switch (call.state) {\n        case client.call.states.CONNECTED:\n            // Handle being on call with media.\n            break\n        case client.call.states.ENDED:\n            // Handle call ending.\n            break\n        ...\n    }\n})",
              "lineNumber": 17
            }
          ],
          "loc": {
            "start": {
              "line": 96,
              "column": 0
            },
            "end": {
              "line": 130,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 131,
                "column": 0
              },
              "end": {
                "line": 131,
                "column": 51
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('call:stateChange', function (params) {\n    const call = client.call.getById(params.callId)\n    const prevState = params.previous.state\n    log(`Call changed from ${prevState} to ${call.state} state.`)\n\n    // Handle the event depending on the new call state.\n    switch (call.state) {\n        case client.call.states.CONNECTED:\n            // Handle being on call with media.\n            break\n        case client.call.states.ENDED:\n            // Handle call ending.\n            break\n        ...\n    }\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the Media object that was operated on."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.previous",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The call's properties before the operation changed it."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "params.previous.state",
                      "lineNumber": 10,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The previous state of the call."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    },
                    {
                      "title": "param",
                      "name": "params.previous.localHold",
                      "lineNumber": 14,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The previous local hold state. Present when the state change was a hold/unhold operation."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "boolean"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "params.previous.remoteHold",
                      "lineNumber": 15,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The previous remote hold state. Present when the state change was a hold/unhold operation."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "boolean"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "param",
                  "name": "params.transition",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Contains more detailed information about the state change."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "params.transition.statusCode",
                      "lineNumber": 12,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The status code associated with the particular state change's reason."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "number"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "params.transition.reasonText",
                      "lineNumber": 13,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The reason for the state change."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 16,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "An error object, if the operation was not successful."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "api.BasicError"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:stateChange",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:stateChange",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:stateChange"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "New media has been added to the call."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 3
            },
            {
              "title": "event",
              "description": "call:newMedia",
              "lineNumber": 4
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the call.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "Whether the new media is local or not.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "params.local"
            },
            {
              "title": "param",
              "description": "The list of new Tracks.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Array"
              },
              "name": "params.tracks"
            },
            {
              "title": "param",
              "description": "The ID of the Media object the Tracks belong to.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.mediaId"
            }
          ],
          "loc": {
            "start": {
              "line": 133,
              "column": 0
            },
            "end": {
              "line": 143,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 144,
                "column": 0
              },
              "end": {
                "line": 144,
                "column": 47
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 6,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.local",
                  "lineNumber": 7,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the new media is local or not."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  }
                },
                {
                  "title": "param",
                  "name": "params.tracks",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The list of new Tracks."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Array"
                  }
                },
                {
                  "title": "param",
                  "name": "params.mediaId",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the Media object the Tracks belong to."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:newMedia",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:newMedia",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:newMedia"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Media has been removed from the call."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 3
            },
            {
              "title": "event",
              "description": "call:removedMedia",
              "lineNumber": 4
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the call.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "Whether the removed Media was local or not.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "params.local"
            },
            {
              "title": "param",
              "description": "The list of removed Tracks.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Array"
              },
              "name": "params.tracks"
            }
          ],
          "loc": {
            "start": {
              "line": 146,
              "column": 0
            },
            "end": {
              "line": 155,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 156,
                "column": 0
              },
              "end": {
                "line": 156,
                "column": 53
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 6,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.local",
                  "lineNumber": 7,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the removed Media was local or not."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  }
                },
                {
                  "title": "param",
                  "name": "params.tracks",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The list of removed Tracks."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Array"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:removedMedia",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:removedMedia",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:removedMedia"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Tracks have been added to the Call after an SDK operation. Both sides of the Call\nare now able to render these tracks."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Tracks are added to a Call when either the local or remote user adds new media\nto the Call, using the "
                  },
                  {
                    "type": "link",
                    "url": "#calladdmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.addMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API for example, or when the\nCall is unheld with the "
                  },
                  {
                    "type": "link",
                    "url": "#callunhold",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.unhold"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Remote tracks are similarly added to a Call when new tracks are added by the\nremote user or either user unholds the call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event can indicate that multiple tracks have been removed by the same\noperation. For example, if the remote user added video to the call, this\nevent would indicate a single, remote video track was added. If the local\nuser unheld the call, this event would indicate that any tracks previously\non the call have been re-added, both local and remote."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Information about a Track can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "#mediagettrackbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.getTrackById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 18,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 19
            },
            {
              "title": "event",
              "description": "call:tracksAdded",
              "lineNumber": 20
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the Call the tracks were added to.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "List of track IDs that have been added to the Call.",
              "lineNumber": 23,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "params.trackIds"
            },
            {
              "title": "example",
              "description": "client.on('call:tracksAdded', function (params) {\n   // Get the information for each track.\n   const tracks = params.trackIds.map(client.media.getTrackById)\n   tracks.forEach(track => {\n     const { id, kind, isLocal } = track\n     // Handle the track depending whether it is audio vs. video and local vs. remote.\n     ...\n   })\n})",
              "lineNumber": 24
            }
          ],
          "loc": {
            "start": {
              "line": 158,
              "column": 0
            },
            "end": {
              "line": 192,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 193,
                "column": 0
              },
              "end": {
                "line": 193,
                "column": 51
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('call:tracksAdded', function (params) {\n   // Get the information for each track.\n   const tracks = params.trackIds.map(client.media.getTrackById)\n   tracks.forEach(track => {\n     const { id, kind, isLocal } = track\n     // Handle the track depending whether it is audio vs. video and local vs. remote.\n     ...\n   })\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the Call the tracks were added to."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.trackIds",
                  "lineNumber": 23,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of track IDs that have been added to the Call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:tracksAdded",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:tracksAdded",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:tracksAdded"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Tracks have been removed from the Call after an SDK operation. The tracks may still\nexist, but the media is not available to both sides of the Call any longer."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Tracks are removed from a Call when either the local or remote user stops the\ntracks, by using the "
                  },
                  {
                    "type": "link",
                    "url": "#callremovemedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.removeMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API for example, or when the\nCall is held with the "
                  },
                  {
                    "type": "link",
                    "url": "#callhold",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.hold"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event can indicate that multiple tracks have been removed by the same\noperation. For example, if the remote user removed video from the call, this\nevent would indicate a single, remote video track was removed. If the local\nuser held the call, this event would indicate that all tracks on the call\nhave been removed, both local and remote."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Information about a Track can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "#mediagettrackbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.getTrackById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 16
            },
            {
              "title": "event",
              "description": "call:tracksRemoved",
              "lineNumber": 17
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the Call the tracks were removed from.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "List of track IDs that have been removed from the Call.",
              "lineNumber": 20,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "params.trackIds"
            },
            {
              "title": "example",
              "description": "client.on('call:tracksRemoved', function (params) {\n   // Get the information for each track.\n   const tracks = params.trackIds.map(client.media.getTrackById)\n   tracks.forEach(track => {\n     const { id, kind, isLocal } = track\n     // Handle the track depending whether it is audio vs. video and local vs. remote.\n     ...\n   })\n})",
              "lineNumber": 21
            }
          ],
          "loc": {
            "start": {
              "line": 195,
              "column": 0
            },
            "end": {
              "line": 226,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 227,
                "column": 0
              },
              "end": {
                "line": 227,
                "column": 55
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('call:tracksRemoved', function (params) {\n   // Get the information for each track.\n   const tracks = params.trackIds.map(client.media.getTrackById)\n   tracks.forEach(track => {\n     const { id, kind, isLocal } = track\n     // Handle the track depending whether it is audio vs. video and local vs. remote.\n     ...\n   })\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the Call the tracks were removed from."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.trackIds",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of track IDs that have been removed from the Call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:tracksRemoved",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:tracksRemoved",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:tracksRemoved"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Stats have been retrieved for a Call or specific Track of a Call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "See the "
                  },
                  {
                    "type": "link",
                    "url": "#callgetstats",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getStats"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API for more information."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 6
            },
            {
              "title": "event",
              "description": "call:statsReceived",
              "lineNumber": 7
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the Call to retrieve stats for.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "The ID of the Track to retrieve stats for.",
              "lineNumber": 10,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "params.trackId"
            },
            {
              "title": "param",
              "description": "The RTCStatsReport.",
              "lineNumber": 11,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Map"
                }
              },
              "name": "params.result"
            },
            {
              "title": "param",
              "description": "An error object, if the operation was not successful.",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "api.BasicError"
                }
              },
              "name": "params.error"
            },
            {
              "title": "example",
              "description": "client.on('call:statsReceived', function (params) {\n   if (params.error) {\n     // Handle the error from the operation.\n     const { code, message } = params.error\n     ...\n   } else {\n     // Iterate over each individual statistic inside the RTCPStatsReport Map.\n     // Handle the data on its own or collate with previously gathered stats\n     //    for analysis.\n     params.result.forEach(stat => {\n       ...\n     })\n   }\n})",
              "lineNumber": 13
            }
          ],
          "loc": {
            "start": {
              "line": 229,
              "column": 0
            },
            "end": {
              "line": 257,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 258,
                "column": 0
              },
              "end": {
                "line": 258,
                "column": 50
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('call:statsReceived', function (params) {\n   if (params.error) {\n     // Handle the error from the operation.\n     const { code, message } = params.error\n     ...\n   } else {\n     // Iterate over each individual statistic inside the RTCPStatsReport Map.\n     // Handle the data on its own or collate with previously gathered stats\n     //    for analysis.\n     params.result.forEach(stat => {\n       ...\n     })\n   }\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the Call to retrieve stats for."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.trackId",
                  "lineNumber": 10,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the Track to retrieve stats for."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "params.result",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The RTCStatsReport."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Map"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 12,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "An error object, if the operation was not successful."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "api.BasicError"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:statsReceived",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:statsReceived",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:statsReceived"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A local Track has been replaced by the "
                  },
                  {
                    "type": "link",
                    "url": "#callreplacetrack",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.replaceTrack"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event is a combination of a track being removed from the Call and a new\ntrack being added to the Call. The previous Track's media is no longer\navailable, similar to the "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalltracksremoved",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:tracksRemoved"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent, and the new Track is available in its place, similar to the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalltracksadded",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:tracksAdded"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event. The event\nincludes information about the Track that was replaced to help an application\nreplace it seamlessly."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 11
            },
            {
              "title": "event",
              "description": "call:trackReplaced",
              "lineNumber": 12
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the call where a track was replaced.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "The ID of the new track that replaced the old track.",
              "lineNumber": 15,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "params.newTrackId"
            },
            {
              "title": "param",
              "description": "State of the replaced track.",
              "lineNumber": 16,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.TrackObject"
                }
              },
              "name": "params.oldTrack"
            },
            {
              "title": "param",
              "description": "An error object, if the operation was not successful.",
              "lineNumber": 17,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "api.BasicError"
                }
              },
              "name": "params.error"
            },
            {
              "title": "example",
              "description": "client.on('call:trackReplaced', function (params) {\n  const { callId, oldTrack, newTrackId } = params\n\n  // Unrender the removed track.\n  handleTrackGone(oldTrack, callId)\n\n  // Render the added track.\n  const track = client.media.getTrackById(newTrackId)\n  handleTrackAdded(track, callId)\n})",
              "lineNumber": 18
            }
          ],
          "loc": {
            "start": {
              "line": 260,
              "column": 0
            },
            "end": {
              "line": 289,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 290,
                "column": 0
              },
              "end": {
                "line": 290,
                "column": 55
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('call:trackReplaced', function (params) {\n  const { callId, oldTrack, newTrackId } = params\n\n  // Unrender the removed track.\n  handleTrackGone(oldTrack, callId)\n\n  // Render the added track.\n  const track = client.media.getTrackById(newTrackId)\n  handleTrackAdded(track, callId)\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 14,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the call where a track was replaced."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.newTrackId",
                  "lineNumber": 15,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the new track that replaced the old track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "params.oldTrack",
                  "lineNumber": 16,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "State of the replaced track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.TrackObject"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 17,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "An error object, if the operation was not successful."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "api.BasicError"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:trackReplaced",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:trackReplaced",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:trackReplaced"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Custom Parameters have been received for a Call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "These are parameters set by the remote endpoint of the Call. Please refer to\n"
                  },
                  {
                    "type": "link",
                    "url": "#callcustomparameter",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "CustomParameter"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " for more information."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 6
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 7,
              "name": "link_call"
            },
            {
              "title": "event",
              "description": "call:customParameters",
              "lineNumber": 8
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the Call in which custom parameters were received.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "The custom parameters received.",
              "lineNumber": 11,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.CustomParameter"
                  }
                ]
              },
              "name": "params.customParameters"
            }
          ],
          "loc": {
            "start": {
              "line": 292,
              "column": 0
            },
            "end": {
              "line": 304,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 305,
                "column": 0
              },
              "end": {
                "line": 305,
                "column": 56
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 10,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the Call in which custom parameters were received."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.customParameters",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The custom parameters received."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "call.CustomParameter"
                      }
                    ]
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:customParameters",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:customParameters",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:customParameters"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The list of available and supported codecs by the browser have been retrieved."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event is emitted as a result of the "
                  },
                  {
                    "type": "link",
                    "url": "#callgetavailablecodecs",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getAvailableCodecs"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API. Please refer to the API for more\ninformation."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 6
            },
            {
              "title": "event",
              "description": "call:availableCodecs",
              "lineNumber": 7
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The kind of media the codecs are for.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.kind"
            },
            {
              "title": "param",
              "description": "The list of codecs.",
              "lineNumber": 10,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                ]
              },
              "name": "params.codecs"
            },
            {
              "title": "example",
              "description": "client.on('call:availableCodecs', function (codecs) {\n   // Iterate over each codec.\n   codecs.forEach(codec => {\n       // Handle the data by analysing its properties.\n       // Some codec instances may have the same name, but different characteristics.\n       // (i.e. for a given audio codec, the number of suported channels may differ (e.g. mono versus stereo))\n       ...\n   })\n})",
              "lineNumber": 11
            }
          ],
          "loc": {
            "start": {
              "line": 307,
              "column": 0
            },
            "end": {
              "line": 328,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 329,
                "column": 0
              },
              "end": {
                "line": 329,
                "column": 54
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('call:availableCodecs', function (codecs) {\n   // Iterate over each codec.\n   codecs.forEach(codec => {\n       // Handle the data by analysing its properties.\n       // Some codec instances may have the same name, but different characteristics.\n       // (i.e. for a given audio codec, the number of suported channels may differ (e.g. mono versus stereo))\n       ...\n   })\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.kind",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The kind of media the codecs are for."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.codecs",
                  "lineNumber": 10,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The list of codecs."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "Object"
                      }
                    ]
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:availableCodecs",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:availableCodecs",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:availableCodecs"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Call's media connection state has been changed."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event is emitted as a result of changes to the media connection of the Call.\nThese state changes occur during call establishment, connection loss/re-establishment, call completion, etc."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "To check the media connection state of a call, retrieve the call's information using the  "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API,\nand check the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "mediaConnectionState"
                  },
                  {
                    "type": "text",
                    "value": " property of the call.\nSee "
                  },
                  {
                    "type": "link",
                    "url": "#callmediaconnectionstates",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.mediaConnectionStates"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " for the list of possible values and descriptions."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 9,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 10
            },
            {
              "title": "event",
              "description": "call:mediaConnectionChange",
              "lineNumber": 11
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the Call whose media connection state was changed.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "The call's media connection properties before the operation changed it.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.previous"
            },
            {
              "title": "param",
              "description": "The previous state of the media connection.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.previous.state"
            }
          ],
          "loc": {
            "start": {
              "line": 331,
              "column": 0
            },
            "end": {
              "line": 347,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 348,
                "column": 0
              },
              "end": {
                "line": 348,
                "column": 67
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the Call whose media connection state was changed."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.previous",
                  "lineNumber": 14,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The call's media connection properties before the operation changed it."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "params.previous.state",
                      "lineNumber": 15,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The previous state of the media connection."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    }
                  ]
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "event",
          "name": "call:mediaConnectionChange",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:mediaConnectionChange",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:mediaConnectionChange"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A media restart operation for a Call has been attempted."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event is emitted as a result of the "
                  },
                  {
                    "type": "link",
                    "url": "#callrestartmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.restartMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API being called.\nSee the description for "
                  },
                  {
                    "type": "link",
                    "url": "#callrestartmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.restartMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " for information about its\nusage."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallmediaconnectionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:mediaConnectionChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event\nwill also be emitted alongside this event when the media restart operation is\nsuccessful."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 12
            },
            {
              "title": "event",
              "description": "call:mediaRestart",
              "lineNumber": 13
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the Call that was acted on.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "An error object, if the operation was not successful.",
              "lineNumber": 16,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "api.BasicError"
                }
              },
              "name": "params.error"
            },
            {
              "title": "example",
              "description": "client.on('call:mediaRestart', function (params) {\n   if (params.error) {\n     // The operation failed. May want to determine whether to re-attempt the\n     //    operation (if the failure was simply a connectivity issue) or to\n     //    consider the call's media irrecoverable.\n     ...\n   } else {\n     // The call should be re-establishing media, with the call's\n     //    `mediaConnectionState` being updated.\n     const mediaState = client.call.getById(params.callId).mediaConnectionState\n     ...\n   }\n})",
              "lineNumber": 17
            }
          ],
          "loc": {
            "start": {
              "line": 350,
              "column": 0
            },
            "end": {
              "line": 381,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 382,
                "column": 0
              },
              "end": {
                "line": 382,
                "column": 48
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('call:mediaRestart', function (params) {\n   if (params.error) {\n     // The operation failed. May want to determine whether to re-attempt the\n     //    operation (if the failure was simply a connectivity issue) or to\n     //    consider the call's media irrecoverable.\n     ...\n   } else {\n     // The call should be re-establishing media, with the call's\n     //    `mediaConnectionState` being updated.\n     const mediaState = client.call.getById(params.callId).mediaConnectionState\n     ...\n   }\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 15,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the Call that was acted on."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 16,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "An error object, if the operation was not successful."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "api.BasicError"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "event",
          "name": "call:mediaRestart",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "call:mediaRestart",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "call.event:call:mediaRestart"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Starts an outgoing call to a "
                  },
                  {
                    "type": "link",
                    "url": "#callsip_uri",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "SIP_URI"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calltel_uri",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "TEL_URI"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The call will be tracked by a unique ID that is returned by the API. The\napplication will use this ID to identify and control the call after it\nhas been initiated."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to retrieve\nthe current information about the call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstart",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:start"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event\nlocally when the operation completes. When the remote participant\nreceives the call, a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallreceive",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:receive"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent will be emitted remotely for them."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK requires access to the machine's media devices (eg. microphone)\nin order to make a call. If it does not already have permissions to\nuse the devices, the user may be prompted by the browser to give\npermissions."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Detached media can be used when starting a call. Detached media is created\nlocally outside of a call and must be managed by the application. It can\nbe used when making a call by passing an array of detached track ids in\nthe media object. You can start a call with a mixture of detached\nand requested media, however, you can only use one of each type (audio, video,\nscreen). For example, you could include a detached track id for video, and set\nMediaConstraint.audio: true, but you can't set MediaConstraint.video: true\nif you have passed in a detached track id of kind video."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 33,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 34
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 35
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 36,
              "name": "link_call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 37,
              "name": "make"
            },
            {
              "title": "param",
              "description": "The desired destination.",
              "lineNumber": 38,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "call.SIP_URI"
                  },
                  {
                    "type": "NameExpression",
                    "name": "call.TEL_URI"
                  }
                ]
              },
              "name": "destination"
            },
            {
              "title": "param",
              "description": "The media options the call should be initialized with.",
              "lineNumber": 39,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "media"
            },
            {
              "title": "param",
              "description": "Whether the call should have audio on start. Currently, audio-less calls are not supported.",
              "lineNumber": 40,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.audio",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's audio.",
              "lineNumber": 41,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.AudioOptions"
                }
              },
              "name": "media.audioOptions"
            },
            {
              "title": "param",
              "description": "Whether the call should have video on start.",
              "lineNumber": 42,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.video",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's video.",
              "lineNumber": 43,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.VideoOptions"
                }
              },
              "name": "media.videoOptions"
            },
            {
              "title": "param",
              "description": "Whether the call should have screenshare on start. (Note: Screensharing is not supported on iOS Safari.)",
              "lineNumber": 44,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.screen",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's screenShare.",
              "lineNumber": 45,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.ScreenOptions"
                }
              },
              "name": "media.screenOptions"
            },
            {
              "title": "param",
              "description": "List of detached medias containing tracks to be attached to this call.",
              "lineNumber": 46,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "media.DetachedMedia"
                    }
                  ]
                }
              },
              "name": "media.medias"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 47,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "Options for configuring media's bandwidth.",
              "lineNumber": 48,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.BandwidthControls"
                }
              },
              "name": "options.bandwidth"
            },
            {
              "title": "param",
              "description": "Custom display name to be provided to the destination. Not supported in all environments and may use default display name.",
              "lineNumber": 49,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "options.displayName"
            },
            {
              "title": "param",
              "description": "Custom SIP header parameters for the SIP backend.",
              "lineNumber": 50,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.CustomParameter"
                    }
                  ]
                }
              },
              "name": "options.customParameters"
            },
            {
              "title": "param",
              "description": "Options for configuring DSCP markings on the media traffic",
              "lineNumber": 51,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.DSCPControls"
                }
              },
              "name": "options.dscpControls"
            },
            {
              "title": "returns",
              "description": "The generated ID of the newly created call.",
              "lineNumber": 52,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "example",
              "description": "// Listen for the event emitted after making a call.\nclient.on('call:start', function (params) {\n  const { callId, error } = params\n  if (error) {\n    // Call failed to initialize.\n  } else {\n    // Call was initialized, and the recipient user will be notified.\n  }\n})\n// Make an audio-only call.\nconst newCallId = client.call.make(destination, { audio: true })",
              "lineNumber": 53
            }
          ],
          "loc": {
            "start": {
              "line": 29,
              "column": 2
            },
            "end": {
              "line": 94,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 106,
                "column": 2
              },
              "end": {
                "line": 183,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/establish.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Listen for the event emitted after making a call.\nclient.on('call:start', function (params) {\n  const { callId, error } = params\n  if (error) {\n    // Call failed to initialize.\n  } else {\n    // Call was initialized, and the recipient user will be notified.\n  }\n})\n// Make an audio-only call.\nconst newCallId = client.call.make(destination, { audio: true })"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "destination",
              "lineNumber": 38,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The desired destination."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "call.SIP_URI"
                  },
                  {
                    "type": "NameExpression",
                    "name": "call.TEL_URI"
                  }
                ]
              }
            },
            {
              "title": "param",
              "name": "media",
              "lineNumber": 39,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The media options the call should be initialized with."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "media.audio",
                  "lineNumber": 40,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should have audio on start. Currently, audio-less calls are not supported."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.audioOptions",
                  "lineNumber": 41,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's audio."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.AudioOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.video",
                  "lineNumber": 42,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should have video on start."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.videoOptions",
                  "lineNumber": 43,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's video."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.VideoOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.screen",
                  "lineNumber": 44,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should have screenshare on start. (Note: Screensharing is not supported on iOS Safari.)"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.screenOptions",
                  "lineNumber": 45,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's screenShare."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.ScreenOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.medias",
                  "lineNumber": 46,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of detached medias containing tracks to be attached to this call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "media.DetachedMedia"
                        }
                      ]
                    }
                  }
                }
              ]
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 47,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.bandwidth",
                  "lineNumber": 48,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring media's bandwidth."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.BandwidthControls"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.displayName",
                  "lineNumber": 49,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Custom display name to be provided to the destination. Not supported in all environments and may use default display name."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.customParameters",
                  "lineNumber": 50,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Custom SIP header parameters for the SIP backend."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "call.CustomParameter"
                        }
                      ]
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.dscpControls",
                  "lineNumber": 51,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring DSCP markings on the media traffic"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.DSCPControls"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The generated ID of the newly created call."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "make",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "make",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.make"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Starts an outgoing call to a "
                  },
                  {
                    "type": "link",
                    "url": "#callsip_uri",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "SIP_URI"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calltel_uri",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "TEL_URI"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callmake",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.make"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise. This API\nwill not emit events specifically about the operation's completion, but will emit events to indicate changes\nto call tracking."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstart",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:start"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event when the the call is available in state,\nwhere it will be in Initiating state. After that, a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent will be emitted when the call changes state, either to Initiated on success or Ended on failure.\nWhen the remote participant receives the call, a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallreceive",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:receive"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event will\nbe emitted for them."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The call will be tracked by a unique ID that is available on the "
                  },
                  {
                    "type": "link",
                    "url": "#callcallobject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "CallObject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " provided\nthrough the promise resolve, or through the "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstart",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:start"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event before the\npromise resolves. The "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to retrieve the current information about the\ncall."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK requires access to the machine's media devices (eg. microphone)\nin order to make a call. If it does not already have permissions to\nuse the devices, the user may be prompted by the browser to give\npermissions."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Detached media can be used when starting a call. Detached media is created\nlocally outside of a call and must be managed by the application. It can\nbe used when making a call by passing an array of detached track ids in\nthe media object. You can start a call with a mixture of detached\nand requested media, however, you can only use one of each type (audio, video,\nscreen). For example, you could include a detached track id for video, and set\nMediaConstraint.audio: true, but you can't set MediaConstraint.video: true\nif you have passed in a detached track id of kind video."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 33,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 34
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 35
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 36
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 37,
              "name": "link_call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 38,
              "name": "makeAsync"
            },
            {
              "title": "param",
              "description": "The desired destination.",
              "lineNumber": 39,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "call.SIP_URI"
                  },
                  {
                    "type": "NameExpression",
                    "name": "call.TEL_URI"
                  }
                ]
              },
              "name": "destination"
            },
            {
              "title": "param",
              "description": "The media options the call should be initialized with.",
              "lineNumber": 40,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "media"
            },
            {
              "title": "param",
              "description": "Whether the call should have audio on start. Currently, audio-less calls are not supported.",
              "lineNumber": 41,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.audio",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's audio.",
              "lineNumber": 42,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.AudioOptions"
                }
              },
              "name": "media.audioOptions"
            },
            {
              "title": "param",
              "description": "Whether the call should have video on start.",
              "lineNumber": 43,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.video",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's video.",
              "lineNumber": 44,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.VideoOptions"
                }
              },
              "name": "media.videoOptions"
            },
            {
              "title": "param",
              "description": "Whether the call should have screenshare on start. (Note: Screensharing is not supported on iOS Safari.)",
              "lineNumber": 45,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.screen",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's screenShare.",
              "lineNumber": 46,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.ScreenOptions"
                }
              },
              "name": "media.screenOptions"
            },
            {
              "title": "param",
              "description": "List of detached medias containing tracks to be attached to this call.",
              "lineNumber": 47,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "media.DetachedMedia"
                    }
                  ]
                }
              },
              "name": "media.medias"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 48,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "Options for configuring media's bandwidth.",
              "lineNumber": 49,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.BandwidthControls"
                }
              },
              "name": "options.bandwidth"
            },
            {
              "title": "param",
              "description": "Custom display name to be provided to the destination. Not supported in all environments and may use default display name.",
              "lineNumber": 50,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "options.displayName"
            },
            {
              "title": "param",
              "description": "Custom SIP header parameters for the SIP backend.",
              "lineNumber": 51,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.CustomParameter"
                    }
                  ]
                }
              },
              "name": "options.customParameters"
            },
            {
              "title": "param",
              "description": "Options for configuring DSCP markings on the media traffic",
              "lineNumber": 52,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.DSCPControls"
                }
              },
              "name": "options.dscpControls"
            },
            {
              "title": "return",
              "description": "A promise that resolves to the call object when call has been successfully initiated.",
              "lineNumber": 53,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.CallObject"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 54,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "// Make an audio-only call.\ntry {\n  const call = await client.call.makeAsync(destination, { audio: true })\n  // Call is Initiated, waiting for remote user to answer.\n} catch (error) {\n  // Handle error.\n  const { code, message } = error\n}",
              "lineNumber": 55
            }
          ],
          "loc": {
            "start": {
              "line": 185,
              "column": 2
            },
            "end": {
              "line": 249,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 250,
                "column": 2
              },
              "end": {
                "line": 316,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/establish.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Make an audio-only call.\ntry {\n  const call = await client.call.makeAsync(destination, { audio: true })\n  // Call is Initiated, waiting for remote user to answer.\n} catch (error) {\n  // Handle error.\n  const { code, message } = error\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "destination",
              "lineNumber": 39,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The desired destination."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "call.SIP_URI"
                  },
                  {
                    "type": "NameExpression",
                    "name": "call.TEL_URI"
                  }
                ]
              }
            },
            {
              "title": "param",
              "name": "media",
              "lineNumber": 40,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The media options the call should be initialized with."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "media.audio",
                  "lineNumber": 41,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should have audio on start. Currently, audio-less calls are not supported."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.audioOptions",
                  "lineNumber": 42,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's audio."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.AudioOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.video",
                  "lineNumber": 43,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should have video on start."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.videoOptions",
                  "lineNumber": 44,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's video."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.VideoOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.screen",
                  "lineNumber": 45,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should have screenshare on start. (Note: Screensharing is not supported on iOS Safari.)"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.screenOptions",
                  "lineNumber": 46,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's screenShare."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.ScreenOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.medias",
                  "lineNumber": 47,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of detached medias containing tracks to be attached to this call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "media.DetachedMedia"
                        }
                      ]
                    }
                  }
                }
              ]
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 48,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.bandwidth",
                  "lineNumber": 49,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring media's bandwidth."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.BandwidthControls"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.displayName",
                  "lineNumber": 50,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Custom display name to be provided to the destination. Not supported in all environments and may use default display name."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.customParameters",
                  "lineNumber": 51,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Custom SIP header parameters for the SIP backend."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "call.CustomParameter"
                        }
                      ]
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.dscpControls",
                  "lineNumber": 52,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring DSCP markings on the media traffic"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.DSCPControls"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves to the call object when call has been successfully initiated."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.CallObject"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "makeAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "makeAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.makeAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Answers an incoming call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call to answer must be in a ringing state with an incoming\ndirection. The call will become connected as a result of the operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent locally when the operation completes. This indicates that the\ncall has connected with the remote participant. The\n"
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to retrieve the latest call state\nafter the change. Further events will be emitted to indicate that the\ncall has received media from the remote participant. See the\n"
                  },
                  {
                    "type": "link",
                    "url": "call.event:call:newTrack",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:newTrack"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event for more\ninformation about this."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK requires access to the system's media devices (eg. microphone)\nin order to answer a call. If it does not already have permissions to\nuse the devices, the user may be prompted by the browser to give\npermissions."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 23,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 24
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 25
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 26,
              "name": "link_call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 27,
              "name": "answer"
            },
            {
              "title": "param",
              "description": "The ID of the call to answer.",
              "lineNumber": 28,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The media options the call should be initialized with.",
              "lineNumber": 29,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "media"
            },
            {
              "title": "param",
              "description": "Whether the call should create an audio track, on start. Currently, audio-less calls are not supported.",
              "lineNumber": 30,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.audio",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's audio.",
              "lineNumber": 31,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.AudioOptions"
                }
              },
              "name": "media.audioOptions"
            },
            {
              "title": "param",
              "description": "Whether the call should create a video track, on start.",
              "lineNumber": 32,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.video",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's video.",
              "lineNumber": 33,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.VideoOptions"
                }
              },
              "name": "media.videoOptions"
            },
            {
              "title": "param",
              "description": "Whether the call should create a screenshare track, on start. (Note: Screensharing is not supported on iOS Safari.)",
              "lineNumber": 34,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.screen",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's screenShare.",
              "lineNumber": 35,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.ScreenOptions"
                }
              },
              "name": "media.screenOptions"
            },
            {
              "title": "param",
              "description": "List of detached medias containing tracks that can also be used when answering the call.",
              "lineNumber": 36,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "media.DetachedMedia"
                    }
                  ]
                }
              },
              "name": "media.medias"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 37,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "Options for configuring media's bandwidth.",
              "lineNumber": 38,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.BandwidthControls"
                }
              },
              "name": "options.bandwidth"
            },
            {
              "title": "param",
              "description": "Custom SIP header parameters for the SIP backend.",
              "lineNumber": 39,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.CustomParameter"
                    }
                  ]
                }
              },
              "name": "options.customParameters"
            },
            {
              "title": "param",
              "description": "Options for configuring DSCP markings on the media traffic",
              "lineNumber": 40,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.DSCPControls"
                }
              },
              "name": "options.dscpControls"
            }
          ],
          "loc": {
            "start": {
              "line": 318,
              "column": 2
            },
            "end": {
              "line": 359,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 372,
                "column": 2
              },
              "end": {
                "line": 389,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/establish.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 28,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to answer."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "media",
              "lineNumber": 29,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The media options the call should be initialized with."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "media.audio",
                  "lineNumber": 30,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should create an audio track, on start. Currently, audio-less calls are not supported."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.audioOptions",
                  "lineNumber": 31,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's audio."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.AudioOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.video",
                  "lineNumber": 32,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should create a video track, on start."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.videoOptions",
                  "lineNumber": 33,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's video."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.VideoOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.screen",
                  "lineNumber": 34,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should create a screenshare track, on start. (Note: Screensharing is not supported on iOS Safari.)"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.screenOptions",
                  "lineNumber": 35,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's screenShare."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.ScreenOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.medias",
                  "lineNumber": 36,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of detached medias containing tracks that can also be used when answering the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "media.DetachedMedia"
                        }
                      ]
                    }
                  }
                }
              ]
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 37,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.bandwidth",
                  "lineNumber": 38,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring media's bandwidth."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.BandwidthControls"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.customParameters",
                  "lineNumber": 39,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Custom SIP header parameters for the SIP backend."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "call.CustomParameter"
                        }
                      ]
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.dscpControls",
                  "lineNumber": 40,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring DSCP markings on the media traffic"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.DSCPControls"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "answer",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "answer",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.answer"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Answers an incoming call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callanswer",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.answer"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise. This\nAPI will not emit events specifically about the operation's completion, but may emit an event if the\ncall's state changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call to answer must be in a ringing state with an incoming\ndirection. The call will become connected as a result of the operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent locally when the operation completes. This indicates that the\ncall has connected with the remote participant. The\n"
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to retrieve the latest call state\nafter the change. Further events will be emitted to indicate that the\ncall has received media from the remote participant. See the\n"
                  },
                  {
                    "type": "link",
                    "url": "call.event:call:newTrack",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:newTrack"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event for more\ninformation about this."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK requires access to the system's media devices (eg. microphone)\nin order to answer a call. If it does not already have permissions to\nuse the devices, the user may be prompted by the browser to give\npermissions."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 24,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 25
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 26
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 27
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 28,
              "name": "link_call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 29,
              "name": "answerAsync"
            },
            {
              "title": "param",
              "description": "The ID of the call to answer.",
              "lineNumber": 30,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The media options the call should be initialized with.",
              "lineNumber": 31,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "media"
            },
            {
              "title": "param",
              "description": "Whether the call should create an audio track, on start. Currently, audio-less calls are not supported.",
              "lineNumber": 32,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.audio",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's audio.",
              "lineNumber": 33,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.AudioOptions"
                }
              },
              "name": "media.audioOptions"
            },
            {
              "title": "param",
              "description": "Whether the call should create a video track, on start.",
              "lineNumber": 34,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.video",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's video.",
              "lineNumber": 35,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.VideoOptions"
                }
              },
              "name": "media.videoOptions"
            },
            {
              "title": "param",
              "description": "Whether the call should create a screenshare track, on start. (Note: Screensharing is not supported on iOS Safari.)",
              "lineNumber": 36,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.screen",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's screenShare.",
              "lineNumber": 37,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.ScreenOptions"
                }
              },
              "name": "media.screenOptions"
            },
            {
              "title": "param",
              "description": "List of detached medias containing tracks that can also be used when answering the call.",
              "lineNumber": 38,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "media.DetachedMedia"
                    }
                  ]
                }
              },
              "name": "media.medias"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 39,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "Options for configuring media's bandwidth.",
              "lineNumber": 40,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.BandwidthControls"
                }
              },
              "name": "options.bandwidth"
            },
            {
              "title": "param",
              "description": "Custom SIP header parameters for the SIP backend.",
              "lineNumber": 41,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.CustomParameter"
                    }
                  ]
                }
              },
              "name": "options.customParameters"
            },
            {
              "title": "param",
              "description": "Options for configuring DSCP markings on the media traffic",
              "lineNumber": 42,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.DSCPControls"
                }
              },
              "name": "options.dscpControls"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 43,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 44,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n    await client.call.answerAsync(callId, { audio: true })\n    // Call answered successfully.\n    // client.call.getById(callId).state === 'Connected'\n} catch (error) {\n    // Failed to answer; call is unchanged.\n    const { code, message } = error\n    ...\n}",
              "lineNumber": 45
            }
          ],
          "loc": {
            "start": {
              "line": 391,
              "column": 2
            },
            "end": {
              "line": 446,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 461,
                "column": 2
              },
              "end": {
                "line": 489,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/establish.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n    await client.call.answerAsync(callId, { audio: true })\n    // Call answered successfully.\n    // client.call.getById(callId).state === 'Connected'\n} catch (error) {\n    // Failed to answer; call is unchanged.\n    const { code, message } = error\n    ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 30,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to answer."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "media",
              "lineNumber": 31,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The media options the call should be initialized with."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "media.audio",
                  "lineNumber": 32,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should create an audio track, on start. Currently, audio-less calls are not supported."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.audioOptions",
                  "lineNumber": 33,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's audio."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.AudioOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.video",
                  "lineNumber": 34,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should create a video track, on start."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.videoOptions",
                  "lineNumber": 35,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's video."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.VideoOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.screen",
                  "lineNumber": 36,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should create a screenshare track, on start. (Note: Screensharing is not supported on iOS Safari.)"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.screenOptions",
                  "lineNumber": 37,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's screenShare."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.ScreenOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.medias",
                  "lineNumber": 38,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of detached medias containing tracks that can also be used when answering the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "media.DetachedMedia"
                        }
                      ]
                    }
                  }
                }
              ]
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 39,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.bandwidth",
                  "lineNumber": 40,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring media's bandwidth."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.BandwidthControls"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.customParameters",
                  "lineNumber": 41,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Custom SIP header parameters for the SIP backend."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "call.CustomParameter"
                        }
                      ]
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.dscpControls",
                  "lineNumber": 42,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring DSCP markings on the media traffic"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.DSCPControls"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "answerAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "answerAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.answerAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Rejects an incoming call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call to reject must be in a ringing or initiated state with an incoming\ndirection. The call will be ended as a result of the operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent locally when the operation completes. The remote participant\nwill be notified, through their own "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent, that the call was rejected."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 13,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 15
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 16,
              "name": "call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 17,
              "name": "reject"
            },
            {
              "title": "param",
              "description": "The ID of the call to reject.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            }
          ],
          "loc": {
            "start": {
              "line": 491,
              "column": 2
            },
            "end": {
              "line": 510,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 511,
                "column": 2
              },
              "end": {
                "line": 529,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/establish.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to reject."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "reject",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "reject",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.reject"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Rejects an incoming call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callreject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.reject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise. This\nAPI will not emit events specifically about the operation's completion, but may emit an event if the\ncall's state changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call to reject must be in a Ringing or Initiated state with an incoming\ndirection. The call will be Ended as a result of the operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This operation changes the state of the call on success, and so will emit a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event locally when the operation\ncompletes. The remote participant will be notified, through their own\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event, that the call was rejected."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 14,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 15
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 17
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 18,
              "name": "call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 19,
              "name": "rejectAsync"
            },
            {
              "title": "param",
              "description": "The ID of the call to reject.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 21,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n    await client.call.rejectAsync(callId)\n    // Call rejected successfully.\n    // client.call.getById(callId).state === 'Ended'\n} catch (error) {\n    // Failed to reject; call is unchanged.\n    const { code, message } = error\n    ...\n}",
              "lineNumber": 23
            }
          ],
          "loc": {
            "start": {
              "line": 531,
              "column": 2
            },
            "end": {
              "line": 564,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 565,
                "column": 2
              },
              "end": {
                "line": 599,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/establish.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n    await client.call.rejectAsync(callId)\n    // Call rejected successfully.\n    // client.call.getById(callId).state === 'Ended'\n} catch (error) {\n    // Failed to reject; call is unchanged.\n    const { code, message } = error\n    ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to reject."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "rejectAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "rejectAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.rejectAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Ignores an incoming call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call to ignore must be an incoming call in Ringing state. The call will be Ended as a result\nof the operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent locally when the operation completes. The remote participant\nwill not be notified that the call was ignored."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 12,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 13
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 14
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 15,
              "name": "call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 16,
              "name": "ignore"
            },
            {
              "title": "param",
              "description": "The ID of the call to ignore.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            }
          ],
          "loc": {
            "start": {
              "line": 601,
              "column": 2
            },
            "end": {
              "line": 619,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 620,
                "column": 2
              },
              "end": {
                "line": 638,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/establish.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to ignore."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "ignore",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "ignore",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.ignore"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Ignores an incoming call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callignore",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.ignore"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise. This\nAPI will not emit events specifically about the operation's completion, but may emit an event if the\ncall's state changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call to ignore must be an incoming call in Ringing state. The call will be Ended as a result\nof the operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This operation changes the state of the call on success, and so will emit a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event locally when the operation\ncompletes. The remote participant will not be notified that the call was ignored."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 13,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 15
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 16
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 17,
              "name": "call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 18,
              "name": "ignoreAsync"
            },
            {
              "title": "param",
              "description": "The ID of the call to ignore.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 20,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n    await client.call.ignoreAsync(callId)\n    // Call ignored successfully.\n    // client.call.getById(callId).state === 'Ended'\n} catch (error) {\n    // Failed to ignore; call is unchanged.\n    const { code, message } = error\n    ...\n}",
              "lineNumber": 22
            }
          ],
          "loc": {
            "start": {
              "line": 640,
              "column": 2
            },
            "end": {
              "line": 672,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 673,
                "column": 2
              },
              "end": {
                "line": 706,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/establish.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n    await client.call.ignoreAsync(callId)\n    // Call ignored successfully.\n    // client.call.getById(callId).state === 'Ended'\n} catch (error) {\n    // Failed to ignore; call is unchanged.\n    const { code, message } = error\n    ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to ignore."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "ignoreAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "ignoreAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.ignoreAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Forwards an incoming call to another user."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified destination will receive the Call instead of the current\nuser."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent after the operation completes."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 12,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 13
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 14
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 15,
              "name": "link_call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 16,
              "name": "forward"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The destination to forward the call to.",
              "lineNumber": 18,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "call.SIP_URI"
                  },
                  {
                    "type": "NameExpression",
                    "name": "call.TEL_URI"
                  }
                ]
              },
              "name": "destination"
            }
          ],
          "loc": {
            "start": {
              "line": 708,
              "column": 2
            },
            "end": {
              "line": 727,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 728,
                "column": 2
              },
              "end": {
                "line": 746,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/establish.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "destination",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The destination to forward the call to."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "call.SIP_URI"
                  },
                  {
                    "type": "NameExpression",
                    "name": "call.TEL_URI"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "forward",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "forward",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.forward"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Forwards an incoming call to another user."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callforward",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.forward"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise. This\nAPI will not emit events specifically about the operation's completion, but may emit an event if the\ncall's state changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified destination will receive the Call instead of the current user."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This operation changes the state of the call on success, and so will emit a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event locally when the operation\ncompletes."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 13,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 15
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 16
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 17,
              "name": "link_call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 18,
              "name": "forwardAsync"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The destination to forward the call to.",
              "lineNumber": 20,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "call.SIP_URI"
                  },
                  {
                    "type": "NameExpression",
                    "name": "call.TEL_URI"
                  }
                ]
              },
              "name": "destination"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 21,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n    await client.call.forwardAsync(callId, destination)\n    // Call forwarded successfully.\n    // client.call.getById(callId).state === 'Ended'\n} catch (error) {\n    // Failed to forward; call is unchanged.\n    const { code, message } = error\n    ...\n}",
              "lineNumber": 23
            }
          ],
          "loc": {
            "start": {
              "line": 748,
              "column": 2
            },
            "end": {
              "line": 781,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 782,
                "column": 2
              },
              "end": {
                "line": 818,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/establish.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n    await client.call.forwardAsync(callId, destination)\n    // Call forwarded successfully.\n    // client.call.getById(callId).state === 'Ended'\n} catch (error) {\n    // Failed to forward; call is unchanged.\n    const { code, message } = error\n    ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "destination",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The destination to forward the call to."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "call.SIP_URI"
                  },
                  {
                    "type": "NameExpression",
                    "name": "call.TEL_URI"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "forwardAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "forwardAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.forwardAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Ends an ongoing call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will stop all local media associated with the call. Events\nwill be emitted to indicate which media tracks were stopped. See the\n"
                  },
                  {
                    "type": "link",
                    "url": "call.event:call:trackEnded",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:trackEnded"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event for more\ninformation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent locally when the operation completes. The remote participant\nwill be notified, through their own\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event, that the\ncall was ended."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 16,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 18
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 20,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 21,
              "name": "end"
            },
            {
              "title": "param",
              "description": "The ID of the call to end.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            }
          ],
          "loc": {
            "start": {
              "line": 820,
              "column": 2
            },
            "end": {
              "line": 843,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 844,
                "column": 2
              },
              "end": {
                "line": 870,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/establish.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to end."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "end",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "end",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.end"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Ends an ongoing call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callend",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.end"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise. This\nAPI will not emit events specifically about the operation's completion, but may emit an event if the\ncall's state changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will stop all local media associated with the call. Events will be emitted to indicate which media\ntracks were stopped. See the "
                  },
                  {
                    "type": "link",
                    "url": "call.event:call:trackEnded",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:trackEnded"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event for more information."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event locally when the call is Ended.\nThe remote participant will be notified, through their own\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event, that the call was ended."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 13,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 15
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 16
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 17,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 18,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 19,
              "name": "endAsync"
            },
            {
              "title": "param",
              "description": "The ID of the call to end.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "return",
              "description": "Promise that resolves when the operation completes.",
              "lineNumber": 21,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n    await client.call.endAsync(callId)\n    // Call ended successfully.\n    // client.call.getById(callId).state === 'Ended'\n} catch (error) {\n    // Failed to end; call is unchanged.\n    const { code, message } = error\n    ...\n}",
              "lineNumber": 23
            }
          ],
          "loc": {
            "start": {
              "line": 872,
              "column": 2
            },
            "end": {
              "line": 905,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 906,
                "column": 2
              },
              "end": {
                "line": 940,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/establish.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n    await client.call.endAsync(callId)\n    // Call ended successfully.\n    // client.call.getById(callId).state === 'Ended'\n} catch (error) {\n    // Failed to end; call is unchanged.\n    const { code, message } = error\n    ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to end."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Promise that resolves when the operation completes."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "endAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "endAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.endAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Puts a call on hold."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call to hold must not already be locally held. Any/all\nmedia received from the remote participant will stop being received,\nand any/all media being sent to the remote participant will stop\nbeing sent."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Some call operations cannot be performed while the call is on hold. The\ncall can be taken off hold with the "
                  },
                  {
                    "type": "link",
                    "url": "#callunhold",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.unhold"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent locally when the operation completes. The remote participant\nwill be notified of the operation through a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event as well."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 18,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 19
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 20
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 21,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 22,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 23,
              "name": "hold"
            },
            {
              "title": "param",
              "description": "The ID of the call to hold.",
              "lineNumber": 24,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            }
          ],
          "loc": {
            "start": {
              "line": 25,
              "column": 2
            },
            "end": {
              "line": 50,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 51,
                "column": 2
              },
              "end": {
                "line": 69,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 24,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to hold."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "hold",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "hold",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.hold"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Puts a call on hold."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callhold",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.hold"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise. This API\nwill not emit events specifically about the operation's completion, but may emit events if the call's state\nchanges and when tracks are removed from the call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call to hold must not already be locally held. Any/all media received from the remote\nparticipant will stop being received, and any/all media being sent to the remote participant will\nstop being sent."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Some call operations cannot be performed while the call is on hold. The call can be taken off hold with\nthe "
                  },
                  {
                    "type": "link",
                    "url": "#callunhold",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.unhold"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event locally if the operation\nsuccessfully places the call on hold. A "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalltracksremoved",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:tracksRemoved"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent will also be emitted to indicate the tracks that were removed from the call. The remote\nparticipant will receive equivalent events."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 18,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 19
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 20
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 21
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 22,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 23,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 24,
              "name": "holdAsync"
            },
            {
              "title": "param",
              "description": "The ID of the call to hold.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 26,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 27,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n    await client.call.holdAsync(callId)\n    // Operation succeeded.\n    // client.call.getById(callId).state === 'On Hold'\n} catch (error) {\n    // Operation failed.\n    const { message, code } = error\n}",
              "lineNumber": 28
            }
          ],
          "loc": {
            "start": {
              "line": 71,
              "column": 2
            },
            "end": {
              "line": 108,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 109,
                "column": 2
              },
              "end": {
                "line": 140,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n    await client.call.holdAsync(callId)\n    // Operation succeeded.\n    // client.call.getById(callId).state === 'On Hold'\n} catch (error) {\n    // Operation failed.\n    const { message, code } = error\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to hold."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "holdAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "holdAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.holdAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Takes a call off hold."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call to unhold must be locally held. If the call is not\nalso remotely held, call media will be reconnected as it was before\nthe call was held."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent locally when the operation completes. The remote participant\nwill be notified of the operation through a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event as well."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 14,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 15
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 16
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 17,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 18,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 19,
              "name": "unhold"
            },
            {
              "title": "param",
              "description": "The ID of the call to unhold.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            }
          ],
          "loc": {
            "start": {
              "line": 142,
              "column": 2
            },
            "end": {
              "line": 163,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 164,
                "column": 2
              },
              "end": {
                "line": 183,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to unhold."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "unhold",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "unhold",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.unhold"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Takes a call off hold."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callunhold",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.unhold"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise. This API\nwill not emit events specifically about the operation's completion, but may emit events if the call's state\nchanges and when tracks are added to the call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call to unhold must be locally held. If the call is not\nalso remotely held, call media will be reconnected as it was before\nthe call was held."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event locally if the operation\nsuccessfully unholds the call. A "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalltracksadded",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:tracksAdded"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent will also be emitted to indicate the tracks that were added to the call. The remote\nparticipant will receive equivalent events."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 18
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 20,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 21,
              "name": "unholdAsync"
            },
            {
              "title": "param",
              "description": "The ID of the call to unhold.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 23,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 24,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n    await client.call.unholdAsync(callId)\n    // Operation succeeded.\n    // client.call.getById(callId).state === 'Connected'\n} catch (error) {\n    // Operation failed.\n    const { message, code } = error\n}",
              "lineNumber": 25
            }
          ],
          "loc": {
            "start": {
              "line": 185,
              "column": 2
            },
            "end": {
              "line": 219,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 220,
                "column": 2
              },
              "end": {
                "line": 258,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n    await client.call.unholdAsync(callId)\n    // Operation succeeded.\n    // client.call.getById(callId).state === 'Connected'\n} catch (error) {\n    // Operation failed.\n    const { message, code } = error\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to unhold."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "unholdAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "unholdAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.unholdAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Add new media tracks to an ongoing call.\nWill get new media tracks from the specific sources to add to the call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "call.event:call:newTrack",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:newTrack"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event\nboth for the local and remote users to indicate a track has been\nadded to the Call."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 11,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 12
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 13
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 14,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 15,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "The ID of the call to add media to.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The media options to add to the call.",
              "lineNumber": 17,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "media",
              "default": "{}"
            },
            {
              "title": "param",
              "description": "Whether to add audio to the call.",
              "lineNumber": 18,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.audio",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Whether to add video to the call.",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.video",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Whether to add the screenshare to the call. (Note: Screensharing is not supported on iOS Safari.)",
              "lineNumber": 20,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.screen",
              "default": "false"
            },
            {
              "title": "param",
              "description": "List of detached medias containing tracks to be attached to this call.",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "media.DetachedMedia"
                    }
                  ]
                }
              },
              "name": "media.medias"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's audio.",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.AudioOptions"
                }
              },
              "name": "media.audioOptions"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's video.",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.VideoOptions"
                }
              },
              "name": "media.videoOptions"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's screenShare.",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.ScreenOptions"
                }
              },
              "name": "media.screenOptions"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "Options for configuring media's bandwidth.",
              "lineNumber": 26,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.BandwidthControls"
                }
              },
              "name": "options.bandwidth"
            },
            {
              "title": "param",
              "description": "Options for configuring DSCP markings on the media traffic",
              "lineNumber": 27,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.DSCPControls"
                }
              },
              "name": "options.dscpControls"
            }
          ],
          "loc": {
            "start": {
              "line": 260,
              "column": 2
            },
            "end": {
              "line": 288,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 289,
                "column": 2
              },
              "end": {
                "line": 322,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to add media to."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "media",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The media options to add to the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "default": "{}",
              "properties": [
                {
                  "title": "param",
                  "name": "media.audio",
                  "lineNumber": 18,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to add audio to the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.video",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to add video to the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.screen",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to add the screenshare to the call. (Note: Screensharing is not supported on iOS Safari.)"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.medias",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of detached medias containing tracks to be attached to this call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "media.DetachedMedia"
                        }
                      ]
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.audioOptions",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's audio."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.AudioOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.videoOptions",
                  "lineNumber": 23,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's video."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.VideoOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.screenOptions",
                  "lineNumber": 24,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's screenShare."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.ScreenOptions"
                    }
                  }
                }
              ]
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.bandwidth",
                  "lineNumber": 26,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring media's bandwidth."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.BandwidthControls"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.dscpControls",
                  "lineNumber": 27,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring DSCP markings on the media traffic"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.DSCPControls"
                    }
                  }
                }
              ],
              "default": "{}"
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "name": "addMedia",
          "kind": "function",
          "async": true,
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "addMedia",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.addMedia"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Add new media tracks to an ongoing call.\nWill get new media tracks from the specific sources to add to the call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#calladdmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.addMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise. This API\nwill not emit events specifically about the operation's completion, but may emit events if the call's state\nchanges."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "call.event:call:newTrack",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:newTrack"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event\nboth for the local and remote users to indicate a track has been\nadded to the Call."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 12,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 13
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 15
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 16,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 17,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "The ID of the call to add media to.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The media options to add to the call.",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "media",
              "default": "{}"
            },
            {
              "title": "param",
              "description": "Whether to add audio to the call.",
              "lineNumber": 20,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.audio",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Whether to add video to the call.",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.video",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Whether to add the screenshare to the call. (Note: Screensharing is not supported on iOS Safari.)",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.screen",
              "default": "false"
            },
            {
              "title": "param",
              "description": "List of detached medias containing tracks to be attached to this call.",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "media.DetachedMedia"
                    }
                  ]
                }
              },
              "name": "media.medias"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's audio.",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.AudioOptions"
                }
              },
              "name": "media.audioOptions"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's video.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.VideoOptions"
                }
              },
              "name": "media.videoOptions"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's screenShare.",
              "lineNumber": 26,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.ScreenOptions"
                }
              },
              "name": "media.screenOptions"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 27,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "Options for configuring media's bandwidth.",
              "lineNumber": 28,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.BandwidthControls"
                }
              },
              "name": "options.bandwidth"
            },
            {
              "title": "param",
              "description": "Options for configuring DSCP markings on the media traffic",
              "lineNumber": 29,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.DSCPControls"
                }
              },
              "name": "options.dscpControls"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 30,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "RecordType",
                    "fields": [
                      {
                        "type": "FieldType",
                        "key": "tracks",
                        "value": {
                          "type": "NameExpression",
                          "name": "Array"
                        }
                      },
                      {
                        "type": "FieldType",
                        "key": "mediaId",
                        "value": {
                          "type": "NameExpression",
                          "name": "Array"
                        }
                      }
                    ]
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 31,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n  // Add video to a call.\n  const { tracks } = await client.call.addMediaAsync(callId, { video: true })\n} catch (error) {\n  // Failed to add media.\n  const { code, message } = error\n  ...\n}",
              "lineNumber": 32
            }
          ],
          "loc": {
            "start": {
              "line": 324,
              "column": 2
            },
            "end": {
              "line": 365,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 366,
                "column": 2
              },
              "end": {
                "line": 391,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n  // Add video to a call.\n  const { tracks } = await client.call.addMediaAsync(callId, { video: true })\n} catch (error) {\n  // Failed to add media.\n  const { code, message } = error\n  ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to add media to."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "media",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The media options to add to the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "default": "{}",
              "properties": [
                {
                  "title": "param",
                  "name": "media.audio",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to add audio to the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.video",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to add video to the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.screen",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to add the screenshare to the call. (Note: Screensharing is not supported on iOS Safari.)"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.medias",
                  "lineNumber": 23,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of detached medias containing tracks to be attached to this call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "media.DetachedMedia"
                        }
                      ]
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.audioOptions",
                  "lineNumber": 24,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's audio."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.AudioOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.videoOptions",
                  "lineNumber": 25,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's video."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.VideoOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.screenOptions",
                  "lineNumber": 26,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's screenShare."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.ScreenOptions"
                    }
                  }
                }
              ]
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 27,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.bandwidth",
                  "lineNumber": 28,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring media's bandwidth."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.BandwidthControls"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.dscpControls",
                  "lineNumber": 29,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring DSCP markings on the media traffic"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.DSCPControls"
                    }
                  }
                }
              ],
              "default": "{}"
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "RecordType",
                    "fields": [
                      {
                        "type": "FieldType",
                        "key": "tracks",
                        "value": {
                          "type": "NameExpression",
                          "name": "Array"
                        }
                      },
                      {
                        "type": "FieldType",
                        "key": "mediaId",
                        "value": {
                          "type": "NameExpression",
                          "name": "Array"
                        }
                      }
                    ]
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "name": "addMediaAsync",
          "kind": "function",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "addMediaAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.addMediaAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Remove tracks from an ongoing call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "call.event:call:trackEnded",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:trackEnded"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent for both the local and remote users to indicate that a track\nhas been removed."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 12
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 13,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 14,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "The ID of the call to remove media from.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "A list of track IDs to remove.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "Array"
              },
              "name": "tracks"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 17,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "Options for configuring media's bandwidth.",
              "lineNumber": 18,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.BandwidthControls"
                }
              },
              "name": "options.bandwidth"
            }
          ],
          "loc": {
            "start": {
              "line": 393,
              "column": 2
            },
            "end": {
              "line": 412,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 413,
                "column": 2
              },
              "end": {
                "line": 443,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to remove media from."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "tracks",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of track IDs to remove."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Array"
              }
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 17,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.bandwidth",
                  "lineNumber": 18,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring media's bandwidth."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.BandwidthControls"
                    }
                  }
                }
              ],
              "default": "{}"
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "name": "removeMedia",
          "kind": "function",
          "async": true,
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "removeMedia",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.removeMedia"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Remove tracks from an ongoing call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callremovemedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.removeMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise. This\nAPI will not emit events specifically about the operation's completion, but may emit an event if the call's\nstate changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "call.event:call:trackEnded",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:trackEnded"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event for both the local and remote users\nto indicate that a track has been removed."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 12
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 13,
              "name": "removeMediaAsync"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 14
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 15,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 16,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "The ID of the call to remove media from.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "A list of track IDs to remove.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "Array"
              },
              "name": "tracks"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "Options for configuring media's bandwidth.",
              "lineNumber": 20,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.BandwidthControls"
                }
              },
              "name": "options.bandwidth"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 21,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n  // Remove a specific track from a call.\n  await client.call.removeMediaAsync(callId, [trackId])\n} catch (error) {\n  // Handle error\n  const { code, message } = error\n  ...\n}",
              "lineNumber": 23
            }
          ],
          "loc": {
            "start": {
              "line": 445,
              "column": 2
            },
            "end": {
              "line": 477,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 478,
                "column": 2
              },
              "end": {
                "line": 496,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n  // Remove a specific track from a call.\n  await client.call.removeMediaAsync(callId, [trackId])\n} catch (error) {\n  // Handle error\n  const { code, message } = error\n  ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to remove media from."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "tracks",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of track IDs to remove."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Array"
              }
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.bandwidth",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring media's bandwidth."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.BandwidthControls"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "kind": "function",
          "name": "removeMediaAsync",
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "removeMediaAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.removeMediaAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Adds local video to an ongoing Call, to start sending to the remote\nparticipant."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Can only be used in a basic media scenario, where the Call does not\nalready have video. For more advanced scenarios, the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calladdmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.addMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalltracksadded",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:tracksAdded"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent both for the local and remote users to indicate a track has been\nadded to the Call."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 17,
              "name": "startVideo"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 18
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 20,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's video.",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.VideoOptions"
                }
              },
              "name": "videoOptions"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "Options for configuring media's bandwidth.",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.BandwidthControls"
                }
              },
              "name": "options.bandwidth"
            },
            {
              "title": "param",
              "description": "Options for configuring DSCP markings on the media traffic.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.DSCPControls"
                }
              },
              "name": "options.dscpControls"
            }
          ],
          "loc": {
            "start": {
              "line": 498,
              "column": 2
            },
            "end": {
              "line": 524,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 525,
                "column": 2
              },
              "end": {
                "line": 546,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "videoOptions",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Options for configuring the call's video."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.VideoOptions"
                }
              }
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.bandwidth",
                  "lineNumber": 24,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring media's bandwidth."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.BandwidthControls"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.dscpControls",
                  "lineNumber": 25,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring DSCP markings on the media traffic."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.DSCPControls"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "function",
          "name": "startVideo",
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "startVideo",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.startVideo"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Adds local video to an ongoing Call, to start sending to the remote participant."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callstartvideo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.startVideo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise. This\nAPI will not emit events specifically about the operation's completion, but may emit an event if the call's\nstate changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Can only be used in a basic media scenario, where the Call does not already have video. For more advanced\nscenarios, the "
                  },
                  {
                    "type": "link",
                    "url": "#calladdmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.addMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalltracksadded",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:tracksAdded"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event both for the local and\nremote users to indicate a track has been added to the Call."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 13,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 15
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 16,
              "name": "startVideoAsync"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 17
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 18,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's video.",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.VideoOptions"
                }
              },
              "name": "videoOptions"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "Options for configuring media's bandwidth.",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.BandwidthControls"
                }
              },
              "name": "options.bandwidth"
            },
            {
              "title": "param",
              "description": "Options for configuring DSCP markings on the media traffic.",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.DSCPControls"
                }
              },
              "name": "options.dscpControls"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 25,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "RecordType",
                    "fields": [
                      {
                        "type": "FieldType",
                        "key": "tracks",
                        "value": {
                          "type": "NameExpression",
                          "name": "Array"
                        }
                      },
                      {
                        "type": "FieldType",
                        "key": "mediaId",
                        "value": {
                          "type": "NameExpression",
                          "name": "Array"
                        }
                      }
                    ]
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 26,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n  // Add video to a call.\n  const { tracks } = await client.call.startVideoAsync(callId)\n} catch (error) {\n  // Failed to add video.\n  const { code, message } = error\n  ...\n}",
              "lineNumber": 27
            }
          ],
          "loc": {
            "start": {
              "line": 548,
              "column": 2
            },
            "end": {
              "line": 584,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 585,
                "column": 2
              },
              "end": {
                "line": 617,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n  // Add video to a call.\n  const { tracks } = await client.call.startVideoAsync(callId)\n} catch (error) {\n  // Failed to add video.\n  const { code, message } = error\n  ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "videoOptions",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Options for configuring the call's video."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.VideoOptions"
                }
              }
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.bandwidth",
                  "lineNumber": 23,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring media's bandwidth."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.BandwidthControls"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "options.dscpControls",
                  "lineNumber": 24,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring DSCP markings on the media traffic."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.DSCPControls"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "RecordType",
                    "fields": [
                      {
                        "type": "FieldType",
                        "key": "tracks",
                        "value": {
                          "type": "NameExpression",
                          "name": "Array"
                        }
                      },
                      {
                        "type": "FieldType",
                        "key": "mediaId",
                        "value": {
                          "type": "NameExpression",
                          "name": "Array"
                        }
                      }
                    ]
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "kind": "function",
          "name": "startVideoAsync",
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "startVideoAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.startVideoAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Removes local video from an ongoing Call, stopping it from being sent\nto the remote participant."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Can only be used in a basic media scenario, where the Call has only one\nvideo track. For more advanced scenarios, the\n"
                  },
                  {
                    "type": "link",
                    "url": "#callremovemedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.removeMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalltracksremoved",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:tracksRemoved"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent for both the local and remote users to indicate that a track\nhas been removed."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 17,
              "name": "stopVideo"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 18
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 20,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            }
          ],
          "loc": {
            "start": {
              "line": 619,
              "column": 2
            },
            "end": {
              "line": 641,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 642,
                "column": 2
              },
              "end": {
                "line": 658,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "function",
          "name": "stopVideo",
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "stopVideo",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.stopVideo"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Removes local video from an ongoing Call, stopping it from being sent to the remote participant."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callstopvideo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.stopVideo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise. This API\nwill not emit events specifically about the operation's completion, but may emit an event if the call's tracks\nare modified."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Can only be used in a basic media scenario, where the Call has only one video track. For more advanced scenarios,\nthe "
                  },
                  {
                    "type": "link",
                    "url": "#callremovemedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.removeMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalltracksremoved",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:tracksRemoved"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event for both the local and remote\nusers to indicate that a track has been removed."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 13,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 15
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 16,
              "name": "stopVideoAsync"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 17
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 18,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 21,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n  // Remove video from a call.\n  await client.call.stopVideoAsync(callId)\n} catch (error) {\n  // Failed to remove video.\n  const { code, message } = error\n  ...\n}",
              "lineNumber": 23
            }
          ],
          "loc": {
            "start": {
              "line": 660,
              "column": 2
            },
            "end": {
              "line": 692,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 693,
                "column": 2
              },
              "end": {
                "line": 708,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n  // Remove video from a call.\n  await client.call.stopVideoAsync(callId)\n} catch (error) {\n  // Failed to remove video.\n  const { code, message } = error\n  ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "kind": "function",
          "name": "stopVideoAsync",
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "stopVideoAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.stopVideoAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Replace a call's track with a new track of the same media type."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The operation will remove the old track from the call and add a\nnew track to the call. This effectively allows for changing the\ntrack constraints (eg. device used) for an ongoing call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Because it completely replaces an old track with a new one,\nthe old track's state characteristics are not carried over in the new track's state.\n(e.g. if an old track's state was 'muted' and replacement of this track has occured,\nthe new track's state will be 'unmuted', as this is its default state)"
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalltrackreplaced",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:trackReplaced"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event\nlocally when the operation completes. The newly added track will need\nto be handled by the local application. The track will be replaced\nseamlessly for the remote application, which will not receive an event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 20,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 21
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 22
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 23,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 24,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "The ID of the call to replace the track of.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The ID of the track to replace.",
              "lineNumber": 26,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "trackId"
            },
            {
              "title": "param",
              "description": "The media options.",
              "lineNumber": 27,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "media",
              "default": "{}"
            },
            {
              "title": "param",
              "description": "Whether to create an audio track.",
              "lineNumber": 28,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.audio",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the audio track.",
              "lineNumber": 29,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.AudioOptions"
                }
              },
              "name": "media.audioOptions"
            },
            {
              "title": "param",
              "description": "Whether to create a video track.",
              "lineNumber": 30,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.video",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the video track.",
              "lineNumber": 31,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.VideoOptions"
                }
              },
              "name": "media.videoOptions"
            },
            {
              "title": "param",
              "description": "Whether to create a screen share track.",
              "lineNumber": 32,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.screen",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's screenShare.",
              "lineNumber": 33,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.ScreenOptions"
                }
              },
              "name": "media.screenOptions"
            },
            {
              "title": "param",
              "description": "The detached media containing the track to be attached to this\n   call. Though this parameter is an array for consistency with other APIs, it should only contain one entry.",
              "lineNumber": 34,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "media.DetachedMedia"
                    }
                  ]
                }
              },
              "name": "media.medias"
            },
            {
              "title": "example",
              "description": "const callId = ...\n// Get the video track used by the call.\nconst videoTrack = ...\n\n// Replace the specified video track of the call with a new\n//    video track.\nclient.call.replaceTrack(callId, videoTrack.id, {\n  // The track should be replaced with a video track using\n  //    a specific device. This effectively changes the input\n  //    device for an ongoing call.\n  video: true,\n  videoOptions: {\n    deviceId: cameraId\n  }\n})",
              "lineNumber": 37
            },
            {
              "title": "example",
              "description": "const callId = ...\n// Get the video track used by the call.\nconst videoTrack = ...\n\n// Can also replace the specified video track of the call with a new\n// screen sharing track because screen sharing is delivered as a video stream to remote peer.\n// User will then be prompted to pick a specific screen to share and thus the device id will be selected.\nclient.call.replaceTrack(callId, videoTrack.id, {\n  // The track should be replaced with a screen sharing track.\n  // Note that 'screenOptions' property is not mandatory, as API will use default values\n  // for properties like: width, height, frameRate.\n  screen: true\n})",
              "lineNumber": 54
            }
          ],
          "loc": {
            "start": {
              "line": 710,
              "column": 2
            },
            "end": {
              "line": 778,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 779,
                "column": 2
              },
              "end": {
                "line": 808,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "const callId = ...\n// Get the video track used by the call.\nconst videoTrack = ...\n\n// Replace the specified video track of the call with a new\n//    video track.\nclient.call.replaceTrack(callId, videoTrack.id, {\n  // The track should be replaced with a video track using\n  //    a specific device. This effectively changes the input\n  //    device for an ongoing call.\n  video: true,\n  videoOptions: {\n    deviceId: cameraId\n  }\n})"
            },
            {
              "description": "const callId = ...\n// Get the video track used by the call.\nconst videoTrack = ...\n\n// Can also replace the specified video track of the call with a new\n// screen sharing track because screen sharing is delivered as a video stream to remote peer.\n// User will then be prompted to pick a specific screen to share and thus the device id will be selected.\nclient.call.replaceTrack(callId, videoTrack.id, {\n  // The track should be replaced with a screen sharing track.\n  // Note that 'screenOptions' property is not mandatory, as API will use default values\n  // for properties like: width, height, frameRate.\n  screen: true\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to replace the track of."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "trackId",
              "lineNumber": 26,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the track to replace."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "media",
              "lineNumber": 27,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The media options."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "default": "{}",
              "properties": [
                {
                  "title": "param",
                  "name": "media.audio",
                  "lineNumber": 28,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to create an audio track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.audioOptions",
                  "lineNumber": 29,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the audio track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.AudioOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.video",
                  "lineNumber": 30,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to create a video track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.videoOptions",
                  "lineNumber": 31,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the video track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.VideoOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.screen",
                  "lineNumber": 32,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to create a screen share track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.screenOptions",
                  "lineNumber": 33,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's screenShare."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.ScreenOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.medias",
                  "lineNumber": 34,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The detached media containing the track to be attached to this\ncall. Though this parameter is an array for consistency with other APIs, it should only contain one entry."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "media.DetachedMedia"
                        }
                      ]
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "name": "replaceTrack",
          "kind": "function",
          "async": true,
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "replaceTrack",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.replaceTrack"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Replace a call's track with a new track of the same media type."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callreplacetrack",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.replaceTrack"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The operation will remove the old track from the call and add a new track to the call. This effectively allows\nfor changing the track constraints (eg. device used) for an ongoing call. The track will be replaced seamlessly\nfor the remote application."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Because it completely replaces an old track with a new one, the old track's state characteristics are not carried\nover in the new track's state. (e.g. if an old track's state was 'muted' and replacement of this track has\noccured, the new track's state will be 'unmuted', as this is its default state)"
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 12,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 13
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 15
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 16,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 17,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 18,
              "name": "replaceTrackAsync"
            },
            {
              "title": "param",
              "description": "The ID of the call to replace the track of.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The ID of the track to replace.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "trackId"
            },
            {
              "title": "param",
              "description": "The media options.",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "media",
              "default": "{}"
            },
            {
              "title": "param",
              "description": "Whether to create an audio track.",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.audio",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the audio track.",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.AudioOptions"
                }
              },
              "name": "media.audioOptions"
            },
            {
              "title": "param",
              "description": "Whether to create a video track.",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.video",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the video track.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.VideoOptions"
                }
              },
              "name": "media.videoOptions"
            },
            {
              "title": "param",
              "description": "Whether to create a screen share track.",
              "lineNumber": 26,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.screen",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's screenShare.",
              "lineNumber": 27,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.ScreenOptions"
                }
              },
              "name": "media.screenOptions"
            },
            {
              "title": "param",
              "description": "The detached media containing the track to be attached to this\n   call. Though this parameter is an array for consistency with other APIs, it should only contain one entry.",
              "lineNumber": 28,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "media.DetachedMedia"
                    }
                  ]
                }
              },
              "name": "media.medias"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 30,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "RecordType",
                    "fields": [
                      {
                        "type": "FieldType",
                        "key": "newTrackId",
                        "value": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      },
                      {
                        "type": "FieldType",
                        "key": "oldTrack",
                        "value": {
                          "type": "NameExpression",
                          "name": "Object"
                        }
                      }
                    ]
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 31,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "// ID of the current audio track of the call.\nconst audioTrackId = ...\n\n// Replace the existing audio track of the call with a new audio track from a specific microphone.\ntry {\n const { newTrackId, oldTrack } = await client.call.replaceTrackAsync(callId, audioTrackId, {\n   audio: true,\n   audioOptions: { deviceId: microphoneId }\n })\n   // Operation succeeded.\n} catch (error) {\n  // Operation failed.\n  const { code, message } = error\n}",
              "lineNumber": 32
            }
          ],
          "loc": {
            "start": {
              "line": 810,
              "column": 2
            },
            "end": {
              "line": 857,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 858,
                "column": 2
              },
              "end": {
                "line": 872,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// ID of the current audio track of the call.\nconst audioTrackId = ...\n\n// Replace the existing audio track of the call with a new audio track from a specific microphone.\ntry {\n const { newTrackId, oldTrack } = await client.call.replaceTrackAsync(callId, audioTrackId, {\n   audio: true,\n   audioOptions: { deviceId: microphoneId }\n })\n   // Operation succeeded.\n} catch (error) {\n  // Operation failed.\n  const { code, message } = error\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to replace the track of."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "trackId",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the track to replace."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "media",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The media options."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "default": "{}",
              "properties": [
                {
                  "title": "param",
                  "name": "media.audio",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to create an audio track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.audioOptions",
                  "lineNumber": 23,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the audio track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.AudioOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.video",
                  "lineNumber": 24,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to create a video track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.videoOptions",
                  "lineNumber": 25,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the video track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.VideoOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.screen",
                  "lineNumber": 26,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to create a screen share track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "media.screenOptions",
                  "lineNumber": 27,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's screenShare."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.ScreenOptions"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "media.medias",
                  "lineNumber": 28,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The detached media containing the track to be attached to this\ncall. Though this parameter is an array for consistency with other APIs, it should only contain one entry."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "media.DetachedMedia"
                        }
                      ]
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "RecordType",
                    "fields": [
                      {
                        "type": "FieldType",
                        "key": "newTrackId",
                        "value": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      },
                      {
                        "type": "FieldType",
                        "key": "oldTrack",
                        "value": {
                          "type": "NameExpression",
                          "name": "Object"
                        }
                      }
                    ]
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "replaceTrackAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "replaceTrackAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.replaceTrackAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Attempt to re-establish a media connection for a call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will perform a \"refresh\" operation on the call with the intention\nof resolving media issues that may have been encountered. This API is only\nnecessary after the Call's "
                  },
                  {
                    "type": "link",
                    "url": "#callmediaconnectionstates",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "mediaConnectionState"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nhas entered the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "failed"
                  },
                  {
                    "type": "text",
                    "value": " state, but may be used in other scenarios."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "After the operation completes successfully, the Call will be re-establishing\nits media connection. By this time, or shortly after, the Call's\n"
                  },
                  {
                    "type": "link",
                    "url": "#callmediaconnectionstates",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "mediaConnectionState"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " should have\ntransitioned to "
                  },
                  {
                    "type": "inlineCode",
                    "value": "checking"
                  },
                  {
                    "type": "text",
                    "value": " (via a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallmediaconnectionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:mediaConnectionChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent) to signify the re-establishment. It will then transition to either\n"
                  },
                  {
                    "type": "inlineCode",
                    "value": "connected"
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "inlineCode",
                    "value": "failed"
                  },
                  {
                    "type": "text",
                    "value": " state, similar to during the initial Call establishment."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If this operation fails, then the Call will not attempt the re-establishment\nand will remain in the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "failed"
                  },
                  {
                    "type": "text",
                    "value": " "
                  },
                  {
                    "type": "link",
                    "url": "#callmediaconnectionstates",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "mediaConnectionState"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Behaviour during the operation may differ slightly based on the browser.\nNotably, Firefox will always transition to the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "checking"
                  },
                  {
                    "type": "text",
                    "value": "\n"
                  },
                  {
                    "type": "link",
                    "url": "#callmediaconnectionstates",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "mediaConnectionState"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " no matter what\nthe previous state was. Whereas Chrome will skip the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "checking"
                  },
                  {
                    "type": "text",
                    "value": " state,\ntransitioning directly to either "
                  },
                  {
                    "type": "inlineCode",
                    "value": "connected"
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "inlineCode",
                    "value": "failed"
                  },
                  {
                    "type": "text",
                    "value": ". This has the\nimplication for Chrome that if the state does not change (for example,\nthe Call is in the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "failed"
                  },
                  {
                    "type": "text",
                    "value": " state before the media restart operation,\nand media re-establishment fails), then there will be no\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallmediaconnectionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:mediaConnectionChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent emitted. For this reason, Chrome-based applications may need a\nshort delay after receiving the "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallmediarestart",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:mediaRestart"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent before checking the Call's updated\n"
                  },
                  {
                    "type": "link",
                    "url": "#callmediaconnectionstates",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "mediaConnectionState"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " to ensure the\napplication is acting on the \"latest\" state."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallmediarestart",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:mediaRestart"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent when the operation completes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 39,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 40
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 41
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 42,
              "name": "restartMedia"
            },
            {
              "title": "param",
              "description": "The ID of the call to act on.",
              "lineNumber": 43,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            }
          ],
          "loc": {
            "start": {
              "line": 874,
              "column": 2
            },
            "end": {
              "line": 918,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 919,
                "column": 2
              },
              "end": {
                "line": 934,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 43,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to act on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "restartMedia",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "restartMedia",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.restartMedia"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Attempt to re-establish a media connection for a call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callrestartmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.restartMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise instead\nof emitting events."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will perform a \"refresh\" operation on the call with the intention\nof resolving media issues that may have been encountered. This API is only\nnecessary after the Call's "
                  },
                  {
                    "type": "link",
                    "url": "#callmediaconnectionstates",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "mediaConnectionState"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nhas entered the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "failed"
                  },
                  {
                    "type": "text",
                    "value": " state, but may be used in other scenarios."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If this operation fails, then the Call will not attempt the re-establishment\nand will remain in the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "failed"
                  },
                  {
                    "type": "text",
                    "value": " "
                  },
                  {
                    "type": "link",
                    "url": "#callmediaconnectionstates",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "mediaConnectionState"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Behaviour during the operation may differ slightly based on the browser.\nNotably, Firefox will always transition to the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "checking"
                  },
                  {
                    "type": "text",
                    "value": "\n"
                  },
                  {
                    "type": "link",
                    "url": "#callmediaconnectionstates",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "mediaConnectionState"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " no matter what\nthe previous state was. Whereas Chrome will skip the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "checking"
                  },
                  {
                    "type": "text",
                    "value": " state,\ntransitioning directly to either "
                  },
                  {
                    "type": "inlineCode",
                    "value": "connected"
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "inlineCode",
                    "value": "failed"
                  },
                  {
                    "type": "text",
                    "value": ". This has the\nimplication for Chrome that if the state does not change (for example,\nthe Call is in the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "failed"
                  },
                  {
                    "type": "text",
                    "value": " state before the media restart operation,\nand media re-establishment fails), then there will be no\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallmediaconnectionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:mediaConnectionChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent emitted. For this reason, Chrome-based applications may need a\nshort delay after receiving the "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallmediarestart",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:mediaRestart"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent before checking the Call's updated\n"
                  },
                  {
                    "type": "link",
                    "url": "#callmediaconnectionstates",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "mediaConnectionState"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " to ensure the\napplication is acting on the \"latest\" state."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 29,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 30
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 31
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 32
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 33,
              "name": "call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 34,
              "name": "restartMediaAsync"
            },
            {
              "title": "param",
              "description": "The ID of the call whose media needs to be restarted.",
              "lineNumber": 35,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 36,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 37,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n   await client.call.restartMediaAsync(callId)\n   // Media was successfully re-synced.\n} catch (error) {\n   const { message, code } = error\n   // Operation failed.\n}",
              "lineNumber": 38
            }
          ],
          "loc": {
            "start": {
              "line": 936,
              "column": 2
            },
            "end": {
              "line": 982,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 983,
                "column": 2
              },
              "end": {
                "line": 1000,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n   await client.call.restartMediaAsync(callId)\n   // Media was successfully re-synced.\n} catch (error) {\n   const { message, code } = error\n   // Operation failed.\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 35,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call whose media needs to be restarted."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "restartMediaAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "restartMediaAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.restartMediaAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Plays an audio file to the remote side of the Call. This API will temporarily\nreplace the Call's local audio track with an audio file for the duration\nof the audio file."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The Call must be in "
                  },
                  {
                    "type": "inlineCode",
                    "value": "Connected"
                  },
                  {
                    "type": "text",
                    "value": " state and have a local audio track for this operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will not affect media other than the local audio track. Other media on\nthe Call, such as local video or remote audio, can be "
                  },
                  {
                    "type": "link",
                    "url": "#mediamutetracks",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "muted"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nor "
                  },
                  {
                    "type": "link",
                    "url": "#mediaremovetracks",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "unrendered"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " during this operation if desired."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This operation will use the browser's\n"
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement/Audio",
                    "children": [
                      {
                        "type": "text",
                        "value": "Audio constructor"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nto read in the audio file. The "
                  },
                  {
                    "type": "inlineCode",
                    "value": "filePath"
                  },
                  {
                    "type": "text",
                    "value": " parameter will be used directly with "
                  },
                  {
                    "type": "inlineCode",
                    "value": "Audio"
                  },
                  {
                    "type": "text",
                    "value": ", so\ncan be either a relative file path to your audio file or a URL pointing to a file."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API returns a promise that can be used to track the progress of the operation.\nThe promise will resolve after the operation completes or reject if an error is\nencountered. Additionally, an extra "
                  },
                  {
                    "type": "inlineCode",
                    "value": "onPlaying"
                  },
                  {
                    "type": "text",
                    "value": " callback is provided on the Promise\nto indicate when the audio file actually begins to play. See the code example below\nfor a sample."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " events locally\nas the operation progresses. The remote endpoint will not receive an event for\nthis operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If an error is encountered during the operation and the SDK is unable to replace\nthe original local audio track, then that track will be forcibly ended and an\n"
                  },
                  {
                    "type": "link",
                    "url": "#mediaeventmediatrackended",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media:trackEnded"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event will be emitted\nfor it. This will release the microphone and avoid losing access to the track\nwhile it is active, allowing the application to resolve the scenario by using\nthe "
                  },
                  {
                    "type": "link",
                    "url": "#callreplacetrack",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.replaceTrack"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API to revert the local audio track."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 33,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 34
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 35
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 36,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 37,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 38,
              "name": "playAudioFile"
            },
            {
              "title": "param",
              "description": "The ID of the Call to act on.",
              "lineNumber": 39,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The path to the audio file.",
              "lineNumber": 40,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "filePath"
            },
            {
              "title": "return",
              "description": "Promise that resolves when the operation is complete.",
              "lineNumber": 41,
              "type": {
                "type": "NameExpression",
                "name": "Promise"
              }
            },
            {
              "title": "example",
              "description": "// The API returns a promise which will provide feedback about the operation.\nclient.call.playAudioFile(callId, filePath)\n   .then(() => {\n     // Audio file has finished playing; call has reverted to previous audio.\n   })\n   .catch(err => {\n     // An error has occurred during the operation.\n   })\n\n// The returned promise can optionally provide feedback midway through the\n//   operation. A chainable `onPlaying` method denotes when the audio file has\n//   started to play and the Call's audio has been replaced.\nclient.call.playAudioFile(callId, filePath)\n   .onPlaying(({ duration }) => {\n     // Audio file has started playing; call audio is now the file.\n     // Note: Calling `onPlaying` must be done before `then` and `catch` for it\n     //    to be chainable.\n   })\n   .then(() => { ... })\n   .catch(err => { ... })",
              "lineNumber": 42
            }
          ],
          "loc": {
            "start": {
              "line": 1084,
              "column": 2
            },
            "end": {
              "line": 1147,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1148,
                "column": 2
              },
              "end": {
                "line": 1188,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/midcall.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// The API returns a promise which will provide feedback about the operation.\nclient.call.playAudioFile(callId, filePath)\n   .then(() => {\n     // Audio file has finished playing; call has reverted to previous audio.\n   })\n   .catch(err => {\n     // An error has occurred during the operation.\n   })\n\n// The returned promise can optionally provide feedback midway through the\n//   operation. A chainable `onPlaying` method denotes when the audio file has\n//   started to play and the Call's audio has been replaced.\nclient.call.playAudioFile(callId, filePath)\n   .onPlaying(({ duration }) => {\n     // Audio file has started playing; call audio is now the file.\n     // Note: Calling `onPlaying` must be done before `then` and `catch` for it\n     //    to be chainable.\n   })\n   .then(() => { ... })\n   .catch(err => { ... })"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 39,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the Call to act on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "filePath",
              "lineNumber": 40,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The path to the audio file."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Promise that resolves when the operation is complete."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Promise"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "playAudioFile",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "playAudioFile",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.playAudioFile"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Performs a \"direct\" transfer on a call (also known as an unannounced or\nblind transfer). This allows the current user to transfer the remote\nparticipant of a call to another user, similar to a \"forward\"\noperation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call must be locally held. After the operation, this call\nwill be ended, as indicated by a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The \"destination\" user will receive an incoming call, and when answered,\nthey will be connected with the remote participant of the specified\ncall."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progression of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event. The remote\nparticipant being transferred will receive it as if it were a \"remote\nunhold\" operation."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 18,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 19
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 20
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 21,
              "name": "link_call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 22,
              "name": "directTransfer"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The destination to transfer the call to.",
              "lineNumber": 24,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "call.SIP_URI"
                  },
                  {
                    "type": "NameExpression",
                    "name": "call.TEL_URI"
                  }
                ]
              },
              "name": "destination"
            }
          ],
          "loc": {
            "start": {
              "line": 24,
              "column": 2
            },
            "end": {
              "line": 49,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 50,
                "column": 2
              },
              "end": {
                "line": 67,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/complex.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 23,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "destination",
              "lineNumber": 24,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The destination to transfer the call to."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "call.SIP_URI"
                  },
                  {
                    "type": "NameExpression",
                    "name": "call.TEL_URI"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "directTransfer",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "directTransfer",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.directTransfer"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Performs a \"direct\" transfer on a call (also known as an unannounced or blind transfer). This allows the\ncurrent user to transfer the remote participant of a call to another user, similar to a \"forward\"\noperation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#calldirecttransfer",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.directTransfer"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise.\nThis API will only emit events that represent a change in state, and will resolve or reject the promise\nto provide feedback about the operation itself."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call must be locally held. After the transfer completes, this call will be ended, as indicated\nby a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The \"destination\" user will receive an incoming call, and when answered, they will be connected with\nthe remote participant of the specified call. The remote participant being transferred will receive\nit as if it were a \"remote unhold\" operation."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 18
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "link_call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 20,
              "name": "directTransferAsync"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The destination to transfer the call to.",
              "lineNumber": 22,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "call.SIP_URI"
                  },
                  {
                    "type": "NameExpression",
                    "name": "call.TEL_URI"
                  }
                ]
              },
              "name": "destination"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 23,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 24,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n   await client.call.directTransferAsync(callId, destination)\n   // Operation success; call is now Ended.\n} catch (error) {\n   const { code, message } = error\n   // Operation failed; call is still On Hold.\n}",
              "lineNumber": 25
            }
          ],
          "loc": {
            "start": {
              "line": 69,
              "column": 2
            },
            "end": {
              "line": 102,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 103,
                "column": 2
              },
              "end": {
                "line": 123,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/complex.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n   await client.call.directTransferAsync(callId, destination)\n   // Operation success; call is now Ended.\n} catch (error) {\n   const { code, message } = error\n   // Operation failed; call is still On Hold.\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "destination",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The destination to transfer the call to."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "call.SIP_URI"
                  },
                  {
                    "type": "NameExpression",
                    "name": "call.TEL_URI"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "directTransferAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "directTransferAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.directTransferAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Performs a \"consultative\" transfer between two ongoing calls (also known\nas an announced or warm transfer). This allows the current user to\ntransfer the remote participant of a call to another user, after\nhaving spoken to both users."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Both calls used for the transfer must be locally held. After the\noperation, these calls will be ended, as indicated by a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Both remote participants will see their call be unheld by the operation,\nas indicated by a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event, and will\nbe connected to one another afterwards."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progression of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event. Both local\ncalls will receive this event, since it is an operation on both calls,\nand the remote calls will receive it as if it were a \"remote unhold\"\noperation."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 20,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 21
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 22
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 23,
              "name": "link_call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 24,
              "name": "consultativeTransfer"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "ID of the other call being acted on.",
              "lineNumber": 26,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "otherCallId"
            }
          ],
          "loc": {
            "start": {
              "line": 125,
              "column": 2
            },
            "end": {
              "line": 152,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 153,
                "column": 2
              },
              "end": {
                "line": 171,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/complex.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "otherCallId",
              "lineNumber": 26,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the other call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "consultativeTransfer",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "consultativeTransfer",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.consultativeTransfer"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Performs a \"consultative\" transfer between two ongoing calls (also known\nas an announced or warm transfer). This allows the current user to\ntransfer the remote participant of a call to another user, after\nhaving spoken to both users."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callconsultativetransfer",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.consultativeTransfer"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise.\nThis API will only emit events that represent a change in state, and will resolve or reject the promise to\nprovide feedback about the operation itself."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Both calls used for the transfer must be locally held. After the operation, these calls will be ended, as\nindicated by a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Both remote participants will see their call be unheld by the operation, as indicated by a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event, and will be connected to one another afterwards."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 18
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "link_call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 20,
              "name": "consultativeTransferAsync"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "ID of the other call being acted on.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "otherCallId"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 23,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 24,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n  await call.consultativeTransferAsync(callId, otherCallId)\n} catch (error) {\n  const { code, message } = error\n  // Operation failed; calls are still On Hold.\n}",
              "lineNumber": 25
            }
          ],
          "loc": {
            "start": {
              "line": 173,
              "column": 2
            },
            "end": {
              "line": 205,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 206,
                "column": 2
              },
              "end": {
                "line": 223,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/complex.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n  await call.consultativeTransferAsync(callId, otherCallId)\n} catch (error) {\n  const { code, message } = error\n  // Operation failed; calls are still On Hold.\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "otherCallId",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the other call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "consultativeTransferAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "consultativeTransferAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.consultativeTransferAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Performs a \"join\" on two ongoing calls.\nThis allows the current user to establish a call with audio with two\nremote users."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Both specified calls must be locally held. The new, \"joined\" call will be\naudio-only, even if either previous call had video. Video cannot be\nadded to the \"joined\" call. Both remote participants will see their\ncall taken off hold, and will receive additional audio from other\nparticipants after the operation. Both previous calls for the current\nuser will be ended after the operation, as indicated by a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If the first call specified has custom parameters set, these parameters will be carried over to the new call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event. Both remote\nparticipants will also receive this event as if it were a \"remote\nunhold\" operation."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 19,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 20
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 21
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 22,
              "name": "link_call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 23,
              "name": "join"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 24,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "ID of the other call being acted on.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "otherCallId"
            }
          ],
          "loc": {
            "start": {
              "line": 225,
              "column": 2
            },
            "end": {
              "line": 251,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 252,
                "column": 2
              },
              "end": {
                "line": 269,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/complex.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 24,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "otherCallId",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the other call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "join",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "join",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.join"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Performs a \"join\" on two ongoing calls. This allows the current user to establish a call with audio with two\nremote users."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#calljoin",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.join"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise.\nThis API will only emit events that represent a change in state, and will resolve or reject the promise to\nprovide feedback about the operation itself."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Both specified calls must be locally held. The new, \"joined\" call will be audio-only, even if either previous\ncall had video. Video cannot be added to the \"joined\" call. Both remote participants will see their call\ntaken off hold, and will receive additional audio from other participants after the operation. Both previous\ncalls for the current user will be ended after the operation, as indicated by a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If the first call specified has custom parameters set, these parameters will be carried over to the new call."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 16,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 18
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 19
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 20,
              "name": "link_call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 21,
              "name": "joinAsync"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "ID of the other call being acted on.",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "otherCallId"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 24,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 271,
              "column": 2
            },
            "end": {
              "line": 297,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 298,
                "column": 2
              },
              "end": {
                "line": 320,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/complex.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "otherCallId",
              "lineNumber": 23,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the other call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "joinAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "joinAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.joinAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves the information of all calls made during the current session."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 4
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 5,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 6,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "getAll"
            },
            {
              "title": "return",
              "description": "Call objects.",
              "lineNumber": 8,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.CallObject"
                  }
                ]
              }
            },
            {
              "title": "example",
              "description": "let calls = client.call.getAll()\nlet currentCalls = calls.filter(call => {\n    return call.state === client.call.states.CONNECTED\n})",
              "lineNumber": 9
            }
          ],
          "loc": {
            "start": {
              "line": 20,
              "column": 2
            },
            "end": {
              "line": 34,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 35,
                "column": 2
              },
              "end": {
                "line": 38,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "let calls = client.call.getAll()\nlet currentCalls = calls.filter(call => {\n    return call.state === client.call.states.CONNECTED\n})"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Call objects."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.CallObject"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "getAll",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "getAll",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.getAll"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves the information of a single call with a specific call ID."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 4
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 5,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 6,
              "name": "callMe"
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 7
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 8,
              "name": "getById"
            },
            {
              "title": "param",
              "description": "The ID of the call to retrieve.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "return",
              "description": "A call object.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "call.CallObject"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 40,
              "column": 2
            },
            "end": {
              "line": 51,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 52,
                "column": 2
              },
              "end": {
                "line": 55,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call to retrieve."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A call object."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "call.CallObject"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "getById",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "getById",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.getById"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sends the \"ringing feedback\" notification to the remote participant of a call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "When using the 'manual' "
                  },
                  {
                    "type": "inlineCode",
                    "value": "ringingFeedbackMode"
                  },
                  {
                    "type": "text",
                    "value": " configuration, the application\nis responsible for transitioning the call into the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "Ringing"
                  },
                  {
                    "type": "text",
                    "value": " state. This\nAPI will notify both ends of the call to enter "
                  },
                  {
                    "type": "inlineCode",
                    "value": "Ringing"
                  },
                  {
                    "type": "text",
                    "value": " state at the same\ntime. The application may decide not to send the \"ringing feedback\"\nnotification by not using this API. The "
                  },
                  {
                    "type": "inlineCode",
                    "value": "ringingFeedbackMode"
                  },
                  {
                    "type": "text",
                    "value": " configuration\nmust be set to 'manual' to use this API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call must be an incoming call in "
                  },
                  {
                    "type": "inlineCode",
                    "value": "Initiated"
                  },
                  {
                    "type": "text",
                    "value": " state. The call\nwill enter "
                  },
                  {
                    "type": "inlineCode",
                    "value": "Ringing"
                  },
                  {
                    "type": "text",
                    "value": " state as a result of the operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent locally when the operation completes. The remote participant will\nbe notified of the operation through a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event as well."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 17,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 18
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 19
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 20,
              "name": "call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 21,
              "name": "sendRingingFeedback"
            },
            {
              "title": "param",
              "description": "The ID of the call.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            }
          ],
          "loc": {
            "start": {
              "line": 57,
              "column": 2
            },
            "end": {
              "line": 80,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 81,
                "column": 2
              },
              "end": {
                "line": 90,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "sendRingingFeedback",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "sendRingingFeedback",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.sendRingingFeedback"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sends the \"ringing feedback\" notification to the remote participant of a call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callsendringingfeedback",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.sendRingingFeedback"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise instead\nof emitting events. This API will not emit events specifically about the operation's completion, but may\nemit events if the call's state changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "When using the 'manual' "
                  },
                  {
                    "type": "inlineCode",
                    "value": "ringingFeedbackMode"
                  },
                  {
                    "type": "text",
                    "value": " configuration, the application\nis responsible for transitioning the call into the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "Ringing"
                  },
                  {
                    "type": "text",
                    "value": " state. This\nAPI will notify both ends of the call to enter "
                  },
                  {
                    "type": "inlineCode",
                    "value": "Ringing"
                  },
                  {
                    "type": "text",
                    "value": " state at the same\ntime. The application may decide not to send the \"ringing feedback\"\nnotification by not using this API. The "
                  },
                  {
                    "type": "inlineCode",
                    "value": "ringingFeedbackMode"
                  },
                  {
                    "type": "text",
                    "value": " configuration\nmust be set to 'manual' to use this API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call must be an incoming call in "
                  },
                  {
                    "type": "inlineCode",
                    "value": "Initiated"
                  },
                  {
                    "type": "text",
                    "value": " state. The call\nwill enter "
                  },
                  {
                    "type": "inlineCode",
                    "value": "Ringing"
                  },
                  {
                    "type": "text",
                    "value": " state as a result of the operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent locally when the operation completes. The remote participant will\nbe notified of the operation through a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event as well."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 21,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 22
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 23
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 24
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 25,
              "name": "call"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 26,
              "name": "sendRingingFeedbackAsync"
            },
            {
              "title": "param",
              "description": "The ID of the call.",
              "lineNumber": 27,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 28,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 29,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 92,
              "column": 2
            },
            "end": {
              "line": 122,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 123,
                "column": 2
              },
              "end": {
                "line": 156,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 27,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "sendRingingFeedbackAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "sendRingingFeedbackAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.sendRingingFeedbackAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Set the "
                  },
                  {
                    "type": "link",
                    "url": "#callcustomparameter",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Custom Parameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " of a call, to be provided to the remote endpoint."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The provided parameters will be saved as part of the call data, to be used throughout the duration of the call.\nAll subsequent call operations will include these custom parameters. Therefore, invalid parameters, or\nparameters not previously configured on the server, will cause subsequent call operations to fail. See\n"
                  },
                  {
                    "type": "link",
                    "url": "#callcustomparameter",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Custom Parameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " for more information on constraints."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Call's custom parameters are stored on the "
                  },
                  {
                    "type": "link",
                    "url": "#callcallobject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "CallObject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ", which can be retrieved using\nthe "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "link",
                    "url": "#callgetall",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getAll"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "link",
                    "url": "#callsendcustomparameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.sendCustomParameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to send the custom parameters as a stand-alone REST request,\nrather than as part of a call operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Custom parameters can be removed from a call's information by setting them as undefined (e.g.,\n"
                  },
                  {
                    "type": "inlineCode",
                    "value": "call.setCustomParameters(callId)"
                  },
                  {
                    "type": "text",
                    "value": "). Subsequent call operations will then no longer send the custom parameters."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 16,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 18
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "link_call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 20,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 21,
              "name": "setCustomParameters"
            },
            {
              "title": "param",
              "description": "The ID of the call.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The custom parameters to set.",
              "lineNumber": 23,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "call.CustomParameter"
                      }
                    ]
                  },
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              },
              "name": "customParameters"
            },
            {
              "title": "return",
              "description": null,
              "lineNumber": 24,
              "type": {
                "type": "UndefinedLiteral"
              }
            },
            {
              "title": "example",
              "description": "// Set custom parameters on a call.\nclient.call.setCustomParameters(callId, [\n   {\n     name: 'Custom-Header',\n     value: 'Custom Value'\n   }\n])",
              "lineNumber": 25
            }
          ],
          "loc": {
            "start": {
              "line": 158,
              "column": 2
            },
            "end": {
              "line": 191,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 212,
                "column": 2
              },
              "end": {
                "line": 216,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Set custom parameters on a call.\nclient.call.setCustomParameters(callId, [\n   {\n     name: 'Custom-Header',\n     value: 'Custom Value'\n   }\n])"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "customParameters",
              "lineNumber": 23,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The custom parameters to set."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "call.CustomParameter"
                      }
                    ]
                  },
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": []
              },
              "title": "returns",
              "type": {
                "type": "UndefinedLiteral"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "setCustomParameters",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "setCustomParameters",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.setCustomParameters"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Send the custom parameters stored as part of an ongoing call to the Gateway. The server may either consume the\nheaders or relay them to another endpoint, depending on configuration."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Custom parameters are set on a call using the "
                  },
                  {
                    "type": "link",
                    "url": "#callsetcustomparameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.setCustomParameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Call's custom parameters are stored on the "
                  },
                  {
                    "type": "link",
                    "url": "#callcallobject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "CallObject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ", which can be retrieved using\nthe "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "link",
                    "url": "#callgetall",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getAll"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 8,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 9
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 10
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 11,
              "name": "link_call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 12,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 13,
              "name": "sendCustomParameters"
            },
            {
              "title": "param",
              "description": "The ID of the call being acted on.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            }
          ],
          "loc": {
            "start": {
              "line": 218,
              "column": 2
            },
            "end": {
              "line": 233,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 234,
                "column": 2
              },
              "end": {
                "line": 240,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "sendCustomParameters",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "sendCustomParameters",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.sendCustomParameters"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Send the custom parameters stored as part of an ongoing call to the Gateway. The server may either consume the\nheaders or relay them to another endpoint, depending on configuration."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callsendcustomparameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.sendCustomParameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Custom parameters are set on a call using the "
                  },
                  {
                    "type": "link",
                    "url": "#callsetcustomparameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.setCustomParameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Call's custom parameters are stored on the "
                  },
                  {
                    "type": "link",
                    "url": "#callcallobject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "CallObject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ", which can be retrieved using\nthe "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "link",
                    "url": "#callgetall",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getAll"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 12
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 13
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 14,
              "name": "link_call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 15,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 16,
              "name": "sendCustomParametersAsync"
            },
            {
              "title": "param",
              "description": "The ID of the call being acted on.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 18,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 241,
              "column": 2
            },
            "end": {
              "line": 261,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 262,
                "column": 2
              },
              "end": {
                "line": 273,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "sendCustomParametersAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "sendCustomParametersAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.sendCustomParametersAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Send DTMF tones to a call's audio."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The provided tone can either be a single DTMF tone (eg. '1') or a\nsequence of DTMF tones (eg. '123') which will be played one after the\nother."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call must be either in Connected, Ringing, or Early Media\nstate, otherwise invoking this API will have no effect."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The tones will be sent as out-of-band tones if supported by the call,\notherwise they will be added in-band to the call's audio."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The progress of the operation will be tracked via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcalloperation",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:operation"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 16,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 18
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 20,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 21,
              "name": "sendDTMF"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "DTMF tone(s) to send. Valid characters are ['0','1','2','3','4','5','6','7','8','9','#','*' and ','].",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "tone"
            },
            {
              "title": "param",
              "description": "The amount of time, in milliseconds, that each DTMF tone should last.",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "duration",
              "default": "100"
            },
            {
              "title": "param",
              "description": "The length of time, in milliseconds, to wait between tones.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "intertoneGap",
              "default": "70"
            }
          ],
          "loc": {
            "start": {
              "line": 275,
              "column": 2
            },
            "end": {
              "line": 302,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 303,
                "column": 2
              },
              "end": {
                "line": 311,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "tone",
              "lineNumber": 23,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "DTMF tone(s) to send. Valid characters are ['0','1','2','3','4','5','6','7','8','9','#','*' and ',']."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "duration",
              "lineNumber": 24,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time, in milliseconds, that each DTMF tone should last."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "default": "100"
            },
            {
              "title": "param",
              "name": "intertoneGap",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The length of time, in milliseconds, to wait between tones."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "default": "70"
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "sendDTMF",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "sendDTMF",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.sendDTMF"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Send DTMF tones to a call's audio."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#callsenddtmf",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.sendDTMF"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The provided tone can either be a single DTMF tone (eg. '1') or a\nsequence of DTMF tones (eg. '123') which will be played one after the\nother."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified call must be either in Connected, Ringing, or Early Media\nstate, otherwise invoking this API will have no effect."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The tones will be sent as out-of-band tones if supported by the call,\notherwise they will be added in-band to the call's audio."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 18
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 20,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 21,
              "name": "sendDTMFAsync"
            },
            {
              "title": "param",
              "description": "ID of the call being acted on.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "DTMF tone(s) to send. Valid characters are ['0','1','2','3','4','5','6','7','8','9','#','*' and ','].",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "tone"
            },
            {
              "title": "param",
              "description": "The amount of time, in milliseconds, that each DTMF tone should last.",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "duration",
              "default": "100"
            },
            {
              "title": "param",
              "description": "The length of time, in milliseconds, to wait between tones.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "intertoneGap",
              "default": "70"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 26,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 27,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 313,
              "column": 2
            },
            "end": {
              "line": 341,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 342,
                "column": 2
              },
              "end": {
                "line": 368,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the call being acted on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "tone",
              "lineNumber": 23,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "DTMF tone(s) to send. Valid characters are ['0','1','2','3','4','5','6','7','8','9','#','*' and ',']."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "duration",
              "lineNumber": 24,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time, in milliseconds, that each DTMF tone should last."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "default": "100"
            },
            {
              "title": "param",
              "name": "intertoneGap",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The length of time, in milliseconds, to wait between tones."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "default": "70"
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "sendDTMFAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "sendDTMFAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.sendDTMFAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieve a snapshot of the low-level information of the Call through statistical\nreport."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The data retrieved is a "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport",
                    "children": [
                      {
                        "type": "text",
                        "value": "RTCStatsReport"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nobject, which contains many individual\n"
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "https://developer.mozilla.org/en-US/docs/Web/API/RTCStats",
                    "children": [
                      {
                        "type": "text",
                        "value": "RTCStats"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ".\nThese are advanced statistics gathered by the browser providing insights\ninto the Call at a certain point in time. Aggregating reports over a\nperiod of time would allow a low-level analysis of the Call for that\nperiod. As an example, this could be done to determine the media quality\nduring the Call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Track ID can optionally be provided to get a report for a specific local\nTrack of the Call."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 18
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 20,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 21,
              "name": "getStats"
            },
            {
              "title": "param",
              "description": "The ID of the Call to retrieve the report.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "ID of a local Track being used by the Call. If not\n   provided, RTCStatsReport is generated for the Call itself.",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "trackId"
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "return",
              "description": "A promise that will resolve with the stats report, if operation succeeds.",
              "lineNumber": 26,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "RTCStatsReport"
                  }
                ]
              }
            },
            {
              "title": "example",
              "description": "// Get a snapshot of the Call's stats.\n//   This may be done on a regular interval to collect data over time.\ntry {\n   // The API will return a promise that resolves with the stats.\n   const result = await client.call.getStats(callId)\n   // Report is a Map-like object so we can iterate through its data.\n   result.forEach(stats => {\n       // Handle the data on its own or collate with previously gathered stats\n       //    for analysis.\n       ...\n   })\n} catch (err) {\n   // Handle the error.\n   const { code, message } = err\n   ...\n}",
              "lineNumber": 27
            }
          ],
          "loc": {
            "start": {
              "line": 370,
              "column": 2
            },
            "end": {
              "line": 414,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 415,
                "column": 2
              },
              "end": {
                "line": 448,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Get a snapshot of the Call's stats.\n//   This may be done on a regular interval to collect data over time.\ntry {\n   // The API will return a promise that resolves with the stats.\n   const result = await client.call.getStats(callId)\n   // Report is a Map-like object so we can iterate through its data.\n   result.forEach(stats => {\n       // Handle the data on its own or collate with previously gathered stats\n       //    for analysis.\n       ...\n   })\n} catch (err) {\n   // Handle the error.\n   const { code, message } = err\n   ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the Call to retrieve the report."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "trackId",
              "lineNumber": 23,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of a local Track being used by the Call. If not\nprovided, RTCStatsReport is generated for the Call itself."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that will resolve with the stats report, if operation succeeds."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "RTCStatsReport"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "getStats",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "getStats",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.getStats"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieve the list of available and supported codecs based on the browser's capabilities for sending media."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will return a promise which, when resolved, it will contain the list of available and supported codecs.\nIn addition, the SDK emits a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallavailablecodecs",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:availableCodecs"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event\nupon retrieving that list of codecs."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is a wrapper for the static method "
                  },
                  {
                    "type": "link",
                    "url": "https://w3c.github.io/webrtc-pc/#dom-rtcrtpsender-getcapabilities",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "RTCRtpSender.getCapabilities()"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 9,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 10
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 12
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 13,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 14,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 15,
              "name": "getAvailableCodecs"
            },
            {
              "title": "param",
              "description": "The kind of media, i.e., 'audio' or 'video', to get the list of available codecs of.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "kind"
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "return",
              "description": "A promise that will resolve with an array of available codecs.\n        If there was an error, it will return undefined.",
              "lineNumber": 18,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "Array"
                  }
                ]
              }
            },
            {
              "title": "example",
              "description": "try {\n   // The API will return a promise that resolves with the codecs.\n   const result = await client.call.getAvailableCodecs('audio')\n   // Iterate through the Array\n   result.forEach(codec => {\n       // Inspect the codec supported by browser by looking at its properties.\n       ...\n   })\n} catch (err) {\n   // Handle the error.\n   const { code, message } = err\n   ...\n}",
              "lineNumber": 20
            }
          ],
          "loc": {
            "start": {
              "line": 450,
              "column": 2
            },
            "end": {
              "line": 484,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 485,
                "column": 2
              },
              "end": {
                "line": 512,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n   // The API will return a promise that resolves with the codecs.\n   const result = await client.call.getAvailableCodecs('audio')\n   // Iterate through the Array\n   result.forEach(codec => {\n       // Inspect the codec supported by browser by looking at its properties.\n       ...\n   })\n} catch (err) {\n   // Handle the error.\n   const { code, message } = err\n   ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "kind",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The kind of media, i.e., 'audio' or 'video', to get the list of available codecs of."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that will resolve with an array of available codecs.\nIf there was an error, it will return undefined."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "Array"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "call",
          "kind": "function",
          "name": "getAvailableCodecs",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "getAvailableCodecs",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.getAvailableCodecs"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieve the call metrics report for a call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The object returned from this API will be in JSON format. The top level object is the report and will include\na timeline of events that were recorded during a call as well as a map object containing computed metrics."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Any event in a timeline will have it's own timeline that may have recorded events. Events in a timeline are scoped\nto that timelines event or report."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The report and some events may have additional data included in a data property."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "See event documentation "
                  },
                  {
                    "type": "link",
                    "url": "#callreportevents",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "here"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ".\nSee metrics documentation "
                  },
                  {
                    "type": "link",
                    "url": "#callmetrics",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "here"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "method",
              "description": null,
              "lineNumber": 14,
              "name": "getReport"
            },
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 17
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 18,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "The id of the call to retrieve the report on.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "return",
              "description": "An object containing all metrics and data tracked against this call.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 514,
              "column": 2
            },
            "end": {
              "line": 536,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 537,
                "column": 2
              },
              "end": {
                "line": 542,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The id of the call to retrieve the report on."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An object containing all metrics and data tracked against this call."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "kind": "function",
          "name": "getReport",
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "getReport",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.getReport"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Set "
                  },
                  {
                    "type": "link",
                    "url": "#callsdphandlerfunction",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "SDP Handler Functions"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " that will be run as part of a pipeline for all future calls.\nThis will replace any SDP Handlers that were previously set."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "SDP handlers can be used to make modifications to the SDP (e.g., removing certain codecs)\nbefore they are processed or sent to the other side."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This is an advanced feature, changing the SDP handlers mid-call may cause\nunexpected behaviour in future call operations for that call."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "method",
              "description": null,
              "lineNumber": 10,
              "name": "setSdpHandlers"
            },
            {
              "title": "public",
              "description": null,
              "lineNumber": 11,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 12
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 13
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 14,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 15,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "The list of SDP handler functions to modify SDP.",
              "lineNumber": 16,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.SdpHandlerFunction"
                  }
                ]
              },
              "name": "sdpHandlers"
            },
            {
              "title": "return",
              "description": null,
              "lineNumber": 17,
              "type": {
                "type": "UndefinedLiteral"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 544,
              "column": 2
            },
            "end": {
              "line": 562,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 563,
                "column": 2
              },
              "end": {
                "line": 567,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/misc.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "sdpHandlers",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The list of SDP handler functions to modify SDP."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.SdpHandlerFunction"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": []
              },
              "title": "returns",
              "type": {
                "type": "UndefinedLiteral"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "kind": "function",
          "name": "setSdpHandlers",
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "setSdpHandlers",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.setSdpHandlers"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Possible states that a Call can be in."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Call's state describes the current status of the Call. An application\nshould use the state to understand how the Call, and any media\nassociated with the Call, should be handled. Which state the Call is\nin defines how it can be interacted with, as certain operations can\nonly be performed while in specific states, and tells an application\nwhether the Call currently has media flowing between users.\nUnless stated otherwise, the Call's state pertains to both caller & callee."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The Call's state is a property of the "
                  },
                  {
                    "type": "link",
                    "url": "#callcallobject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "CallObject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ",\nwhich can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or\n"
                  },
                  {
                    "type": "link",
                    "url": "#callgetall",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getAll"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK emits a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallstatechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:stateChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent when a Call's state changes from one state to another."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 18,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 19
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 20
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 21,
              "name": "callMe"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 22,
              "name": "call"
            },
            {
              "title": "type",
              "description": null,
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "property",
              "description": "The (outgoing) call is being started. While in this state, no Call operations can be performed until Call gets into Initiated state.",
              "lineNumber": 24,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "INITIATING"
            },
            {
              "title": "property",
              "description": "A call has been started and both the callee and caller may now perform further operations on the call object.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "INITIATED"
            },
            {
              "title": "property",
              "description": "The call has been received by both parties, and is waiting to be answered.",
              "lineNumber": 26,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "RINGING"
            },
            {
              "title": "property",
              "description": "The call has not been answered, but media\n   is already being received. This may be network-ringing media, IVR\n   system media, or other pre-answer medias. When early media is\n   supported, this state may replace the Ringing state. This is a state valid only for caller's side.",
              "lineNumber": 27,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "EARLY_MEDIA"
            },
            {
              "title": "property",
              "description": "The call was disconnected before it could be answered. This is a state valid only for callee's side.",
              "lineNumber": 31,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "CANCELLED"
            },
            {
              "title": "property",
              "description": "Both parties are connected and media is flowing.",
              "lineNumber": 32,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "CONNECTED"
            },
            {
              "title": "property",
              "description": "Both parties are connected but no media is flowing.",
              "lineNumber": 33,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "ON_HOLD"
            },
            {
              "title": "property",
              "description": "The call has ended.",
              "lineNumber": 34,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "ENDED"
            },
            {
              "title": "example",
              "description": "// Use the call states to know how to handle a change in the call.\nclient.on('call:stateChange', function (params) {\n   const call = client.call.getById(params.callId)\n   // Check if the call now has media flowing.\n   if (call.state === client.call.states.CONNECTED) {\n     // The call is now active, and can perform midcall operations.\n   }\n})",
              "lineNumber": 35
            }
          ],
          "loc": {
            "start": {
              "line": 12,
              "column": 2
            },
            "end": {
              "line": 56,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 57,
                "column": 2
              },
              "end": {
                "line": 57,
                "column": 28
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/constants.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Use the call states to know how to handle a change in the call.\nclient.on('call:stateChange', function (params) {\n   const call = client.call.getById(params.callId)\n   // Check if the call now has media flowing.\n   if (call.state === client.call.states.CONNECTED) {\n     // The call is now active, and can perform midcall operations.\n   }\n})"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "INITIATING",
              "lineNumber": 24,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The (outgoing) call is being started. While in this state, no Call operations can be performed until Call gets into Initiated state."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "INITIATED",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A call has been started and both the callee and caller may now perform further operations on the call object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "RINGING",
              "lineNumber": 26,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The call has been received by both parties, and is waiting to be answered."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "EARLY_MEDIA",
              "lineNumber": 27,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The call has not been answered, but media\nis already being received. This may be network-ringing media, IVR\nsystem media, or other pre-answer medias. When early media is\nsupported, this state may replace the Ringing state. This is a state valid only for caller's side."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "CANCELLED",
              "lineNumber": 31,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The call was disconnected before it could be answered. This is a state valid only for callee's side."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "CONNECTED",
              "lineNumber": 32,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Both parties are connected and media is flowing."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "ON_HOLD",
              "lineNumber": 33,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Both parties are connected but no media is flowing."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "ENDED",
              "lineNumber": 34,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The call has ended."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "name": "states",
          "kind": "constant",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "states",
              "kind": "constant",
              "scope": "static"
            }
          ],
          "namespace": "call.states"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Possible states that a Call's media connection can be in."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Call's media connection state describes the current status of media within the call.\nAn application should use this state to understand whether the Call participants are\nable to see/hear each other or may be experiencing connection issues. The media connection\nstate can be used alongside the "
                  },
                  {
                    "type": "link",
                    "url": "#callstates",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Call state"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " to determine if media issues\nare occurring while the participants are expecting to be connected."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An important state to check for is the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "FAILED"
                  },
                  {
                    "type": "text",
                    "value": " state. This state signifies that there is no\nmedia connection between the call participants and an action must be taken to resolve the\nproblem. Using the "
                  },
                  {
                    "type": "link",
                    "url": "#callrestartmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.restartMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API will attempt to reconnect the media. See\nthe "
                  },
                  {
                    "type": "link",
                    "url": "#callrestartmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.restartMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API description for more information."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "These states are direct reflections of the possible\n"
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceConnectionState",
                    "children": [
                      {
                        "type": "text",
                        "value": "RTCPeerConnection.iceConnectionState"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " values."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The Call's media connection state is a property of the "
                  },
                  {
                    "type": "link",
                    "url": "#callcallobject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "CallObject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ",\nwhich can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or\n"
                  },
                  {
                    "type": "link",
                    "url": "#callgetall",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getAll"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK emits a "
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallmediaconnectionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:mediaConnectionChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent when a Call's media connection state changes from one state to another."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 24,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 25
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 26
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 27,
              "name": "callMe"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 28,
              "name": "call"
            },
            {
              "title": "type",
              "description": null,
              "lineNumber": 29,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "property",
              "description": "The Call is initializing the local side of the connection and waiting on information from the remote side.\n When the information is received, the state will transition into `checking` as the Call automatically begins the connection process.",
              "lineNumber": 30,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "NEW"
            },
            {
              "title": "property",
              "description": "The Call has received information from the remote endpoint and is working to establish the media connection.\n When finished, the state will transition to either `connected` or `failed`.",
              "lineNumber": 32,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "CHECKING"
            },
            {
              "title": "property",
              "description": "A usable connection has been made and the Call will now have media.\n The connection may not be optimal, though, so the Call will continue establishment to improve the connection before going into the `completed` state.",
              "lineNumber": 34,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "CONNECTED"
            },
            {
              "title": "property",
              "description": "The media connection process has fully completed and the optimal connection has been established. While in this state,\n the Call endpoints will receive each other's media.",
              "lineNumber": 36,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "COMPLETED"
            },
            {
              "title": "property",
              "description": "Media has become disconnected and the Call endpoints have stopped receiving each other's media.\n The Call will automatically attempt to reconnect, transitioning back to `completed` if successful or to `failed` if not.",
              "lineNumber": 38,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "DISCONNECTED"
            },
            {
              "title": "property",
              "description": "The connection has failed and cannot be recovered automatically. A full media connection refresh is required to reestablish a connection. See the {@link call.restartMedia} API.",
              "lineNumber": 40,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "FAILED"
            },
            {
              "title": "property",
              "description": "The connection has been shut down and is no longer in use.",
              "lineNumber": 41,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "CLOSED"
            },
            {
              "title": "example",
              "description": "// Use the media connection states to check the status of the media connection of the Call.\nclient.on('call:mediaConnectionChange', function (params) {\n  // Retrieve the state of the Call this event is for.\n  const call = client.call.getById(params.callId)\n  const mediaConnectionStates = client.call.mediaConnectionStates\n\n  // Check the mediaConnectionState to determine which scenario the call is in.\n  switch (call.mediaConnectionState) {\n    case mediaConnectionStates.CONNECTED:\n    case mediaConnectionStates.COMPLETED:\n      // Media established: The Call's media is connected. The Call's participants\n      //    are able to see/hear each other.\n      // These states will occur after Call establishment.\n      ...\n      break\n    case mediaConnectionStates.NEW:\n    case mediaConnectionStates.CHECKING:\n    case mediaConnectionStates.DISCONNECTED:\n      // Media pending: The Call's media is not connected. The Call is working\n      //    to connect media automatically.\n      // These states will occur during Call establishment and may occur midcall if there are\n      //    connection issues (eg. poor network quality) or a Call participant has changed (eg. transfer).\n      ...\n      break\n    case mediaConnectionStates.FAILED:\n     // Media has failed. The call requires a media refresh to reestablish.\n     // This state will occur after the `DISCONNECTED` state is encountered.\n     ...\n      break\n    case mediaConnectionStates.CLOSED:\n      // Media ended due to the Call being ended.\n      // This state will occur after Call establishment.\n      ...\n      break\n  }\n}",
              "lineNumber": 42
            }
          ],
          "loc": {
            "start": {
              "line": 59,
              "column": 2
            },
            "end": {
              "line": 138,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 139,
                "column": 2
              },
              "end": {
                "line": 139,
                "column": 60
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/interface/api/constants.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Use the media connection states to check the status of the media connection of the Call.\nclient.on('call:mediaConnectionChange', function (params) {\n  // Retrieve the state of the Call this event is for.\n  const call = client.call.getById(params.callId)\n  const mediaConnectionStates = client.call.mediaConnectionStates\n\n  // Check the mediaConnectionState to determine which scenario the call is in.\n  switch (call.mediaConnectionState) {\n    case mediaConnectionStates.CONNECTED:\n    case mediaConnectionStates.COMPLETED:\n      // Media established: The Call's media is connected. The Call's participants\n      //    are able to see/hear each other.\n      // These states will occur after Call establishment.\n      ...\n      break\n    case mediaConnectionStates.NEW:\n    case mediaConnectionStates.CHECKING:\n    case mediaConnectionStates.DISCONNECTED:\n      // Media pending: The Call's media is not connected. The Call is working\n      //    to connect media automatically.\n      // These states will occur during Call establishment and may occur midcall if there are\n      //    connection issues (eg. poor network quality) or a Call participant has changed (eg. transfer).\n      ...\n      break\n    case mediaConnectionStates.FAILED:\n     // Media has failed. The call requires a media refresh to reestablish.\n     // This state will occur after the `DISCONNECTED` state is encountered.\n     ...\n      break\n    case mediaConnectionStates.CLOSED:\n      // Media ended due to the Call being ended.\n      // This state will occur after Call establishment.\n      ...\n      break\n  }\n}"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "NEW",
              "lineNumber": 30,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The Call is initializing the local side of the connection and waiting on information from the remote side.\nWhen the information is received, the state will transition into "
                      },
                      {
                        "type": "inlineCode",
                        "value": "checking"
                      },
                      {
                        "type": "text",
                        "value": " as the Call automatically begins the connection process."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "CHECKING",
              "lineNumber": 32,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The Call has received information from the remote endpoint and is working to establish the media connection.\nWhen finished, the state will transition to either "
                      },
                      {
                        "type": "inlineCode",
                        "value": "connected"
                      },
                      {
                        "type": "text",
                        "value": " or "
                      },
                      {
                        "type": "inlineCode",
                        "value": "failed"
                      },
                      {
                        "type": "text",
                        "value": "."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "CONNECTED",
              "lineNumber": 34,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A usable connection has been made and the Call will now have media.\nThe connection may not be optimal, though, so the Call will continue establishment to improve the connection before going into the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "completed"
                      },
                      {
                        "type": "text",
                        "value": " state."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "COMPLETED",
              "lineNumber": 36,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The media connection process has fully completed and the optimal connection has been established. While in this state,\nthe Call endpoints will receive each other's media."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "DISCONNECTED",
              "lineNumber": 38,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Media has become disconnected and the Call endpoints have stopped receiving each other's media.\nThe Call will automatically attempt to reconnect, transitioning back to "
                      },
                      {
                        "type": "inlineCode",
                        "value": "completed"
                      },
                      {
                        "type": "text",
                        "value": " if successful or to "
                      },
                      {
                        "type": "inlineCode",
                        "value": "failed"
                      },
                      {
                        "type": "text",
                        "value": " if not."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "FAILED",
              "lineNumber": 40,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The connection has failed and cannot be recovered automatically. A full media connection refresh is required to reestablish a connection. See the "
                      },
                      {
                        "type": "link",
                        "url": "#callrestartmedia",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "call.restartMedia"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": " API."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "CLOSED",
              "lineNumber": 41,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The connection has been shut down and is no longer in use."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "name": "mediaConnectionStates",
          "kind": "constant",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "mediaConnectionStates",
              "kind": "constant",
              "scope": "static"
            }
          ],
          "namespace": "call.mediaConnectionStates"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Events used in the SDK's call reports."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "As a call progresses, the operation(s)/function(s) being performed throughout\nthe duration of a call are recorded as events in a call report.\nThe call report can be retrieved via the "
                  },
                  {
                    "type": "link",
                    "url": "#callgetreport",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getReport"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API.\nAn application can use these event names to find the associated event(s)\nin the call report for more information on the event.\nSee "
                  },
                  {
                    "type": "emphasis",
                    "children": [
                      {
                        "type": "text",
                        "value": "Call Reports"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " tutorial for more information on call reports and events."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "name",
              "description": null,
              "lineNumber": 12,
              "name": "reportEvents"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 13
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 14,
              "name": "callMe"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 15,
              "name": "call"
            },
            {
              "title": "type",
              "description": null,
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "property",
              "description": "Starts when the make operation starts. Ends when the make operation finishes.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "MAKE"
            },
            {
              "title": "property",
              "description": "Starts when the send ringing feedback operation starts. Ends when the ringing feedback operation finishes.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "SEND_RINGING_FEEDBACK"
            },
            {
              "title": "property",
              "description": "Starts when the SDK receives a call and ends when the incoming call is setup.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "RECEIVE_CALL"
            },
            {
              "title": "property",
              "description": null,
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "REMOTE_RINGING"
            },
            {
              "title": "property",
              "description": "Starts when the answer operation starts. Ends when the answer operation finishes.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "ANSWER"
            },
            {
              "title": "property",
              "description": "Starts when user media is requested from the browser and ends when the media is created.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "GET_USER_MEDIA"
            },
            {
              "title": "property",
              "description": "Starts when the local media begins processing, and ends when the offer is set and ice collection completes.",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "PROCESS_MEDIA_LOCAL"
            },
            {
              "title": "property",
              "description": "Starts when the remote response is received, and ends when the remote media is set.",
              "lineNumber": 24,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "PROCESS_MEDIA_REMOTE"
            },
            {
              "title": "property",
              "description": "Starts when ice candidate collection starts and ends when collection is complete.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "ICE_COLLECTION"
            },
            {
              "title": "property",
              "description": "Starts and ends when a relay candidate is collected. Event data contains info on the candidate.",
              "lineNumber": 26,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "RELAY_CANDIDATE_COLLECTED"
            },
            {
              "title": "property",
              "description": "Starts when the ignore operation starts. Ends when the ignore operation finishes.",
              "lineNumber": 27,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "IGNORE"
            },
            {
              "title": "property",
              "description": "Starts when the reject operation starts. Ends when the reject operation finishes.",
              "lineNumber": 28,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "REJECT"
            },
            {
              "title": "property",
              "description": "Starts when the forward call operation starts. Ends when the forward operation finishes.",
              "lineNumber": 29,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "FORWARD_CALL"
            },
            {
              "title": "property",
              "description": "Starts when the end operation starts. Ends when the end operation finishes.",
              "lineNumber": 30,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "END_LOCAL"
            },
            {
              "title": "property",
              "description": "Starts when the call status update ended operation starts. Ends when the call status update ended operation finishes.",
              "lineNumber": 31,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "END_REMOTE"
            },
            {
              "title": "property",
              "description": "Starts when the add basic media operation starts. Ends when the add basic media operation finishes.",
              "lineNumber": 32,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "ADD_BASIC_MEDIA"
            },
            {
              "title": "property",
              "description": "Starts when the add media operation starts. Ends when the add media operation finishes.",
              "lineNumber": 33,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "ADD_MEDIA_LOCAL"
            },
            {
              "title": "property",
              "description": "Starts when a remote add media notification is received and ends when the operation is handled.",
              "lineNumber": 34,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "ADD_MEDIA_REMOTE"
            },
            {
              "title": "property",
              "description": "Starts when the remove basic media operation starts. Ends when the remove basic operation finishes.",
              "lineNumber": 35,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "REMOVE_BASIC_MEDIA"
            },
            {
              "title": "property",
              "description": "Starts when the remove media operation starts. Ends when the remove media operation finishes.",
              "lineNumber": 36,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "REMOVE_MEDIA"
            },
            {
              "title": "property",
              "description": "Starts when a remote remove media notification is received and ends when the operation is handled.",
              "lineNumber": 37,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "REMOVE_MEDIA_REMOTE"
            },
            {
              "title": "property",
              "description": "Starts when the media restart operation starts. Ends when the media restart operation finishes.",
              "lineNumber": 38,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "MEDIA_RESTART"
            },
            {
              "title": "property",
              "description": "Starts when the replace track operation starts. Ends when the replace track operation finishes.",
              "lineNumber": 39,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "REPLACE_TRACK"
            },
            {
              "title": "property",
              "description": "Starts when the hold operation starts. Ends when the hold operation finishes.",
              "lineNumber": 40,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "HOLD_LOCAL"
            },
            {
              "title": "property",
              "description": "Starts when a remote hold notification is received and ends when the operation is handled.",
              "lineNumber": 41,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "HOLD_REMOTE"
            },
            {
              "title": "property",
              "description": "Starts when the unhold operation starts. Ends when the unhold operation finishes.",
              "lineNumber": 42,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "UNHOLD_LOCAL"
            },
            {
              "title": "property",
              "description": "Starts when a remote unhold notification is received and ends when the operation is handled.",
              "lineNumber": 43,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "UNHOLD_REMOTE"
            },
            {
              "title": "property",
              "description": "Starts when a REST request is to be made for an operation and ends when a response is received, or it times out.",
              "lineNumber": 44,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "REST_REQUEST"
            },
            {
              "title": "property",
              "description": "Starts when the play audio operation starts. Ends when the play audio operation finishes.",
              "lineNumber": 45,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "PLAY_AUDIO"
            },
            {
              "title": "property",
              "description": "Starts when the start music on hold operation starts. Ends when the start music on hold operation finishes.",
              "lineNumber": 46,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "START_MOH"
            },
            {
              "title": "property",
              "description": "Starts when the stop music on hold operation starts. Ends when the stop music on hold operation finishes.",
              "lineNumber": 47,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "STOP_MOH"
            },
            {
              "title": "property",
              "description": "Starts when the send custom parameters operation starts. Ends send custom parameters operation finishes.",
              "lineNumber": 48,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "SEND_CUSTOM_PARAMETERS"
            },
            {
              "title": "property",
              "description": "Starts when the get stats operation starts. Ends when the get stats operation finishes.",
              "lineNumber": 49,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "GET_STATS"
            },
            {
              "title": "property",
              "description": "Starts when the send DTMF operation starts. Ends when the DTMF operation finishes.",
              "lineNumber": 50,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "SEND_DTMF"
            },
            {
              "title": "property",
              "description": "Starts when the resync operation starts. Ends when the resync operation finishes.",
              "lineNumber": 51,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "RESYNC"
            },
            {
              "title": "property",
              "description": "Starts when the direct transfer operation starts. Ends when the direct transfer operation finishes.",
              "lineNumber": 52,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "DIRECT_TRANSFER"
            },
            {
              "title": "property",
              "description": "Starts when the consultative transfer operation starts. Ends when the consultative transfer operation finishes.",
              "lineNumber": 53,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "CONSULTATIVE_TRANSFER"
            },
            {
              "title": "property",
              "description": "Starts when the join operation starts. Ends when the join operation finishes.",
              "lineNumber": 54,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "JOIN"
            },
            {
              "title": "property",
              "description": "Starts when the get available codecs operation starts. Ends when the get available codecs operation finishes.",
              "lineNumber": 55,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "GET_AVAILABLE_CODECS"
            },
            {
              "title": "property",
              "description": "Starts when the slow start operation starts. Ends when the slow stop operation finishes.",
              "lineNumber": 56,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "SLOW_START"
            },
            {
              "title": "example",
              "description": "const report = client.call.getReport('callId')\nconst getAvailableCodecsEvent = report.timeline.find(event => event.type === client.call.reportEvents.GET_AVAILABLE_CODECS)\nlog(`Took ${getAvailableCodecsEvent.end - getAvailableCodecsEvent.start}ms to get available codecs.`)",
              "lineNumber": 57
            }
          ],
          "loc": {
            "start": {
              "line": 4,
              "column": 0
            },
            "end": {
              "line": 65,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 66,
                "column": 0
              },
              "end": {
                "line": 111,
                "column": 1
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/callstack/reporter/constants.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "const report = client.call.getReport('callId')\nconst getAvailableCodecsEvent = report.timeline.find(event => event.type === client.call.reportEvents.GET_AVAILABLE_CODECS)\nlog(`Took ${getAvailableCodecsEvent.end - getAvailableCodecsEvent.start}ms to get available codecs.`)"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "MAKE",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the make operation starts. Ends when the make operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "SEND_RINGING_FEEDBACK",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the send ringing feedback operation starts. Ends when the ringing feedback operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "RECEIVE_CALL",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the SDK receives a call and ends when the incoming call is setup."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "REMOTE_RINGING",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "ANSWER",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the answer operation starts. Ends when the answer operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "GET_USER_MEDIA",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when user media is requested from the browser and ends when the media is created."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "PROCESS_MEDIA_LOCAL",
              "lineNumber": 23,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the local media begins processing, and ends when the offer is set and ice collection completes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "PROCESS_MEDIA_REMOTE",
              "lineNumber": 24,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the remote response is received, and ends when the remote media is set."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "ICE_COLLECTION",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when ice candidate collection starts and ends when collection is complete."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "RELAY_CANDIDATE_COLLECTED",
              "lineNumber": 26,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts and ends when a relay candidate is collected. Event data contains info on the candidate."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "IGNORE",
              "lineNumber": 27,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the ignore operation starts. Ends when the ignore operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "REJECT",
              "lineNumber": 28,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the reject operation starts. Ends when the reject operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "FORWARD_CALL",
              "lineNumber": 29,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the forward call operation starts. Ends when the forward operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "END_LOCAL",
              "lineNumber": 30,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the end operation starts. Ends when the end operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "END_REMOTE",
              "lineNumber": 31,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the call status update ended operation starts. Ends when the call status update ended operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "ADD_BASIC_MEDIA",
              "lineNumber": 32,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the add basic media operation starts. Ends when the add basic media operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "ADD_MEDIA_LOCAL",
              "lineNumber": 33,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the add media operation starts. Ends when the add media operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "ADD_MEDIA_REMOTE",
              "lineNumber": 34,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when a remote add media notification is received and ends when the operation is handled."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "REMOVE_BASIC_MEDIA",
              "lineNumber": 35,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the remove basic media operation starts. Ends when the remove basic operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "REMOVE_MEDIA",
              "lineNumber": 36,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the remove media operation starts. Ends when the remove media operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "REMOVE_MEDIA_REMOTE",
              "lineNumber": 37,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when a remote remove media notification is received and ends when the operation is handled."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "MEDIA_RESTART",
              "lineNumber": 38,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the media restart operation starts. Ends when the media restart operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "REPLACE_TRACK",
              "lineNumber": 39,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the replace track operation starts. Ends when the replace track operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "HOLD_LOCAL",
              "lineNumber": 40,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the hold operation starts. Ends when the hold operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "HOLD_REMOTE",
              "lineNumber": 41,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when a remote hold notification is received and ends when the operation is handled."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "UNHOLD_LOCAL",
              "lineNumber": 42,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the unhold operation starts. Ends when the unhold operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "UNHOLD_REMOTE",
              "lineNumber": 43,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when a remote unhold notification is received and ends when the operation is handled."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "REST_REQUEST",
              "lineNumber": 44,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when a REST request is to be made for an operation and ends when a response is received, or it times out."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "PLAY_AUDIO",
              "lineNumber": 45,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the play audio operation starts. Ends when the play audio operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "START_MOH",
              "lineNumber": 46,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the start music on hold operation starts. Ends when the start music on hold operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "STOP_MOH",
              "lineNumber": 47,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the stop music on hold operation starts. Ends when the stop music on hold operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "SEND_CUSTOM_PARAMETERS",
              "lineNumber": 48,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the send custom parameters operation starts. Ends send custom parameters operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "GET_STATS",
              "lineNumber": 49,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the get stats operation starts. Ends when the get stats operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "SEND_DTMF",
              "lineNumber": 50,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the send DTMF operation starts. Ends when the DTMF operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "RESYNC",
              "lineNumber": 51,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the resync operation starts. Ends when the resync operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "DIRECT_TRANSFER",
              "lineNumber": 52,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the direct transfer operation starts. Ends when the direct transfer operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "CONSULTATIVE_TRANSFER",
              "lineNumber": 53,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the consultative transfer operation starts. Ends when the consultative transfer operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "JOIN",
              "lineNumber": 54,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the join operation starts. Ends when the join operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "GET_AVAILABLE_CODECS",
              "lineNumber": 55,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the get available codecs operation starts. Ends when the get available codecs operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "SLOW_START",
              "lineNumber": 56,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starts when the slow start operation starts. Ends when the slow stop operation finishes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "name": "reportEvents",
          "memberof": "call",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "reportEvents",
              "scope": "static"
            }
          ],
          "namespace": "call.reportEvents"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "List of metrics available as part of a Call Report.\nMetrics are calculated only for the successful scenarios."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "As a call progresses, timings are calculated for the duration of operations and\nother events. They are recorded in a call report that can be retrieved via\nthe "
                  },
                  {
                    "type": "link",
                    "url": "#callgetreport",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getReport"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 8,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 9
            },
            {
              "title": "name",
              "description": null,
              "lineNumber": 10,
              "name": "metrics"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 11
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 12,
              "name": "callMe"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 13,
              "name": "call"
            },
            {
              "title": "type",
              "description": null,
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "property",
              "description": "The duration of a completed call starting from the make call API call or incoming call notification until the call ends.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "CALL_DURATION"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the `make call` operation starts up until right before we set local description.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "MAKE_CALL_PRE_LOCAL_SETUP"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when a call is made until the call is setup locally. This does not include any remote session creation.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "MAKE_CALL_LOCAL_SETUP"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the create session request is sent until the SDK processes the response.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "MAKE_CALL_REMOTE_SETUP"
            },
            {
              "title": "property",
              "description": "For outgoing calls, the time for the `make` operation to complete.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_MAKE"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the `answer call` operation starts until it is setup locally.\n  (i.e. from the time an incoming call is answered until media is connected)",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "ANSWER_CALL_LOCAL_SETUP"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the `answer call` operation starts up until right before we set local description.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "ANSWER_CALL_PRE_LOCAL_SETUP"
            },
            {
              "title": "property",
              "description": "For incoming calls, the time for the `answer` operation to complete.",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_ANSWER"
            },
            {
              "title": "property",
              "description": "For incoming calls, the time from the call first being received until it has been answered. Includes call processing and setup, as well as time for the answer API to have been called.",
              "lineNumber": 24,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_FROM_RECEIVE_TO_ANSWER"
            },
            {
              "title": "property",
              "description": "For incoming calls, the time from the call first being received until media is connected. Similar to `TIME_FROM_RECEIVE_TO_ANSWER`, but without the `answer` REST request.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_CALL_SETUP_DURATION"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when a call is made until the SDK recieves the remote ringing notification.",
              "lineNumber": 26,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_RINGING"
            },
            {
              "title": "property",
              "description": "The amount of time it takes for the ignore call to complete.",
              "lineNumber": 27,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_IGNORE"
            },
            {
              "title": "property",
              "description": "The amount of time it takes for the reject call to complete.",
              "lineNumber": 28,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_REJECT"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the local `add media` operation starts until it has finished.",
              "lineNumber": 29,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_ADD_MEDIA"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the SDK receives a remote `add media` notification until it is handled and operation completes.",
              "lineNumber": 30,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_ADD_MEDIA_REMOTE"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the local `remove media` operation starts until it has finished.",
              "lineNumber": 31,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_REMOVE_MEDIA"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the SDK receives a remote `remove media` notification until it is handled and operation completes.",
              "lineNumber": 32,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_REMOVE_MEDIA_REMOTE"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the `restart media` operation starts until it has finished.",
              "lineNumber": 33,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_RESTART_MEDIA"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the local `hold` operation starts until it has finished.",
              "lineNumber": 34,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_HOLD_LOCAL"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the SDK receives a remote `hold` notification until it is handled and operation completes.",
              "lineNumber": 35,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_HOLD_REMOTE"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the local `unhold` operation starts until it has finished.",
              "lineNumber": 36,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_UNHOLD_LOCAL"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the SDK receives a remote `unhold` notification until it is handled and operation completes.",
              "lineNumber": 37,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_UNHOLD_REMOTE"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the local description is set to when all ICE candidates have been collected.\n  This metric is affected by the {@link call.RTCPeerConnectionConfig iceCandidatePoolSize} configuration. Collecting candidates ahead of time for the call will result in a shorter value for this metric, potentially resulting in it not being recorded if collection is not needed during call establishment.",
              "lineNumber": 38,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_COLLECT_ICE_CANDIDATES"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the `ice collection` operation starts until each relay candidate has been recieved.\n  This metric is affected by the {@link call.RTCPeerConnectionConfig iceCandidatePoolSize} configuration. Collecting candidates ahead of time for the call will result in a shorter value for this metric, potentially resulting in it not being recorded if collection is not needed during call establishment.",
              "lineNumber": 40,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_RELAY_CANDIDATES"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the `send custom parameters` operation starts until it has finished.",
              "lineNumber": 42,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_SEND_CUSTOM_PARAMETERS"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the `forward call` operation starts until it has finished.",
              "lineNumber": 43,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_FORWARD"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the `direct transfer` operation starts until it has finished.",
              "lineNumber": 44,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_DIRECT_TRANSFER"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the `consultative transfer` operation starts until it has finished.",
              "lineNumber": 45,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_CONSULTATIVE_TRANSFER"
            },
            {
              "title": "property",
              "description": "The amount of time it takes from when the `join call` operation starts until it has finished.",
              "lineNumber": 46,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TIME_TO_JOIN"
            },
            {
              "title": "example",
              "description": "const report = client.call.getReport(callId)\nconst callDuration = report.metrics.find(metric => metric.type === client.call.metrics.CALL_DURATION)\nlog(`Call duration was ${callDuration.data}ms.`)",
              "lineNumber": 47
            }
          ],
          "loc": {
            "start": {
              "line": 128,
              "column": 0
            },
            "end": {
              "line": 179,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 180,
                "column": 0
              },
              "end": {
                "line": 210,
                "column": 1
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/callstack/reporter/constants.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "const report = client.call.getReport(callId)\nconst callDuration = report.metrics.find(metric => metric.type === client.call.metrics.CALL_DURATION)\nlog(`Call duration was ${callDuration.data}ms.`)"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "CALL_DURATION",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The duration of a completed call starting from the make call API call or incoming call notification until the call ends."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "MAKE_CALL_PRE_LOCAL_SETUP",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "make call"
                      },
                      {
                        "type": "text",
                        "value": " operation starts up until right before we set local description."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "MAKE_CALL_LOCAL_SETUP",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when a call is made until the call is setup locally. This does not include any remote session creation."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "MAKE_CALL_REMOTE_SETUP",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the create session request is sent until the SDK processes the response."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_MAKE",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "For outgoing calls, the time for the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "make"
                      },
                      {
                        "type": "text",
                        "value": " operation to complete."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "ANSWER_CALL_LOCAL_SETUP",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "answer call"
                      },
                      {
                        "type": "text",
                        "value": " operation starts until it is setup locally.\n(i.e. from the time an incoming call is answered until media is connected)"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "ANSWER_CALL_PRE_LOCAL_SETUP",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "answer call"
                      },
                      {
                        "type": "text",
                        "value": " operation starts up until right before we set local description."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_ANSWER",
              "lineNumber": 23,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "For incoming calls, the time for the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "answer"
                      },
                      {
                        "type": "text",
                        "value": " operation to complete."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_FROM_RECEIVE_TO_ANSWER",
              "lineNumber": 24,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "For incoming calls, the time from the call first being received until it has been answered. Includes call processing and setup, as well as time for the answer API to have been called."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_CALL_SETUP_DURATION",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "For incoming calls, the time from the call first being received until media is connected. Similar to "
                      },
                      {
                        "type": "inlineCode",
                        "value": "TIME_FROM_RECEIVE_TO_ANSWER"
                      },
                      {
                        "type": "text",
                        "value": ", but without the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "answer"
                      },
                      {
                        "type": "text",
                        "value": " REST request."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_RINGING",
              "lineNumber": 26,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when a call is made until the SDK recieves the remote ringing notification."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_IGNORE",
              "lineNumber": 27,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes for the ignore call to complete."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_REJECT",
              "lineNumber": 28,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes for the reject call to complete."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_ADD_MEDIA",
              "lineNumber": 29,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the local "
                      },
                      {
                        "type": "inlineCode",
                        "value": "add media"
                      },
                      {
                        "type": "text",
                        "value": " operation starts until it has finished."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_ADD_MEDIA_REMOTE",
              "lineNumber": 30,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the SDK receives a remote "
                      },
                      {
                        "type": "inlineCode",
                        "value": "add media"
                      },
                      {
                        "type": "text",
                        "value": " notification until it is handled and operation completes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_REMOVE_MEDIA",
              "lineNumber": 31,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the local "
                      },
                      {
                        "type": "inlineCode",
                        "value": "remove media"
                      },
                      {
                        "type": "text",
                        "value": " operation starts until it has finished."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_REMOVE_MEDIA_REMOTE",
              "lineNumber": 32,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the SDK receives a remote "
                      },
                      {
                        "type": "inlineCode",
                        "value": "remove media"
                      },
                      {
                        "type": "text",
                        "value": " notification until it is handled and operation completes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_RESTART_MEDIA",
              "lineNumber": 33,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "restart media"
                      },
                      {
                        "type": "text",
                        "value": " operation starts until it has finished."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_HOLD_LOCAL",
              "lineNumber": 34,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the local "
                      },
                      {
                        "type": "inlineCode",
                        "value": "hold"
                      },
                      {
                        "type": "text",
                        "value": " operation starts until it has finished."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_HOLD_REMOTE",
              "lineNumber": 35,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the SDK receives a remote "
                      },
                      {
                        "type": "inlineCode",
                        "value": "hold"
                      },
                      {
                        "type": "text",
                        "value": " notification until it is handled and operation completes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_UNHOLD_LOCAL",
              "lineNumber": 36,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the local "
                      },
                      {
                        "type": "inlineCode",
                        "value": "unhold"
                      },
                      {
                        "type": "text",
                        "value": " operation starts until it has finished."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_UNHOLD_REMOTE",
              "lineNumber": 37,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the SDK receives a remote "
                      },
                      {
                        "type": "inlineCode",
                        "value": "unhold"
                      },
                      {
                        "type": "text",
                        "value": " notification until it is handled and operation completes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_COLLECT_ICE_CANDIDATES",
              "lineNumber": 38,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the local description is set to when all ICE candidates have been collected.\nThis metric is affected by the "
                      },
                      {
                        "type": "link",
                        "url": "#callrtcpeerconnectionconfig",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "iceCandidatePoolSize"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": " configuration. Collecting candidates ahead of time for the call will result in a shorter value for this metric, potentially resulting in it not being recorded if collection is not needed during call establishment."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_RELAY_CANDIDATES",
              "lineNumber": 40,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "ice collection"
                      },
                      {
                        "type": "text",
                        "value": " operation starts until each relay candidate has been recieved.\nThis metric is affected by the "
                      },
                      {
                        "type": "link",
                        "url": "#callrtcpeerconnectionconfig",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "iceCandidatePoolSize"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": " configuration. Collecting candidates ahead of time for the call will result in a shorter value for this metric, potentially resulting in it not being recorded if collection is not needed during call establishment."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_SEND_CUSTOM_PARAMETERS",
              "lineNumber": 42,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "send custom parameters"
                      },
                      {
                        "type": "text",
                        "value": " operation starts until it has finished."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_FORWARD",
              "lineNumber": 43,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "forward call"
                      },
                      {
                        "type": "text",
                        "value": " operation starts until it has finished."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_DIRECT_TRANSFER",
              "lineNumber": 44,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "direct transfer"
                      },
                      {
                        "type": "text",
                        "value": " operation starts until it has finished."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_CONSULTATIVE_TRANSFER",
              "lineNumber": 45,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "consultative transfer"
                      },
                      {
                        "type": "text",
                        "value": " operation starts until it has finished."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "TIME_TO_JOIN",
              "lineNumber": 46,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time it takes from when the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "join call"
                      },
                      {
                        "type": "text",
                        "value": " operation starts until it has finished."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "name": "metrics",
          "memberof": "call",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "metrics",
              "scope": "static"
            }
          ],
          "namespace": "call.metrics"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SIP URI ie: sip:"
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "mailto:joe@domain.com",
                    "children": [
                      {
                        "type": "text",
                        "value": "joe@domain.com"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "SIP_URI"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 6
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 7,
              "name": "link_user_id"
            }
          ],
          "loc": {
            "start": {
              "line": 11,
              "column": 0
            },
            "end": {
              "line": 19,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "SIP_URI",
          "type": {
            "type": "NameExpression",
            "name": "string"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "SIP_URI",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.SIP_URI"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The TEL URI ie: tel:+18885559876"
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "TEL_URI"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 6
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 7,
              "name": "link_pstn"
            }
          ],
          "loc": {
            "start": {
              "line": 21,
              "column": 0
            },
            "end": {
              "line": 29,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "TEL_URI",
          "type": {
            "type": "NameExpression",
            "name": "string"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "TEL_URI",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.TEL_URI"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Information about a Call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "#callgetall",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getAll"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 6
            },
            {
              "title": "module",
              "description": null,
              "lineNumber": 7,
              "type": null,
              "name": "CallObject"
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "CallObject"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 9
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 10,
              "name": "link_call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 11,
              "name": "callMe"
            },
            {
              "title": "property",
              "description": "The ID of the call.",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "id"
            },
            {
              "title": "property",
              "description": "A unique identifier (uri) of the person who made the call.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "user.UserID"
              },
              "name": "from"
            },
            {
              "title": "property",
              "description": "A unique identifier (uri) of the person who receives the call.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "user.UserID"
              },
              "name": "to"
            },
            {
              "title": "property",
              "description": "The direction in which the call was created. Can be 'outgoing' or 'incoming'.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "direction"
            },
            {
              "title": "property",
              "description": "The current state of the call. See {@link call.states} for possible states.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "state"
            },
            {
              "title": "property",
              "description": "The current status of the call's media connection. See {@link call.mediaConnectionStates} for possible states.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "mediaConnectionState"
            },
            {
              "title": "property",
              "description": "Indicates whether this call is currently being held locally.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "localHold"
            },
            {
              "title": "property",
              "description": "Indicates whether this call is currently being held remotely.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "remoteHold"
            },
            {
              "title": "property",
              "description": "A list of Track IDs that the call is sending to the remote participant.",
              "lineNumber": 20,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "localTracks"
            },
            {
              "title": "property",
              "description": "A list of Track IDs that the call is receiving from the remote participant.",
              "lineNumber": 21,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "remoteTracks"
            },
            {
              "title": "property",
              "description": "Information about what media was offered by the person who made the call.",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaOffered"
                }
              },
              "name": "mediaOffered"
            },
            {
              "title": "property",
              "description": "Information about the other call participant.",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "remoteParticipant"
            },
            {
              "title": "property",
              "description": "The User ID of the remote participant in the form \"username@domain\".",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "remoteParticipant.displayNumber"
            },
            {
              "title": "property",
              "description": "The display name of the remote participant.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "remoteParticipant.displayName"
            },
            {
              "title": "property",
              "description": "The bandwidth limitations set for the call.",
              "lineNumber": 26,
              "type": {
                "type": "NameExpression",
                "name": "call.BandwidthControls"
              },
              "name": "bandwidth"
            },
            {
              "title": "property",
              "description": "The locally set Custom Parameters for the call.",
              "lineNumber": 27,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.CustomParameter"
                  }
                ]
              },
              "name": "customParameters"
            },
            {
              "title": "property",
              "description": "The start time of the call in milliseconds since the epoch.",
              "lineNumber": 28,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "startTime"
            },
            {
              "title": "property",
              "description": "The end time of the call in milliseconds since the epoch.",
              "lineNumber": 29,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "endTime"
            },
            {
              "title": "property",
              "description": "The list of operations curently on-going for the call.",
              "lineNumber": 30,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                ]
              },
              "name": "currentOperations"
            }
          ],
          "loc": {
            "start": {
              "line": 31,
              "column": 0
            },
            "end": {
              "line": 62,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "id",
              "lineNumber": 12,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "from",
              "lineNumber": 13,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A unique identifier (uri) of the person who made the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "user.UserID"
              }
            },
            {
              "title": "property",
              "name": "to",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A unique identifier (uri) of the person who receives the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "user.UserID"
              }
            },
            {
              "title": "property",
              "name": "direction",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The direction in which the call was created. Can be 'outgoing' or 'incoming'."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "state",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The current state of the call. See "
                      },
                      {
                        "type": "link",
                        "url": "#callstates",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "call.states"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": " for possible states."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "mediaConnectionState",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The current status of the call's media connection. See "
                      },
                      {
                        "type": "link",
                        "url": "#callmediaconnectionstates",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "call.mediaConnectionStates"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": " for possible states."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "localHold",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Indicates whether this call is currently being held locally."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "property",
              "name": "remoteHold",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Indicates whether this call is currently being held remotely."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "property",
              "name": "localTracks",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of Track IDs that the call is sending to the remote participant."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            },
            {
              "title": "property",
              "name": "remoteTracks",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of Track IDs that the call is receiving from the remote participant."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            },
            {
              "title": "property",
              "name": "mediaOffered",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Information about what media was offered by the person who made the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaOffered"
                }
              }
            },
            {
              "title": "property",
              "name": "remoteParticipant",
              "lineNumber": 23,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Information about the other call participant."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "property",
                  "name": "remoteParticipant.displayNumber",
                  "lineNumber": 24,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The User ID of the remote participant in the form \"username@domain\"."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "property",
                  "name": "remoteParticipant.displayName",
                  "lineNumber": 25,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The display name of the remote participant."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                }
              ]
            },
            {
              "title": "property",
              "name": "bandwidth",
              "lineNumber": 26,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The bandwidth limitations set for the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "call.BandwidthControls"
              }
            },
            {
              "title": "property",
              "name": "customParameters",
              "lineNumber": 27,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The locally set Custom Parameters for the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.CustomParameter"
                  }
                ]
              }
            },
            {
              "title": "property",
              "name": "startTime",
              "lineNumber": 28,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The start time of the call in milliseconds since the epoch."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            },
            {
              "title": "property",
              "name": "endTime",
              "lineNumber": 29,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The end time of the call in milliseconds since the epoch."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              }
            },
            {
              "title": "property",
              "name": "currentOperations",
              "lineNumber": 30,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The list of operations curently on-going for the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                ]
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "CallObject",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "CallObject",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.CallObject"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The MediaConstraint type defines the format for configuring media options.\nEither the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "exact"
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "inlineCode",
                    "value": "ideal"
                  },
                  {
                    "type": "text",
                    "value": " property should be provided. If both are present, the\n"
                  },
                  {
                    "type": "inlineCode",
                    "value": "exact"
                  },
                  {
                    "type": "text",
                    "value": " value will be used."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "When the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "exact"
                  },
                  {
                    "type": "text",
                    "value": " value is provided, it will be the only value considered for the option.\nIf it cannot be used, the constraint will be considered an error."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "When the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "ideal"
                  },
                  {
                    "type": "text",
                    "value": " value is provided, it will be considered as the optimal value for the option.\nIf it cannot be used, the closest acceptable value will be used instead."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A string value can be provided directly instead of using the MediaConstraint format.\nUsing a string directly is not recommended, since behaviour may differ depending\non browser and media property. For most properties, a direct string value will be\nhandled as "
                  },
                  {
                    "type": "inlineCode",
                    "value": "ideal"
                  },
                  {
                    "type": "text",
                    "value": " behaviour, but some properties may follow the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "exact"
                  },
                  {
                    "type": "text",
                    "value": " behaviour\n(eg. "
                  },
                  {
                    "type": "inlineCode",
                    "value": "deviceId"
                  },
                  {
                    "type": "text",
                    "value": ")."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 17,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 18
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "MediaConstraint"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 20
            },
            {
              "title": "property",
              "description": "The required value for the constraint. Other values will not be accepted.",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "exact"
            },
            {
              "title": "property",
              "description": "The ideal value for the constraint. Other values will be considered if necessary.",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "ideal"
            },
            {
              "title": "example",
              "description": "// Specify video resolution when making a call.\nclient.call.make(destination, {\n   audio: true,\n   video: true,\n   videoOptions: {\n     // Set height and width constraints to ideally be 1280x720.\n     height: { ideal: 720 },\n     width: { ideal: 1280 }\n   }\n})",
              "lineNumber": 23
            }
          ],
          "loc": {
            "start": {
              "line": 64,
              "column": 0
            },
            "end": {
              "line": 98,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Specify video resolution when making a call.\nclient.call.make(destination, {\n   audio: true,\n   video: true,\n   videoOptions: {\n     // Set height and width constraints to ideally be 1280x720.\n     height: { ideal: 720 },\n     width: { ideal: 1280 }\n   }\n})"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "exact",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The required value for the constraint. Other values will not be accepted."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              }
            },
            {
              "title": "property",
              "name": "ideal",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ideal value for the constraint. Other values will be considered if necessary."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "MediaConstraint",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "MediaConstraint",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.MediaConstraint"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The AudioOptions type defines the format for specifying audio-related constraints."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "AudioOptions"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 6
            },
            {
              "title": "property",
              "description": "ID of the microphone to receive audio from.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "call.MediaConstraint"
              },
              "name": "deviceId"
            },
            {
              "title": "example",
              "description": "// Specify what specific microphone device to use by providing its device ID.\nclient.call.make(destination, {\n   audio: true,\n   audioOptions: { deviceId: 'some unique device ID' }\n})",
              "lineNumber": 8
            }
          ],
          "loc": {
            "start": {
              "line": 100,
              "column": 0
            },
            "end": {
              "line": 114,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Specify what specific microphone device to use by providing its device ID.\nclient.call.make(destination, {\n   audio: true,\n   audioOptions: { deviceId: 'some unique device ID' }\n})"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "deviceId",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the microphone to receive audio from."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "call.MediaConstraint"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "AudioOptions",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "AudioOptions",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.AudioOptions"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The VideoOptions type defines the format for specifying video-related constraints."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "VideoOptions"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 6
            },
            {
              "title": "property",
              "description": "ID of the camera to receive video from.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "call.MediaConstraint"
              },
              "name": "deviceId"
            },
            {
              "title": "property",
              "description": "The height of the video.",
              "lineNumber": 8,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "height"
            },
            {
              "title": "property",
              "description": "The width of the video.",
              "lineNumber": 9,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "width"
            },
            {
              "title": "property",
              "description": "The frame rate of the video.",
              "lineNumber": 10,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "frameRate"
            },
            {
              "title": "example",
              "description": "client.call.make(destination, {\n   video: true,\n   videoOptions: {\n     deviceId: 'some unique device ID',\n     // Set height and width constraints to exactly be 1280x720.\n     height: { exact: 720 },\n     width: { exact: 1280 },\n     frameRate: { exact: 24 }\n   }\n})",
              "lineNumber": 11
            }
          ],
          "loc": {
            "start": {
              "line": 116,
              "column": 0
            },
            "end": {
              "line": 138,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.call.make(destination, {\n   video: true,\n   videoOptions: {\n     deviceId: 'some unique device ID',\n     // Set height and width constraints to exactly be 1280x720.\n     height: { exact: 720 },\n     width: { exact: 1280 },\n     frameRate: { exact: 24 }\n   }\n})"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "deviceId",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of the camera to receive video from."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "call.MediaConstraint"
              }
            },
            {
              "title": "property",
              "name": "height",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The height of the video."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              }
            },
            {
              "title": "property",
              "name": "width",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The width of the video."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              }
            },
            {
              "title": "property",
              "name": "frameRate",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The frame rate of the video."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "VideoOptions",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "VideoOptions",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.VideoOptions"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The ScreenOptions type defines the format for specifying screen capturing-related constraints."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "ScreenOptions"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 6
            },
            {
              "title": "property",
              "description": "The height of the screen capture.",
              "lineNumber": 7,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "height"
            },
            {
              "title": "property",
              "description": "The width of the screen capture.",
              "lineNumber": 8,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "width"
            },
            {
              "title": "property",
              "description": "The frame rate of the live screen share.",
              "lineNumber": 9,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "frameRate"
            },
            {
              "title": "example",
              "description": "client.call.make(destination, {\n   screen: true,\n   screenOptions: {\n     // Set height and width constraints to exactly be 1280x720.\n     height: { exact: 720 },\n     width: { exact: 1280 },\n     frameRate: { exact: 24 }\n   }\n})",
              "lineNumber": 10
            }
          ],
          "loc": {
            "start": {
              "line": 140,
              "column": 0
            },
            "end": {
              "line": 160,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.call.make(destination, {\n   screen: true,\n   screenOptions: {\n     // Set height and width constraints to exactly be 1280x720.\n     height: { exact: 720 },\n     width: { exact: 1280 },\n     frameRate: { exact: 24 }\n   }\n})"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "height",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The height of the screen capture."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              }
            },
            {
              "title": "property",
              "name": "width",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The width of the screen capture."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              }
            },
            {
              "title": "property",
              "name": "frameRate",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The frame rate of the live screen share."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "ScreenOptions",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "ScreenOptions",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.ScreenOptions"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The MediaOffered type defines what media capabilities are offered by the person making a call.\nThis is an optional property and therefore may be null if it is not known or if it's associated with caller's side of the call."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 5
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "MediaOffered"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 7
            },
            {
              "title": "property",
              "description": "Specifies if any audio capability has been offered by the caller. If set to true, then the caller is capable of supporting at least one audio stream in the current call.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "audio"
            },
            {
              "title": "property",
              "description": "Specifies if any video capability has been offered by the caller. If set to true, then the caller is capable of supporting at least one video stream in the current call.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "video"
            }
          ],
          "loc": {
            "start": {
              "line": 162,
              "column": 0
            },
            "end": {
              "line": 172,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "audio",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Specifies if any audio capability has been offered by the caller. If set to true, then the caller is capable of supporting at least one audio stream in the current call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "property",
              "name": "video",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Specifies if any video capability has been offered by the caller. If set to true, then the caller is capable of supporting at least one video stream in the current call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "MediaOffered",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "MediaOffered",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.MediaOffered"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The BandwidthControls type defines the format for configuring media and/or track bandwidth options.\nBandwidthControls only affect received remote tracks of the specified type."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 5
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "BandwidthControls"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 7
            },
            {
              "title": "property",
              "description": "The desired combined bandwidth bitrate in kilobits per second for all media in the call.",
              "lineNumber": 8,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "call"
            },
            {
              "title": "property",
              "description": "The desired bandwidth bitrate in kilobits per second for received remote audio.",
              "lineNumber": 9,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "audio"
            },
            {
              "title": "property",
              "description": "The desired bandwidth bitrate in kilobits per second for received remote video.",
              "lineNumber": 10,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "video"
            },
            {
              "title": "example",
              "description": "// Specify received remote video bandwidth limits when making a call.\nclient.call.make(destination, mediaConstraints,\n {\n   bandwidth: {\n     video: 5\n   }\n }\n)",
              "lineNumber": 11
            }
          ],
          "loc": {
            "start": {
              "line": 174,
              "column": 0
            },
            "end": {
              "line": 194,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Specify received remote video bandwidth limits when making a call.\nclient.call.make(destination, mediaConstraints,\n {\n   bandwidth: {\n     video: 5\n   }\n }\n)"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "call",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The desired combined bandwidth bitrate in kilobits per second for all media in the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              }
            },
            {
              "title": "property",
              "name": "audio",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The desired bandwidth bitrate in kilobits per second for received remote audio."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              }
            },
            {
              "title": "property",
              "name": "video",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The desired bandwidth bitrate in kilobits per second for received remote video."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "BandwidthControls",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "BandwidthControls",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.BandwidthControls"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The DSCPControls type defines the format for configuring network priorities (DSCP marking) for the media traffic."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If DSCPControls are not configured for a call the network priority of the traffic for all media kinds will be the default (i.e., \"low\")."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 6
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "DSCPControls"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 8
            },
            {
              "title": "property",
              "description": "The desired network priority for audio traffic (see {@link https://www.w3.org/TR/webrtc-priority/#rtc-priority-type RTCPriorityType Enum} for the list of possible values).",
              "lineNumber": 9,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "RTCPriorityType"
                }
              },
              "name": "audioNetworkPriority",
              "default": "'low'"
            },
            {
              "title": "property",
              "description": "The desired network priority for video traffic (see {@link https://www.w3.org/TR/webrtc-priority/#rtc-priority-type RTCPriorityType Enum} for the list of possible values).",
              "lineNumber": 10,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "RTCPriorityType"
                }
              },
              "name": "videoNetworkPriority",
              "default": "'low'"
            },
            {
              "title": "property",
              "description": "The desired network priority for screen share traffic (see {@link https://www.w3.org/TR/webrtc-priority/#rtc-priority-type RTCPriorityType Enum} for the list of possible values).",
              "lineNumber": 11,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "RTCPriorityType"
                }
              },
              "name": "screenNetworkPriority",
              "default": "'low'"
            }
          ],
          "loc": {
            "start": {
              "line": 196,
              "column": 0
            },
            "end": {
              "line": 208,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "audioNetworkPriority",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The desired network priority for audio traffic (see "
                      },
                      {
                        "type": "link",
                        "url": "https://www.w3.org/TR/webrtc-priority/#rtc-priority-type",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "RTCPriorityType Enum"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": " for the list of possible values)."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "RTCPriorityType"
                }
              }
            },
            {
              "title": "property",
              "name": "videoNetworkPriority",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The desired network priority for video traffic (see "
                      },
                      {
                        "type": "link",
                        "url": "https://www.w3.org/TR/webrtc-priority/#rtc-priority-type",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "RTCPriorityType Enum"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": " for the list of possible values)."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "RTCPriorityType"
                }
              }
            },
            {
              "title": "property",
              "name": "screenNetworkPriority",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The desired network priority for screen share traffic (see "
                      },
                      {
                        "type": "link",
                        "url": "https://www.w3.org/TR/webrtc-priority/#rtc-priority-type",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "RTCPriorityType Enum"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": " for the list of possible values)."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "RTCPriorityType"
                }
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "DSCPControls",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "DSCPControls",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.DSCPControls"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Configuration options for an RTCPeerConnection.\nIt represents an RTCPeerConfiguration dictionary, whose parameters are documented "
                  },
                  {
                    "type": "link",
                    "url": "https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection#parameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "here"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "RTCPeerConnectionConfig"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": "The list of ICE servers to be used for calls.\n  The full set of properties defined for an RTCIceServer, are mentioned\n  {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer#properties here}.",
              "lineNumber": 7,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "RTCIceServer"
                    }
                  ]
                }
              },
              "name": "iceServers"
            },
            {
              "title": "param",
              "description": "The sdpSemantics to use (`'unified-plan'` or `'plan-b'`).\n  As 'plan-b' has become a deprecated option, it will therefore be removed in the future.",
              "lineNumber": 10,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "sdpSemantics",
              "default": "'unified-plan'"
            },
            {
              "title": "param",
              "description": "An unsigned 16-bit integer value which specifies\n  the size of the prefetched ICE candidate pool. With a value greater than 0, the SDK will attempt to collect ICE candidates ahead of time for a call to speed up call establishment time.\n\nThe default value of 1 is optimized for audio-only calls. A value of 2 can be provided to optimize for audio+video calls. A value of 0 can be provided to disable this feature.",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "iceCandidatePoolSize",
              "default": "1"
            },
            {
              "title": "param",
              "description": "The current ICE transport policy; if the policy isn't specified,\n  'all' is assumed by default. Possible values are: 'all', 'public', 'relay'.",
              "lineNumber": 16,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "iceTransportPolicy"
            },
            {
              "title": "param",
              "description": "For further description on this and other properties,\n  see {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection#parameters RTCPeerConnection's configuration parameters}.",
              "lineNumber": 18,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "bundlePolicy"
            }
          ],
          "loc": {
            "start": {
              "line": 210,
              "column": 0
            },
            "end": {
              "line": 230,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "iceServers",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The list of ICE servers to be used for calls.\nThe full set of properties defined for an RTCIceServer, are mentioned\n"
                      },
                      {
                        "type": "link",
                        "url": "https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer#properties",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "here"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": "."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "RTCIceServer"
                    }
                  ]
                }
              }
            },
            {
              "title": "param",
              "name": "sdpSemantics",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The sdpSemantics to use ("
                      },
                      {
                        "type": "inlineCode",
                        "value": "'unified-plan'"
                      },
                      {
                        "type": "text",
                        "value": " or "
                      },
                      {
                        "type": "inlineCode",
                        "value": "'plan-b'"
                      },
                      {
                        "type": "text",
                        "value": ").\nAs 'plan-b' has become a deprecated option, it will therefore be removed in the future."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "default": "'unified-plan'"
            },
            {
              "title": "param",
              "name": "iceCandidatePoolSize",
              "lineNumber": 12,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An unsigned 16-bit integer value which specifies\nthe size of the prefetched ICE candidate pool. With a value greater than 0, the SDK will attempt to collect ICE candidates ahead of time for a call to speed up call establishment time."
                      }
                    ]
                  },
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The default value of 1 is optimized for audio-only calls. A value of 2 can be provided to optimize for audio+video calls. A value of 0 can be provided to disable this feature."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "default": "1"
            },
            {
              "title": "param",
              "name": "iceTransportPolicy",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The current ICE transport policy; if the policy isn't specified,\n'all' is assumed by default. Possible values are: 'all', 'public', 'relay'."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              }
            },
            {
              "title": "param",
              "name": "bundlePolicy",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "For further description on this and other properties,\nsee "
                      },
                      {
                        "type": "link",
                        "url": "https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection#parameters",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "RTCPeerConnection's configuration parameters"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": "."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "RTCPeerConnectionConfig",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "RTCPeerConnectionConfig",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.RTCPeerConnectionConfig"
        },
        {
          "description": "",
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 1,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 2
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 3,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "IceServer"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 4
            },
            {
              "title": "property",
              "description": "Either an array of URLs for reaching out several ICE servers or a single URL for reaching one ICE server. See {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer/urls RTCIceServers.urls documentation} to learn more about the actual url format.\nStarting with Chromium 110, TURN(S) urls must only contain a transport\nparameter in the query section and STUN urls must not specify any query section.",
              "lineNumber": 5,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  },
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "urls"
            },
            {
              "title": "property",
              "description": "The credential needed by the ICE server.",
              "lineNumber": 8,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "credential"
            },
            {
              "title": "property",
              "description": "The credential needed by the ICE server.",
              "lineNumber": 9,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "username"
            }
          ],
          "loc": {
            "start": {
              "line": 232,
              "column": 0
            },
            "end": {
              "line": 242,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "urls",
              "lineNumber": 5,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Either an array of URLs for reaching out several ICE servers or a single URL for reaching one ICE server. See "
                      },
                      {
                        "type": "link",
                        "url": "https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer/urls",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "RTCIceServers.urls documentation"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": " to learn more about the actual url format.\nStarting with Chromium 110, TURN(S) urls must only contain a transport\nparameter in the query section and STUN urls must not specify any query section."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  },
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            },
            {
              "title": "property",
              "name": "credential",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The credential needed by the ICE server."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              }
            },
            {
              "title": "property",
              "name": "username",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The credential needed by the ICE server."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "IceServer",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "IceServer",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.IceServer"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This object is provided to the "
                  },
                  {
                    "type": "link",
                    "url": "#callicecollectioncheckfunction",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "IceCollectionCheckFunction"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ", and contains the\nnecessary information about the call (i.e., call ID, current call operation), and information about the ongoing ICE collection,\nsuch as the list of all ICE candidates collected so far and the ICE gathering state."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 6
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "IceCollectionInfo"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 8
            },
            {
              "title": "property",
              "description": "The ID of the call.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "property",
              "description": "The current operation of the call.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callOperation"
            },
            {
              "title": "property",
              "description": "The reason the check function was called. Three possible values:\n 'NewCandidate' - A new ICE candidate was collected. Note: there may be multiple new ICE candidates collected.\n 'IceGatheringStateChanged' - The ICE gathering state changed.\n 'Scheduled' - A scheduled call (for first invocation, and subsequent invocations based on `wait` value returned by {@link call.IceCollectionCheckFunction IceCollectionCheckFunction}.)",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "reason"
            },
            {
              "title": "property",
              "description": "An array of all ICE candidates collected so far.",
              "lineNumber": 15,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "RTCIceCandidate"
                  }
                ]
              },
              "name": "iceCandidates"
            },
            {
              "title": "property",
              "description": "The time elapsed since the start of the ICE collection process.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "iceCollectionDuration"
            },
            {
              "title": "property",
              "description": "The current ICE gathering state.\n   See {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState RTCPeerConnection.iceGatheringState}.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "iceGatheringState"
            },
            {
              "title": "property",
              "description": "The current configration for the RTCPeerConnection.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "rtcPeerConnectionConfig"
            },
            {
              "title": "property",
              "description": "The current local session description set on the peer.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "rtcLocalSessionDescription"
            }
          ],
          "loc": {
            "start": {
              "line": 244,
              "column": 0
            },
            "end": {
              "line": 265,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "callId",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "callOperation",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The current operation of the call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "reason",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The reason the check function was called. Three possible values:\n'NewCandidate' - A new ICE candidate was collected. Note: there may be multiple new ICE candidates collected.\n'IceGatheringStateChanged' - The ICE gathering state changed.\n'Scheduled' - A scheduled call (for first invocation, and subsequent invocations based on "
                      },
                      {
                        "type": "inlineCode",
                        "value": "wait"
                      },
                      {
                        "type": "text",
                        "value": " value returned by "
                      },
                      {
                        "type": "link",
                        "url": "#callicecollectioncheckfunction",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "IceCollectionCheckFunction"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": ".)"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "iceCandidates",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An array of all ICE candidates collected so far."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "RTCIceCandidate"
                  }
                ]
              }
            },
            {
              "title": "property",
              "name": "iceCollectionDuration",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The time elapsed since the start of the ICE collection process."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            },
            {
              "title": "property",
              "name": "iceGatheringState",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The current ICE gathering state.\nSee "
                      },
                      {
                        "type": "link",
                        "url": "https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "RTCPeerConnection.iceGatheringState"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": "."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "rtcPeerConnectionConfig",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The current configration for the RTCPeerConnection."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "property",
              "name": "rtcLocalSessionDescription",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The current local session description set on the peer."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "IceCollectionInfo",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "IceCollectionInfo",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.IceCollectionInfo"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The form of the ICE collection check function, the arguments that it receives, and the outputs expected."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This function is provided the necessary details of the current WebRTC session and ICE collection\n("
                  },
                  {
                    "type": "link",
                    "url": "#callicecollectioninfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "IceCollectionInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "), which it can use to dictate how to proceed with a call.\nThe function can be invoked for three different reasons:\na new ICE candidate was collected, the ICE gathering state changed, or a scheduled call based on the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "wait"
                  },
                  {
                    "type": "text",
                    "value": " time set after\nan initial invocation of the function."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The function must then return an appropriate result object in the format of "
                  },
                  {
                    "type": "link",
                    "url": "#callicecollectioncheckresult",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "IceCollectionCheckResult"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nwhich will dictate how the call will proceed. An incorrect return object, or result "
                  },
                  {
                    "type": "inlineCode",
                    "value": "type"
                  },
                  {
                    "type": "text",
                    "value": ", will cause the call to end with an error."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "[Default]\nThe default IceCollectionCheckFunction uses the following algorithm to determine if the call can proceed to negotiation:"
                  }
                ]
              },
              {
                "type": "list",
                "ordered": true,
                "start": 1,
                "spread": false,
                "children": [
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "If the "
                          },
                          {
                            "type": "inlineCode",
                            "value": "iceGatheringState"
                          },
                          {
                            "type": "text",
                            "value": " is \"complete\" at any stage, then:"
                          }
                        ]
                      },
                      {
                        "type": "list",
                        "ordered": false,
                        "start": null,
                        "spread": false,
                        "children": [
                          {
                            "type": "listItem",
                            "spread": false,
                            "checked": null,
                            "children": [
                              {
                                "type": "paragraph",
                                "children": [
                                  {
                                    "type": "text",
                                    "value": "Proceed with the negotiation if any ICE candidates are collected."
                                  }
                                ]
                              }
                            ]
                          },
                          {
                            "type": "listItem",
                            "spread": false,
                            "checked": null,
                            "children": [
                              {
                                "type": "paragraph",
                                "children": [
                                  {
                                    "type": "text",
                                    "value": "Or, end the call if there are no ICE candidates collected."
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Otherwise, if before the ideal ICE collection timeout:"
                          }
                        ]
                      },
                      {
                        "type": "list",
                        "ordered": false,
                        "start": null,
                        "spread": false,
                        "children": [
                          {
                            "type": "listItem",
                            "spread": false,
                            "checked": null,
                            "children": [
                              {
                                "type": "paragraph",
                                "children": [
                                  {
                                    "type": "text",
                                    "value": "If every media has a relay ICE candidate for every configured TURN server, proceed with negotiation."
                                  }
                                ]
                              }
                            ]
                          },
                          {
                            "type": "listItem",
                            "spread": false,
                            "checked": null,
                            "children": [
                              {
                                "type": "paragraph",
                                "children": [
                                  {
                                    "type": "text",
                                    "value": "Else, wait until the ideal timeout, or when invoked for another reason."
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Otherwise, if before the max ICE collection timeout, but after the ideal ICE collection timeout:"
                          }
                        ]
                      },
                      {
                        "type": "list",
                        "ordered": false,
                        "start": null,
                        "spread": false,
                        "children": [
                          {
                            "type": "listItem",
                            "spread": false,
                            "checked": null,
                            "children": [
                              {
                                "type": "paragraph",
                                "children": [
                                  {
                                    "type": "text",
                                    "value": "If every media has atleast one relay ICE candidate, proceed with negotiation."
                                  }
                                ]
                              }
                            ]
                          },
                          {
                            "type": "listItem",
                            "spread": false,
                            "checked": null,
                            "children": [
                              {
                                "type": "paragraph",
                                "children": [
                                  {
                                    "type": "text",
                                    "value": "Else, wait until max timeout, or when invoked for another reason."
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Otherwise, if we are at, or past, the max ICE collection timeout:"
                          }
                        ]
                      },
                      {
                        "type": "list",
                        "ordered": false,
                        "start": null,
                        "spread": false,
                        "children": [
                          {
                            "type": "listItem",
                            "spread": false,
                            "checked": null,
                            "children": [
                              {
                                "type": "paragraph",
                                "children": [
                                  {
                                    "type": "text",
                                    "value": "If there are any ICE candidates collected, proceed with negotiation."
                                  }
                                ]
                              }
                            ]
                          },
                          {
                            "type": "listItem",
                            "spread": false,
                            "checked": null,
                            "children": [
                              {
                                "type": "paragraph",
                                "children": [
                                  {
                                    "type": "text",
                                    "value": "Else, end the call with an error."
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The ideal and max timeouts can be configured with the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "idealIceCollectionTimeout"
                  },
                  {
                    "type": "text",
                    "value": " and "
                  },
                  {
                    "type": "inlineCode",
                    "value": "maxIceCollectionTimeout"
                  },
                  {
                    "type": "text",
                    "value": " properties of\nthe call config."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 29,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 30
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 31,
              "type": {
                "type": "NameExpression",
                "name": "Function"
              },
              "name": "IceCollectionCheckFunction"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 32
            },
            {
              "title": "param",
              "description": "Information about the current status of the ICE candidate collection.",
              "lineNumber": 33,
              "type": {
                "type": "NameExpression",
                "name": "call.IceCollectionInfo"
              },
              "name": "iceCollectionInfo"
            },
            {
              "title": "param",
              "description": "Configurations provided to the SDK for ICE collection timeout boundaries.",
              "lineNumber": 34,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "iceTimeouts"
            },
            {
              "title": "param",
              "description": "The amount of time to wait for ideal candidates, in\n     milliseconds.  See {@link config#config.call config.call} for more information.",
              "lineNumber": 35,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "iceTimeouts.iceCollectionIdealTimeout"
            },
            {
              "title": "param",
              "description": "The maximum amount of time to wait for ICE collection,\n     in milliseconds. See {@link config#config.call config.call} for more information.",
              "lineNumber": 37,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "iceTimeouts.iceCollectionMaxTimeout"
            },
            {
              "title": "returns",
              "description": "Information on how to proceed with the call and/or ICE collection.",
              "lineNumber": 39,
              "type": {
                "type": "NameExpression",
                "name": "call.IceCollectionCheckResult"
              }
            },
            {
              "title": "example",
              "description": "function isRelayCandidate (candidate) {\n// NOTE: This would need to be different for Firefox since the `.type` property doesn't exist\n// and we would need to parse it ourselves in the `.candidate` property.\n  return candidate.type === 'relay'\n}\n\nfunction myIceCollectionCheck ({ iceGatheringState, iceCandidates }, iceTimeouts) {\n  if (iceGatheringState === 'complete') {\n    if (iceCandidates.some(isRelayCandidate)) {\n      return { type: 'StartCall' }\n    } else {\n      return { type: 'Error', error: new Error('Failed to start call because there is no relay candidates.') }\n    }\n  } else {\n    return { type: 'Wait' }\n  }\n}",
              "lineNumber": 40
            }
          ],
          "loc": {
            "start": {
              "line": 267,
              "column": 0
            },
            "end": {
              "line": 325,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "function isRelayCandidate (candidate) {\n// NOTE: This would need to be different for Firefox since the `.type` property doesn't exist\n// and we would need to parse it ourselves in the `.candidate` property.\n  return candidate.type === 'relay'\n}\n\nfunction myIceCollectionCheck ({ iceGatheringState, iceCandidates }, iceTimeouts) {\n  if (iceGatheringState === 'complete') {\n    if (iceCandidates.some(isRelayCandidate)) {\n      return { type: 'StartCall' }\n    } else {\n      return { type: 'Error', error: new Error('Failed to start call because there is no relay candidates.') }\n    }\n  } else {\n    return { type: 'Wait' }\n  }\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "iceCollectionInfo",
              "lineNumber": 33,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Information about the current status of the ICE candidate collection."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "call.IceCollectionInfo"
              }
            },
            {
              "title": "param",
              "name": "iceTimeouts",
              "lineNumber": 34,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Configurations provided to the SDK for ICE collection timeout boundaries."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "iceTimeouts.iceCollectionIdealTimeout",
                  "lineNumber": 35,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The amount of time to wait for ideal candidates, in\nmilliseconds.  See "
                          },
                          {
                            "type": "link",
                            "url": "#configconfigcall",
                            "title": null,
                            "jsdoc": true,
                            "children": [
                              {
                                "type": "text",
                                "value": "config.call"
                              }
                            ]
                          },
                          {
                            "type": "text",
                            "value": " for more information."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  }
                },
                {
                  "title": "param",
                  "name": "iceTimeouts.iceCollectionMaxTimeout",
                  "lineNumber": 37,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The maximum amount of time to wait for ICE collection,\nin milliseconds. See "
                          },
                          {
                            "type": "link",
                            "url": "#configconfigcall",
                            "title": null,
                            "jsdoc": true,
                            "children": [
                              {
                                "type": "text",
                                "value": "config.call"
                              }
                            ]
                          },
                          {
                            "type": "text",
                            "value": " for more information."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Information on how to proceed with the call and/or ICE collection."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "call.IceCollectionCheckResult"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "IceCollectionCheckFunction",
          "type": {
            "type": "NameExpression",
            "name": "Function"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "IceCollectionCheckFunction",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.IceCollectionCheckFunction"
        },
        {
          "description": "",
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 1,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 2
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 3,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "IceCollectionCheckResult"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 4
            },
            {
              "title": "property",
              "description": "Indicates how the system should proceed with the call operation / ICE collection. The possible values are:\n   'StartCall' - instruct the system to start the call with the currently gathered ICE candidates and other information.\n   'Error' - instruct the system to fail the call with an error. The error to communicate to the user should be specified in the `error` property.\n   'Wait' - instruct the system to wait for the specified amount of time before triggering a new ICE collection check. The amount\n       of wait time should be specified in the `wait` property.",
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "type"
            },
            {
              "title": "property",
              "description": "An error to be sent the user when the `type` of the result is `IceCollectionCheckResultType.Error`",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "error"
            },
            {
              "title": "property",
              "description": "The amount of time (in milliseconds) to wait before triggering a new ICE collection check. This is only\n   valid if the `type` of result is `IceCollectionCheckResultType.Wait`. If a value is not provided, the ICE collection check function\n   will only be triggered for new candidates or when the ICE gathering state changes.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "wait"
            }
          ],
          "loc": {
            "start": {
              "line": 327,
              "column": 0
            },
            "end": {
              "line": 341,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "type",
              "lineNumber": 5,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Indicates how the system should proceed with the call operation / ICE collection. The possible values are:\n'StartCall' - instruct the system to start the call with the currently gathered ICE candidates and other information.\n'Error' - instruct the system to fail the call with an error. The error to communicate to the user should be specified in the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "error"
                      },
                      {
                        "type": "text",
                        "value": " property.\n'Wait' - instruct the system to wait for the specified amount of time before triggering a new ICE collection check. The amount\nof wait time should be specified in the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "wait"
                      },
                      {
                        "type": "text",
                        "value": " property."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "error",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An error to be sent the user when the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "type"
                      },
                      {
                        "type": "text",
                        "value": " of the result is "
                      },
                      {
                        "type": "inlineCode",
                        "value": "IceCollectionCheckResultType.Error"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "wait",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The amount of time (in milliseconds) to wait before triggering a new ICE collection check. This is only\nvalid if the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "type"
                      },
                      {
                        "type": "text",
                        "value": " of result is "
                      },
                      {
                        "type": "inlineCode",
                        "value": "IceCollectionCheckResultType.Wait"
                      },
                      {
                        "type": "text",
                        "value": ". If a value is not provided, the ICE collection check function\nwill only be triggered for new candidates or when the ICE gathering state changes."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "IceCollectionCheckResult",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "IceCollectionCheckResult",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.IceCollectionCheckResult"
        },
        {
          "description": "",
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 1,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 2
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 3,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "SdpHandlerInfo"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 4
            },
            {
              "title": "property",
              "description": "The id corresponding to the call for which the handler is being run.",
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "property",
              "description": "The session description's type.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "RTCSdpType"
              },
              "name": "type"
            },
            {
              "title": "property",
              "description": "The step that will occur after the SDP Handlers are run.\n   Will be either 'set' (the SDP will be set locally) or 'send' (the SDP will\n   be sent to the remote endpoint).",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "step"
            },
            {
              "title": "property",
              "description": "Which end of the connection created the SDP.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "endpoint"
            }
          ],
          "loc": {
            "start": {
              "line": 343,
              "column": 0
            },
            "end": {
              "line": 354,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "callId",
              "lineNumber": 5,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The id corresponding to the call for which the handler is being run."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "type",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The session description's type."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "RTCSdpType"
              }
            },
            {
              "title": "property",
              "name": "step",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The step that will occur after the SDP Handlers are run.\nWill be either 'set' (the SDP will be set locally) or 'send' (the SDP will\nbe sent to the remote endpoint)."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "endpoint",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Which end of the connection created the SDP."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "SdpHandlerInfo",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "SdpHandlerInfo",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.SdpHandlerInfo"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The form of an SDP handler function and the expected arguments that it receives."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 4,
              "type": {
                "type": "NameExpression",
                "name": "Function"
              },
              "name": "SdpHandlerFunction"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 5
            },
            {
              "title": "param",
              "description": "The SDP so far (could have been modified by previous handlers).",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "newSdp"
            },
            {
              "title": "param",
              "description": "Additional information that might be useful when making SDP modifications.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "call.SdpHandlerInfo"
              },
              "name": "info"
            },
            {
              "title": "param",
              "description": "The SDP in its initial state.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "originalSdp"
            },
            {
              "title": "returns",
              "description": "The resulting modified SDP based on the changes made by this function.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 356,
              "column": 0
            },
            "end": {
              "line": 366,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "newSdp",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The SDP so far (could have been modified by previous handlers)."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "param",
              "name": "info",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Additional information that might be useful when making SDP modifications."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "call.SdpHandlerInfo"
              }
            },
            {
              "title": "param",
              "name": "originalSdp",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The SDP in its initial state."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The resulting modified SDP based on the changes made by this function."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "SdpHandlerFunction",
          "type": {
            "type": "NameExpression",
            "name": "Function"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "SdpHandlerFunction",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.SdpHandlerFunction"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The state representation of a Media object.\nMedia is a collection of Track objects."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 5
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "MediaObject"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 7
            },
            {
              "title": "property",
              "description": "The ID of the Media object.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "id"
            },
            {
              "title": "property",
              "description": "Indicator on whether this media is local or remote.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "local"
            },
            {
              "title": "property",
              "description": "Indicator on whether this media contains detached tracks.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "detached"
            },
            {
              "title": "property",
              "description": "A list of track IDs representing the Track objects contained in this Media object.",
              "lineNumber": 11,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "tracks"
            }
          ],
          "loc": {
            "start": {
              "line": 368,
              "column": 0
            },
            "end": {
              "line": 380,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "id",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the Media object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "local",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Indicator on whether this media is local or remote."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "property",
              "name": "detached",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Indicator on whether this media contains detached tracks."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "property",
              "name": "tracks",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of track IDs representing the Track objects contained in this Media object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "MediaObject",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "MediaObject",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.MediaObject"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Track is a stream of audio or video media from a single source.\nTracks can be retrieved using the Media module's "
                  },
                  {
                    "type": "inlineCode",
                    "value": "getTrackById"
                  },
                  {
                    "type": "text",
                    "value": " API and manipulated with other functions of the Media module."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 5
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "TrackObject"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 7
            },
            {
              "title": "property",
              "description": "The list of CSS selectors that were used to render this Track.",
              "lineNumber": 8,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "containers"
            },
            {
              "title": "property",
              "description": "Indicator of whether this Track is disabled or not. If disabled, it cannot be re-enabled.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "disabled"
            },
            {
              "title": "property",
              "description": "Indicator of whether this Track is a locally created one or is a remote one.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "isLocal"
            },
            {
              "title": "property",
              "description": "The ID of the Track.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "id"
            },
            {
              "title": "property",
              "description": "The kind of Track this is (audio, video).",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "kind"
            },
            {
              "title": "property",
              "description": "The label of the device this Track uses.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "label"
            },
            {
              "title": "property",
              "description": "Indicator on whether this Track is muted or not.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "muted"
            },
            {
              "title": "property",
              "description": "Indicator on whether this Track is receiving media from its source or not.\n   When true, the Track can be considered removed. This indicator is affected by actions outside the\n   control of the SDK, such as the remote endpoint of a Call stopping to send media for a remote Track,\n   or the browser temporarily disabling the SDK's access to a local Track's source.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "sourceMuted"
            },
            {
              "title": "property",
              "description": "The state of this Track. Can be 'live' or 'ended'.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "state"
            },
            {
              "title": "property",
              "description": "The ID of the Media Stream that includes this Track.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "streamId"
            }
          ],
          "loc": {
            "start": {
              "line": 382,
              "column": 0
            },
            "end": {
              "line": 403,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "containers",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The list of CSS selectors that were used to render this Track."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            },
            {
              "title": "property",
              "name": "disabled",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Indicator of whether this Track is disabled or not. If disabled, it cannot be re-enabled."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "property",
              "name": "isLocal",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Indicator of whether this Track is a locally created one or is a remote one."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "property",
              "name": "id",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the Track."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "kind",
              "lineNumber": 12,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The kind of Track this is (audio, video)."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "label",
              "lineNumber": 13,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The label of the device this Track uses."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "muted",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Indicator on whether this Track is muted or not."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "property",
              "name": "sourceMuted",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Indicator on whether this Track is receiving media from its source or not.\nWhen true, the Track can be considered removed. This indicator is affected by actions outside the\ncontrol of the SDK, such as the remote endpoint of a Call stopping to send media for a remote Track,\nor the browser temporarily disabling the SDK's access to a local Track's source."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "property",
              "name": "state",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The state of this Track. Can be 'live' or 'ended'."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "streamId",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the Media Stream that includes this Track."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "TrackObject",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "TrackObject",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.TrackObject"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A collection of media devices and their information."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "DevicesObject"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 6
            },
            {
              "title": "property",
              "description": "A list of camera device information.",
              "lineNumber": 7,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.DeviceInfo"
                  }
                ]
              },
              "name": "camera"
            },
            {
              "title": "property",
              "description": "A list of microphone device information.",
              "lineNumber": 8,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.DeviceInfo"
                  }
                ]
              },
              "name": "microphone"
            },
            {
              "title": "property",
              "description": "A list of speaker device information.",
              "lineNumber": 9,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.DeviceInfo"
                  }
                ]
              },
              "name": "speaker"
            }
          ],
          "loc": {
            "start": {
              "line": 405,
              "column": 0
            },
            "end": {
              "line": 415,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "camera",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of camera device information."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.DeviceInfo"
                  }
                ]
              }
            },
            {
              "title": "property",
              "name": "microphone",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of microphone device information."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.DeviceInfo"
                  }
                ]
              }
            },
            {
              "title": "property",
              "name": "speaker",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of speaker device information."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.DeviceInfo"
                  }
                ]
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "DevicesObject",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "DevicesObject",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.DevicesObject"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Contains information about a device."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "DeviceInfo"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 6
            },
            {
              "title": "property",
              "description": "The ID of the device.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "deviceId"
            },
            {
              "title": "property",
              "description": "The group ID of the device. Devices that share a `groupId` belong to the same physical device.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "groupId"
            },
            {
              "title": "property",
              "description": "The type of the device (audioinput, audiooutput, videoinput).",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "kind"
            },
            {
              "title": "property",
              "description": "The name of the device.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "label"
            }
          ],
          "loc": {
            "start": {
              "line": 417,
              "column": 0
            },
            "end": {
              "line": 428,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "deviceId",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the device."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "groupId",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The group ID of the device. Devices that share a "
                      },
                      {
                        "type": "inlineCode",
                        "value": "groupId"
                      },
                      {
                        "type": "text",
                        "value": " belong to the same physical device."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "kind",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The type of the device (audioinput, audiooutput, videoinput)."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "label",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The name of the device."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "DeviceInfo",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "DeviceInfo",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.DeviceInfo"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Custom SIP headers can be used to convey additional information to a SIP endpoint."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Any SIP header can be used as a custom parameter, such as X-Headers or proprietary headers. However, if the defined\nheader name conflicts with another SIP header name in the SIP message, the existing SIP header will be removed\nand the application's custom SIP header will be added to the message."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "These parameters must be configured on the WebRTC Gateway prior to making a REST request, otherwise the request will\nfail when trying to include the parameters. The WebRTC Gateway does not impose limitations on the length of a\nheader. See the Gateway documentation for more information."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "These parameters can be provided in the "
                  },
                  {
                    "type": "link",
                    "url": "#callmake",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.make"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " and "
                  },
                  {
                    "type": "link",
                    "url": "#callanswer",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.answer"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs, to be included during call\nestablishment. They can also be set on the call after it is established using the "
                  },
                  {
                    "type": "link",
                    "url": "#callsetcustomparameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.setCustomParameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nAPI, then sent using the "
                  },
                  {
                    "type": "link",
                    "url": "#callsendcustomparameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.sendCustomParameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Custom parameters may be received anytime throughout the duration a call. A remote endpoint may send custom headers\nwhen starting a call, answering a call, or during call updates such as hold/unhold and addition/removal of media\nin the call. When these custom headers are received, the SDK will emit a\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallcustomparameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:customParameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event which will contain the custom parameters that\nwere received."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Custom parameters set on a call are stored on its "
                  },
                  {
                    "type": "link",
                    "url": "#callcallobject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "CallObject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ", which can be retrieved using\n"
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "link",
                    "url": "#callgetall",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getAll"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs. These are the parameters that will be sent to the remote\nendpoint of the call. Parameters received from a call are not stored as part of the\n"
                  },
                  {
                    "type": "link",
                    "url": "#callcallobject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "CallObject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ", and are only provided via the\n"
                  },
                  {
                    "type": "link",
                    "url": "#calleventcallcustomparameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:customParameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 27,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 28
            },
            {
              "title": "module",
              "description": null,
              "lineNumber": 29,
              "type": null,
              "name": "CustomParameter"
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 30,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "CustomParameter"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 31
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 32,
              "name": "link_call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 33,
              "name": "callMe"
            },
            {
              "title": "property",
              "description": "The name of the SIP header.",
              "lineNumber": 34,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "name"
            },
            {
              "title": "property",
              "description": "The value of the SIP header.",
              "lineNumber": 35,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "value"
            },
            {
              "title": "example",
              "description": "// Specify custom SIP headers to be sent when making a call.\nclient.call.make(destination, mediaConstraints,\n {\n   customParameters: [\n     {\n       name: 'X-GPS',\n       value: '51.759028,-1.213278'\n     },\n     {\n       name: 'X-Caller-ID',\n       value: 'Coombs,Ernie'\n     },\n     {\n       name: 'User-to-User',\n       value: '48656c6c6f2c20576f726c6421;encoding=hex'\n     }\n   ]\n }\n)\n\n// Receive custom parameters from the remote endpoint of a call.\nclient.on('call:customParameters', params => {\n  const { callId, customParameters } = params\n  log(`Received custom parameters from call ${callId}:`, customParameters)\n})",
              "lineNumber": 36
            }
          ],
          "loc": {
            "start": {
              "line": 430,
              "column": 0
            },
            "end": {
              "line": 492,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 535,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/call/docs.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Specify custom SIP headers to be sent when making a call.\nclient.call.make(destination, mediaConstraints,\n {\n   customParameters: [\n     {\n       name: 'X-GPS',\n       value: '51.759028,-1.213278'\n     },\n     {\n       name: 'X-Caller-ID',\n       value: 'Coombs,Ernie'\n     },\n     {\n       name: 'User-to-User',\n       value: '48656c6c6f2c20576f726c6421;encoding=hex'\n     }\n   ]\n }\n)\n\n// Receive custom parameters from the remote endpoint of a call.\nclient.on('call:customParameters', params => {\n  const { callId, customParameters } = params\n  log(`Received custom parameters from call ${callId}:`, customParameters)\n})"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "name",
              "lineNumber": 34,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The name of the SIP header."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "value",
              "lineNumber": 35,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The value of the SIP header."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "CustomParameter",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call",
              "kind": "namespace"
            },
            {
              "name": "CustomParameter",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.CustomParameter"
        }
      ]
    },
    "path": [
      {
        "name": "call",
        "kind": "namespace"
      }
    ],
    "namespace": "call"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'call.history' namespace is used to retrieve and inspect the authenticated\nusers call logs."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "Functions below are all part of this namespace."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 6,
        "type": null
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 7,
        "type": null,
        "name": "callHistory"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 9,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 10,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/callHistory/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "callHistory",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Call history state has been updated. See "
                  },
                  {
                    "type": "link",
                    "url": "#callhistoryget",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "CallHistory.get"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " to retrieve new state."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "memberof",
              "description": "callHistory",
              "lineNumber": 3
            },
            {
              "title": "event",
              "description": "callHistory:change",
              "lineNumber": 4
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 6,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 7,
                "column": 0
              },
              "end": {
                "line": 7,
                "column": 55
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/callHistory/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "callHistory",
          "kind": "event",
          "name": "callHistory:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "callHistory",
              "kind": "namespace"
            },
            {
              "name": "callHistory:change",
              "kind": "event"
            }
          ],
          "namespace": "callHistory.event:callHistory:change"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An error occurred while performing a call history operation."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "memberof",
              "description": "callHistory",
              "lineNumber": 3
            },
            {
              "title": "event",
              "description": "callHistory:error",
              "lineNumber": 4
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "api.BasicError"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 9,
              "column": 0
            },
            "end": {
              "line": 16,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 17,
                "column": 0
              },
              "end": {
                "line": 17,
                "column": 53
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/callHistory/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 6,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "api.BasicError"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "callHistory",
          "kind": "event",
          "name": "callHistory:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "callHistory",
              "kind": "namespace"
            },
            {
              "name": "callHistory:error",
              "kind": "event"
            }
          ],
          "namespace": "callHistory.event:callHistory:error"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Call history cached state has been updated"
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "memberof",
              "description": "callHistory",
              "lineNumber": 3
            },
            {
              "title": "event",
              "description": "callHistoryCache:change",
              "lineNumber": 4
            }
          ],
          "loc": {
            "start": {
              "line": 19,
              "column": 0
            },
            "end": {
              "line": 24,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 25,
                "column": 0
              },
              "end": {
                "line": 25,
                "column": 66
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/callHistory/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "callHistory",
          "kind": "event",
          "name": "callHistoryCache:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "callHistory",
              "kind": "namespace"
            },
            {
              "name": "callHistoryCache:change",
              "kind": "event"
            }
          ],
          "namespace": "callHistory.event:callHistoryCache:change"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Gets the list of call logs cached locally. The event\n"
                  },
                  {
                    "type": "inlineCode",
                    "value": "callHistory:changed"
                  },
                  {
                    "type": "text",
                    "value": " is used to indicate the local state of logs\nhas been updated."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "memberof",
              "description": "callHistory",
              "lineNumber": 5
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 6,
              "name": "callHistory"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "get"
            },
            {
              "title": "example",
              "description": "client.on('callHistory:change', function() {\n    // Get all call logs when they've been updated.\n    let callLogs = client.call.history.get();\n});",
              "lineNumber": 8
            },
            {
              "title": "returns",
              "description": "A list of call log records, ordered by latest first.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "Array"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 24,
              "column": 4
            },
            "end": {
              "line": 38,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 39,
                "column": 4
              },
              "end": {
                "line": 42,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/callHistory/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('callHistory:change', function() {\n    // Get all call logs when they've been updated.\n    let callLogs = client.call.history.get();\n});"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of call log records, ordered by latest first."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Array"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "callHistory",
          "kind": "function",
          "name": "get",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "callHistory",
              "kind": "namespace"
            },
            {
              "name": "get",
              "kind": "function"
            }
          ],
          "namespace": "callHistoryget"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Fetches the list of call logs and stores them locally. The API\n"
                  },
                  {
                    "type": "link",
                    "url": "#callhistoryget",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "CallHistory.get"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " can then be used to get\nthe logs from local state after it has been updated."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "memberof",
              "description": "callHistory",
              "lineNumber": 5
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 6,
              "name": "callHistory"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "fetch"
            },
            {
              "title": "param",
              "description": "The number of records to retrieve.",
              "lineNumber": 8,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "amount",
              "default": "50"
            },
            {
              "title": "param",
              "description": "Starting offset for records to retrieve.",
              "lineNumber": 9,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "offset",
              "default": "0"
            }
          ],
          "loc": {
            "start": {
              "line": 44,
              "column": 4
            },
            "end": {
              "line": 54,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 55,
                "column": 4
              },
              "end": {
                "line": 93,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/callHistory/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "amount",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The number of records to retrieve."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "default": "50"
            },
            {
              "title": "param",
              "name": "offset",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Starting offset for records to retrieve."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "default": "0"
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "callHistory",
          "kind": "function",
          "name": "fetch",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "callHistory",
              "kind": "namespace"
            },
            {
              "name": "fetch",
              "kind": "function"
            }
          ],
          "namespace": "callHistoryfetch"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Deletes the specified call log."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "memberof",
              "description": "callHistory",
              "lineNumber": 3
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 4,
              "name": "callHistory"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "remove"
            },
            {
              "title": "param",
              "description": "The ID of the call log to be removed.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "recordId"
            }
          ],
          "loc": {
            "start": {
              "line": 95,
              "column": 4
            },
            "end": {
              "line": 102,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 103,
                "column": 4
              },
              "end": {
                "line": 137,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/callHistory/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "recordId",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the call log to be removed."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "callHistory",
          "kind": "function",
          "name": "remove",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "callHistory",
              "kind": "namespace"
            },
            {
              "name": "remove",
              "kind": "function"
            }
          ],
          "namespace": "callHistoryremove"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Deletes all call logs."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "memberof",
              "description": "callHistory",
              "lineNumber": 3
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 4,
              "name": "callHistory"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "clear"
            }
          ],
          "loc": {
            "start": {
              "line": 139,
              "column": 4
            },
            "end": {
              "line": 145,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 146,
                "column": 4
              },
              "end": {
                "line": 167,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/callHistory/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "callHistory",
          "kind": "function",
          "name": "clear",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "callHistory",
              "kind": "namespace"
            },
            {
              "name": "clear",
              "kind": "function"
            }
          ],
          "namespace": "callHistoryclear"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Gets the cached call history data and returns stringified data."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The data is provided in a format that can be used directly with the\n"
                  },
                  {
                    "type": "link",
                    "url": "callHistory.setCache",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.history.setCache"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API. This allows an\napplication to persist the information across SDK instances when the\nbackend environment does not support the CallHistory feature."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 7,
              "type": null
            },
            {
              "title": "memberof",
              "description": "callHistory",
              "lineNumber": 8
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 9,
              "name": "callHistory"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 10,
              "name": "getCache"
            },
            {
              "title": "returns",
              "description": "A stringified list of call log records from the cache, ordered by latest first.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 169,
              "column": 4
            },
            "end": {
              "line": 181,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 182,
                "column": 4
              },
              "end": {
                "line": 185,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/callHistory/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A stringified list of call log records from the cache, ordered by latest first."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "callHistory",
          "kind": "function",
          "name": "getCache",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "callHistory",
              "kind": "namespace"
            },
            {
              "name": "getCache",
              "kind": "function"
            }
          ],
          "namespace": "callHistorygetCache"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sets the cached call history data, expects stringified data as it will be parsed."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The data can be retrieved from the "
                  },
                  {
                    "type": "link",
                    "url": "callHistory.getCache",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.history.getCache"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API. This allows an\napplication to persist the information across SDK instances when the\nbackend environment does not support the CallHistory feature."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 7,
              "type": null
            },
            {
              "title": "memberof",
              "description": "callHistory",
              "lineNumber": 8
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 9,
              "name": "callHistory"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 10,
              "name": "setCache"
            },
            {
              "title": "param",
              "description": "The stringified call history data to store in the cache.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "data"
            }
          ],
          "loc": {
            "start": {
              "line": 187,
              "column": 4
            },
            "end": {
              "line": 199,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 200,
                "column": 4
              },
              "end": {
                "line": 220,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/callHistory/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "data",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The stringified call history data to store in the cache."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "callHistory",
          "kind": "function",
          "name": "setCache",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "callHistory",
              "kind": "namespace"
            },
            {
              "name": "setCache",
              "kind": "function"
            }
          ],
          "namespace": "callHistorysetCache"
        }
      ]
    },
    "path": [
      {
        "name": "callHistory",
        "kind": "namespace"
      }
    ],
    "namespace": "callHistory"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The clickToCall namespace is used to bridge a call between two specified devices"
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 3,
        "type": null
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 4,
        "type": null,
        "name": "clickToCall"
      },
      {
        "title": "requires",
        "description": null,
        "lineNumber": 5,
        "name": "clickToCall"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 7,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 8,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/clickToCall/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "clickToCall",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "ClickToCall has successfully started."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "clickToCall",
              "lineNumber": 4
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 5,
              "name": "clickToCall"
            },
            {
              "title": "event",
              "description": "clickToCall:start",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "A unique id representing the call made",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 10,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 11,
                "column": 0
              },
              "end": {
                "line": 11,
                "column": 56
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/clickToCall/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "A unique id representing the call made"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "clickToCall",
          "kind": "event",
          "name": "clickToCall:start",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "clickToCall",
              "kind": "function"
            },
            {
              "name": "clickToCall:start",
              "kind": "event"
            }
          ],
          "namespace": "clickToCall.event:clickToCall:start"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "ClickToCall had an error."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "clickToCall",
              "lineNumber": 4
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 5,
              "name": "clickToCall"
            },
            {
              "title": "event",
              "description": "clickToCall:error",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "A unique id representing the call made",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.callId"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "api.BasicError"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 13,
              "column": 0
            },
            "end": {
              "line": 24,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 25,
                "column": 0
              },
              "end": {
                "line": 25,
                "column": 54
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/clickToCall/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "A unique id representing the call made"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "api.BasicError"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "clickToCall",
          "kind": "event",
          "name": "clickToCall:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "clickToCall",
              "kind": "function"
            },
            {
              "name": "clickToCall:error",
              "kind": "event"
            }
          ],
          "namespace": "clickToCall.event:clickToCall:error"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Attempts to establish a call between two specified devices."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "clickToCall",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "make"
            },
            {
              "title": "param",
              "description": "A string representing the person making the call",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "caller"
            },
            {
              "title": "param",
              "description": "A string representing the person receiving the call",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callee"
            },
            {
              "title": "returns",
              "description": "callId A unique id representing the call or undefined if there is an error.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 18,
              "column": 4
            },
            "end": {
              "line": 27,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 28,
                "column": 4
              },
              "end": {
                "line": 47,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/clickToCall/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "caller",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A string representing the person making the call"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "callee",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A string representing the person receiving the call"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "callId A unique id representing the call or undefined if there is an error."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "clickToCall",
          "kind": "function",
          "name": "make",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "clickToCall",
              "kind": "function"
            },
            {
              "name": "make",
              "kind": "function"
            }
          ],
          "namespace": "clickToCallmake"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Gets all local clickToCall calls"
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "clickToCall",
              "lineNumber": 4
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 5,
              "name": "clickToCall"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 6,
              "name": "get"
            },
            {
              "title": "returns",
              "description": "A list of clickToCall records, ordered by earliest requestTime",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Array"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 48,
              "column": 4
            },
            "end": {
              "line": 56,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 57,
                "column": 4
              },
              "end": {
                "line": 60,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/clickToCall/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of clickToCall records, ordered by earliest requestTime"
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Array"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "clickToCall",
          "kind": "function",
          "name": "get",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "clickToCall",
              "kind": "function"
            },
            {
              "name": "get",
              "kind": "function"
            }
          ],
          "namespace": "clickToCallget"
        }
      ]
    },
    "path": [
      {
        "name": "clickToCall",
        "kind": "namespace"
      }
    ],
    "namespace": "clickToCall"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'connection' namespace is used to connect and maintain connections between\nthe SDK and one or more backend servers."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 4,
        "type": null
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 5,
        "type": null,
        "name": "connection"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 7,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 34,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/connectivity/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "connection",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The WebSocket to the server has changed state."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event is only emitted when the WebSocket is connected, or has lost connection."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "memberof",
              "description": "connection",
              "lineNumber": 6
            },
            {
              "title": "event",
              "description": "ws:change",
              "lineNumber": 7
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 9,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 10,
                "column": 0
              },
              "end": {
                "line": 10,
                "column": 36
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/connectivity/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "connection",
          "kind": "event",
          "name": "ws:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "connection",
              "kind": "namespace"
            },
            {
              "name": "ws:change",
              "kind": "event"
            }
          ],
          "namespace": "connection.event:ws:change"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Get the state of the websocket."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "connection",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "getSocketState"
            },
            {
              "title": "return",
              "description": "Details about the current websocket connection, including state and configuration.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "connection.WSConnectionObject"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 10,
              "column": 4
            },
            "end": {
              "line": 17,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 18,
                "column": 4
              },
              "end": {
                "line": 21,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/connectivity/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Details about the current websocket connection, including state and configuration."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "connection.WSConnectionObject"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "connection",
          "kind": "function",
          "name": "getSocketState",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "connection",
              "kind": "namespace"
            },
            {
              "name": "getSocketState",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "connection.getSocketState"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Enables or disables connectivity checking."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will change the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "connectivity.checkConnectivity"
                  },
                  {
                    "type": "text",
                    "value": " configuration set during SDK initialization. If there\nwas a connected websocket while it is changed, the change will take affect immediately."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "memberof",
              "description": "connection",
              "lineNumber": 6
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "enableConnectivityChecking"
            },
            {
              "title": "param",
              "description": "Whether the websocket should be pinging to check for connectivity issues or not.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "enable"
            }
          ],
          "loc": {
            "start": {
              "line": 23,
              "column": 4
            },
            "end": {
              "line": 32,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 33,
                "column": 4
              },
              "end": {
                "line": 38,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/connectivity/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "enable",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Whether the websocket should be pinging to check for connectivity issues or not."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "connection",
          "kind": "function",
          "name": "enableConnectivityChecking",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "connection",
              "kind": "namespace"
            },
            {
              "name": "enableConnectivityChecking",
              "kind": "function"
            }
          ],
          "namespace": "connectionenableConnectivityChecking"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Resets the connected websocket by manually disconnecting then reconnecting."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will simulate the SDK receiving a websocket disconnect from the browser,\nwhich will trigger its recovery functionality. This API can be used if the application\nis aware of a network issue before the SDK is notified by the browser."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If there is no websocket connected, this API has no effect. If the SDK is not configured\nto autoreconnect (see "
                  },
                  {
                    "type": "inlineCode",
                    "value": "connectivity.autoReconnect"
                  },
                  {
                    "type": "text",
                    "value": " configuration property), then this\nAPI will not attempt to reconnect the websocket automatically."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The normal websocket and lifecycle events will be emitted during this operation,\nnotably the "
                  },
                  {
                    "type": "link",
                    "url": "#connectioneventwschange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "ws:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 13,
              "type": null
            },
            {
              "title": "memberof",
              "description": "connection",
              "lineNumber": 14
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 15,
              "name": "resetConnection"
            }
          ],
          "loc": {
            "start": {
              "line": 40,
              "column": 4
            },
            "end": {
              "line": 56,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 57,
                "column": 4
              },
              "end": {
                "line": 78,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/connectivity/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "connection",
          "kind": "function",
          "name": "resetConnection",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "connection",
              "kind": "namespace"
            },
            {
              "name": "resetConnection",
              "kind": "function"
            }
          ],
          "namespace": "connectionresetConnection"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Information about a websocket connection."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "#connectiongetsocketstate",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "connection.getSocketState"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 6
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "WSConnectionObject"
            },
            {
              "title": "memberof",
              "description": "connection",
              "lineNumber": 8
            },
            {
              "title": "property",
              "description": "The state of the websocket connection.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "connected"
            },
            {
              "title": "property",
              "description": "True if the client has sent a ping to the server and is still waiting for a pong response.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "pinging"
            },
            {
              "title": "property",
              "description": "How often the client will ping the server to test for websocket connectivity.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "pingInterval"
            },
            {
              "title": "property",
              "description": "How many times the SDK will try to reconnect a disconnected websocket.",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "reconnectLimit"
            },
            {
              "title": "property",
              "description": "How long the SDK will wait before retrying websocket reconnection.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "reconnectDelay"
            },
            {
              "title": "property",
              "description": "Reconnect delay multiplier for subsequent attempts. The reconnect delay time will be multiplied by this after each failed reconnect attempt to increase the delay between attempts. eg. 5000ms then 10000ms then 20000ms delay if value is 2.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "reconnectTimeMultiplier"
            },
            {
              "title": "property",
              "description": "Maximum time delay between reconnect attempts (milliseconds). Used in conjunction with `reconnectTimeMultiplier` to prevent overly long delays between reconnection attempts.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "reconnectTimeLimit"
            },
            {
              "title": "property",
              "description": "Indicates if the SDK should automatically try reconnecting a disconnected websocket.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "autoReconnect"
            },
            {
              "title": "property",
              "description": "The mode used for authenticating with the server.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "webSocketOAuthMode"
            },
            {
              "title": "property",
              "description": "Information required to connect a websocket to the server.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "wsInfo"
            },
            {
              "title": "property",
              "description": "The protocol to use to connect a websocket.",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "wsInfo.protocol"
            },
            {
              "title": "property",
              "description": "The domain name or IP address of the server to connect to.",
              "lineNumber": 20,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "wsInfo.server"
            },
            {
              "title": "property",
              "description": "The port of the server to connect to.",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "wsInfo.port"
            },
            {
              "title": "property",
              "description": "The URL path to use to request a websocket connection.",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "wsInfo.url"
            },
            {
              "title": "property",
              "description": "Any additional params that might be required by the server to establish the websocket connection.",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "wsInfo.params"
            }
          ],
          "loc": {
            "start": {
              "line": 9,
              "column": 0
            },
            "end": {
              "line": 33,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 34,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/connectivity/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "connected",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The state of the websocket connection."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "property",
              "name": "pinging",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "True if the client has sent a ping to the server and is still waiting for a pong response."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "property",
              "name": "pingInterval",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "How often the client will ping the server to test for websocket connectivity."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            },
            {
              "title": "property",
              "name": "reconnectLimit",
              "lineNumber": 12,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "How many times the SDK will try to reconnect a disconnected websocket."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            },
            {
              "title": "property",
              "name": "reconnectDelay",
              "lineNumber": 13,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "How long the SDK will wait before retrying websocket reconnection."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            },
            {
              "title": "property",
              "name": "reconnectTimeMultiplier",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Reconnect delay multiplier for subsequent attempts. The reconnect delay time will be multiplied by this after each failed reconnect attempt to increase the delay between attempts. eg. 5000ms then 10000ms then 20000ms delay if value is 2."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            },
            {
              "title": "property",
              "name": "reconnectTimeLimit",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Maximum time delay between reconnect attempts (milliseconds). Used in conjunction with "
                      },
                      {
                        "type": "inlineCode",
                        "value": "reconnectTimeMultiplier"
                      },
                      {
                        "type": "text",
                        "value": " to prevent overly long delays between reconnection attempts."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            },
            {
              "title": "property",
              "name": "autoReconnect",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Indicates if the SDK should automatically try reconnecting a disconnected websocket."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "property",
              "name": "webSocketOAuthMode",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The mode used for authenticating with the server."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "wsInfo",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Information required to connect a websocket to the server."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "property",
                  "name": "wsInfo.protocol",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The protocol to use to connect a websocket."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "property",
                  "name": "wsInfo.server",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The domain name or IP address of the server to connect to."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "property",
                  "name": "wsInfo.port",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The port of the server to connect to."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "number"
                    }
                  }
                },
                {
                  "title": "property",
                  "name": "wsInfo.url",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The URL path to use to request a websocket connection."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "property",
                  "name": "wsInfo.params",
                  "lineNumber": 23,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Any additional params that might be required by the server to establish the websocket connection."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                }
              ]
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "WSConnectionObject",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "connection",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "connection",
              "kind": "namespace"
            },
            {
              "name": "WSConnectionObject",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "connection.WSConnectionObject"
        }
      ]
    },
    "path": [
      {
        "name": "connection",
        "kind": "namespace"
      }
    ],
    "namespace": "connection"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'contacts' namespace allows users to store personal contacts to their account."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 3,
        "type": null
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 4,
        "type": null,
        "name": "contacts"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 6,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 38,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "contacts",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A new contact has been added to the address book."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "memberof",
              "description": "contacts",
              "lineNumber": 3
            },
            {
              "title": "event",
              "description": "contacts:new",
              "lineNumber": 4
            },
            {
              "title": "param",
              "description": "The new contact.",
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "contact"
            }
          ],
          "loc": {
            "start": {
              "line": 2,
              "column": 0
            },
            "end": {
              "line": 8,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 9,
                "column": 0
              },
              "end": {
                "line": 9,
                "column": 42
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/events/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "contact",
              "lineNumber": 5,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The new contact."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "contacts",
          "kind": "event",
          "name": "contacts:new",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "contacts",
              "kind": "namespace"
            },
            {
              "name": "contacts:new",
              "kind": "event"
            }
          ],
          "namespace": "contacts.event:contacts:new"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An error occurred while performing a contact operation."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "memberof",
              "description": "contacts",
              "lineNumber": 3
            },
            {
              "title": "event",
              "description": "contacts:error",
              "lineNumber": 4
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 11,
              "column": 0
            },
            "end": {
              "line": 18,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 19,
                "column": 0
              },
              "end": {
                "line": 19,
                "column": 46
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/events/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 6,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "contacts",
          "kind": "event",
          "name": "contacts:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "contacts",
              "kind": "namespace"
            },
            {
              "name": "contacts:error",
              "kind": "event"
            }
          ],
          "namespace": "contacts.event:contacts:error"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The contacts list has changed."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "memberof",
              "description": "contacts",
              "lineNumber": 3
            },
            {
              "title": "event",
              "description": "contacts:change",
              "lineNumber": 4
            },
            {
              "title": "example",
              "description": "client.on('contacts:change', function () {\n   // Get the updated list of contacts.\n   const contacts = client.contacts.getAll()\n   ...\n})",
              "lineNumber": 5
            }
          ],
          "loc": {
            "start": {
              "line": 21,
              "column": 0
            },
            "end": {
              "line": 32,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 33,
                "column": 0
              },
              "end": {
                "line": 33,
                "column": 48
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/events/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('contacts:change', function () {\n   // Get the updated list of contacts.\n   const contacts = client.contacts.getAll()\n   ...\n})"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "contacts",
          "kind": "event",
          "name": "contacts:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "contacts",
              "kind": "namespace"
            },
            {
              "name": "contacts:change",
              "kind": "event"
            }
          ],
          "namespace": "contacts.event:contacts:change"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Add a contact to a user's personal address book.\nWill trigger the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "contacts:new"
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "memberof",
              "description": "contacts",
              "lineNumber": 5
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 6,
              "name": "add"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 7,
              "name": "addContactAsFriend"
            },
            {
              "title": "param",
              "description": "The contact object.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "contact"
            },
            {
              "title": "param",
              "description": "The primary userId for the contact",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "contact.primaryContact"
            },
            {
              "title": "param",
              "description": "The contact's unique contact ID",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "contact.contactId"
            },
            {
              "title": "param",
              "description": "The contact's first name",
              "lineNumber": 11,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.firstName"
            },
            {
              "title": "param",
              "description": "The contact's last name",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.lastName"
            },
            {
              "title": "param",
              "description": "The URL address identifying location of user's picture",
              "lineNumber": 13,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.photoUrl"
            },
            {
              "title": "param",
              "description": "The contact's email address",
              "lineNumber": 14,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.emailAddress"
            },
            {
              "title": "param",
              "description": "The contact's home phone number",
              "lineNumber": 15,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.homePhone"
            },
            {
              "title": "param",
              "description": "The contact's business phone number",
              "lineNumber": 16,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.workPhone"
            },
            {
              "title": "param",
              "description": "The contact's mobile phone number",
              "lineNumber": 17,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.mobilePhone"
            },
            {
              "title": "param",
              "description": "Conference URL and access code for this user's address book entry",
              "lineNumber": 18,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.conferenceURL"
            },
            {
              "title": "param",
              "description": "The user's fax number",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.fax"
            },
            {
              "title": "param",
              "description": "The user's pager number",
              "lineNumber": 20,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.pager"
            },
            {
              "title": "param",
              "description": "The name of the contact list for which to add this contact to (\"friends\" by default)",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.groupList"
            },
            {
              "title": "param",
              "description": "Indicates whether or not the contact is a friend of the user",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "contact.friendStatus"
            }
          ],
          "loc": {
            "start": {
              "line": 10,
              "column": 4
            },
            "end": {
              "line": 33,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 34,
                "column": 4
              },
              "end": {
                "line": 47,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/api/contacts.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "contact",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The contact object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "contact.primaryContact",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The primary userId for the contact"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "contact.contactId",
                  "lineNumber": 10,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's unique contact ID"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "contact.firstName",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's first name"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.lastName",
                  "lineNumber": 12,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's last name"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.photoUrl",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The URL address identifying location of user's picture"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.emailAddress",
                  "lineNumber": 14,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's email address"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.homePhone",
                  "lineNumber": 15,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's home phone number"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.workPhone",
                  "lineNumber": 16,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's business phone number"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.mobilePhone",
                  "lineNumber": 17,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's mobile phone number"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.conferenceURL",
                  "lineNumber": 18,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Conference URL and access code for this user's address book entry"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.fax",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The user's fax number"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.pager",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The user's pager number"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.groupList",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The name of the contact list for which to add this contact to (\"friends\" by default)"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.friendStatus",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Indicates whether or not the contact is a friend of the user"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "boolean"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "contacts",
          "kind": "function",
          "name": "add",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "contacts",
              "kind": "namespace"
            },
            {
              "name": "add",
              "kind": "function"
            }
          ],
          "namespace": "contactsadd"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves local information about a contact."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "contacts",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "get"
            },
            {
              "title": "param",
              "description": "The unique contact ID of the contact.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "contactId"
            },
            {
              "title": "return",
              "description": "Contact information.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 49,
              "column": 4
            },
            "end": {
              "line": 57,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 58,
                "column": 4
              },
              "end": {
                "line": 61,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/api/contacts.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "contactId",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The unique contact ID of the contact."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Contact information."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "contacts",
          "kind": "function",
          "name": "get",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "contacts",
              "kind": "namespace"
            },
            {
              "name": "get",
              "kind": "function"
            }
          ],
          "namespace": "contactsget"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves local information about all contacts."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "contacts",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "getAll"
            },
            {
              "title": "return",
              "description": "List of contact information.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Array"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 63,
              "column": 4
            },
            "end": {
              "line": 70,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 71,
                "column": 4
              },
              "end": {
                "line": 74,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/api/contacts.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "List of contact information."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Array"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "contacts",
          "kind": "function",
          "name": "getAll",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "contacts",
              "kind": "namespace"
            },
            {
              "name": "getAll",
              "kind": "function"
            }
          ],
          "namespace": "contactsgetAll"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Refreshes the local information about contacts. This will get new contacts from the platform.\nWill trigger the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "contacts:change"
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "memberof",
              "description": "contacts",
              "lineNumber": 5
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 6,
              "name": "refresh"
            }
          ],
          "loc": {
            "start": {
              "line": 76,
              "column": 4
            },
            "end": {
              "line": 83,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 84,
                "column": 4
              },
              "end": {
                "line": 96,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/api/contacts.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "contacts",
          "kind": "function",
          "name": "refresh",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "contacts",
              "kind": "namespace"
            },
            {
              "name": "refresh",
              "kind": "function"
            }
          ],
          "namespace": "contactsrefresh"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Remove a contact from a personal address book.\nWill trigger the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "contacts:change"
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "memberof",
              "description": "contacts",
              "lineNumber": 5
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 6,
              "name": "remove"
            },
            {
              "title": "param",
              "description": "The Id of the contact that will be removed.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "id"
            }
          ],
          "loc": {
            "start": {
              "line": 98,
              "column": 4
            },
            "end": {
              "line": 106,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 107,
                "column": 4
              },
              "end": {
                "line": 119,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/api/contacts.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "id",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The Id of the contact that will be removed."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "contacts",
          "kind": "function",
          "name": "remove",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "contacts",
              "kind": "namespace"
            },
            {
              "name": "remove",
              "kind": "function"
            }
          ],
          "namespace": "contactsremove"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Update a contact from the user's personal address book.\nWill trigger the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "contacts:change"
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "memberof",
              "description": "contacts",
              "lineNumber": 5
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 6,
              "name": "update"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 7,
              "name": "addContactAsFriend"
            },
            {
              "title": "param",
              "description": "The contact object.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "contact"
            },
            {
              "title": "param",
              "description": "The primary userId for the contact",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "contact.primaryContact"
            },
            {
              "title": "param",
              "description": "The contact's unique contact ID",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "contact.contactId"
            },
            {
              "title": "param",
              "description": "The contact's first name",
              "lineNumber": 11,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.firstName"
            },
            {
              "title": "param",
              "description": "The contact's last name",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.lastName"
            },
            {
              "title": "param",
              "description": "The URL address identifying location of user's picture",
              "lineNumber": 13,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.photoUrl"
            },
            {
              "title": "param",
              "description": "The contact's email address",
              "lineNumber": 14,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.emailAddress"
            },
            {
              "title": "param",
              "description": "The contact's home phone number",
              "lineNumber": 15,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.homePhone"
            },
            {
              "title": "param",
              "description": "The contact's business phone number",
              "lineNumber": 16,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.workPhone"
            },
            {
              "title": "param",
              "description": "The contact's mobile phone number",
              "lineNumber": 17,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.mobilePhone"
            },
            {
              "title": "param",
              "description": "Conference URL and access code for this user's address book entry",
              "lineNumber": 18,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.conferenceURL"
            },
            {
              "title": "param",
              "description": "The user's fax number",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.fax"
            },
            {
              "title": "param",
              "description": "The user's pager number",
              "lineNumber": 20,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.pager"
            },
            {
              "title": "param",
              "description": "The name of the contact list for which to add this contact to (\"friends\" by default)",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "contact.groupList"
            },
            {
              "title": "param",
              "description": "Indicates whether or not the contact is a friend of the user",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "contact.friendStatus"
            }
          ],
          "loc": {
            "start": {
              "line": 121,
              "column": 4
            },
            "end": {
              "line": 144,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 145,
                "column": 4
              },
              "end": {
                "line": 156,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/api/contacts.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "contact",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The contact object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "contact.primaryContact",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The primary userId for the contact"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "contact.contactId",
                  "lineNumber": 10,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's unique contact ID"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "contact.firstName",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's first name"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.lastName",
                  "lineNumber": 12,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's last name"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.photoUrl",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The URL address identifying location of user's picture"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.emailAddress",
                  "lineNumber": 14,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's email address"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.homePhone",
                  "lineNumber": 15,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's home phone number"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.workPhone",
                  "lineNumber": 16,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's business phone number"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.mobilePhone",
                  "lineNumber": 17,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The contact's mobile phone number"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.conferenceURL",
                  "lineNumber": 18,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Conference URL and access code for this user's address book entry"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.fax",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The user's fax number"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.pager",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The user's pager number"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.groupList",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The name of the contact list for which to add this contact to (\"friends\" by default)"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "contact.friendStatus",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Indicates whether or not the contact is a friend of the user"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "boolean"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "contacts",
          "kind": "function",
          "name": "update",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "contacts",
              "kind": "namespace"
            },
            {
              "name": "update",
              "kind": "function"
            }
          ],
          "namespace": "contactsupdate"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Fetch a contact from the user's personal address book.\nWill trigger the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "contacts:change"
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "memberof",
              "description": "contacts",
              "lineNumber": 5
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 6,
              "name": "fetch"
            },
            {
              "title": "param",
              "description": "The unique contact ID of the contact.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "id"
            }
          ],
          "loc": {
            "start": {
              "line": 158,
              "column": 4
            },
            "end": {
              "line": 166,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 167,
                "column": 4
              },
              "end": {
                "line": 178,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/api/contacts.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "id",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The unique contact ID of the contact."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "contacts",
          "kind": "function",
          "name": "fetch",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "contacts",
              "kind": "namespace"
            },
            {
              "name": "fetch",
              "kind": "function"
            }
          ],
          "namespace": "contactsfetch"
        }
      ]
    },
    "path": [
      {
        "name": "contacts",
        "kind": "namespace"
      }
    ],
    "namespace": "contacts"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The messaging feature revolves around a 'conversation' namespace. It is responsible to store the conversations\nand its messages, and return conversation objects when requested."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "See the \"Conversation\" and \"Message\" sections of the documentation for more details."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "Messaging functions are all part of the 'conversation' namespace. Ex: client.conversation.get('id')."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 9,
        "type": null
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 10,
        "type": null,
        "name": "conversation"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 12,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 64,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "conversation",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A new conversation has been created and added to the state."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "conversation",
              "lineNumber": 4
            },
            {
              "title": "event",
              "description": "conversations:new",
              "lineNumber": 5
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 7,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 8,
                "column": 0
              },
              "end": {
                "line": 8,
                "column": 52
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "conversation",
          "kind": "event",
          "name": "conversations:new",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "conversation",
              "kind": "namespace"
            },
            {
              "name": "conversations:new",
              "kind": "event"
            }
          ],
          "namespace": "conversation.event:conversations:new"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A change has occurred in the conversation list."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "conversation",
              "lineNumber": 4
            },
            {
              "title": "event",
              "description": "conversations:change",
              "lineNumber": 5
            },
            {
              "title": "param",
              "description": "An array of objects containing information about the conversations that have changed",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Array"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The destination for messages created in this conversation.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Array"
              },
              "name": "params.destination"
            },
            {
              "title": "param",
              "description": "The type of conversation to create. Can be one of \"chat\", \"im\", \"sms\".",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.type"
            }
          ],
          "loc": {
            "start": {
              "line": 10,
              "column": 0
            },
            "end": {
              "line": 19,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 20,
                "column": 0
              },
              "end": {
                "line": 20,
                "column": 58
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An array of objects containing information about the conversations that have changed"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Array"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.destination",
                  "lineNumber": 7,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The destination for messages created in this conversation."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Array"
                  }
                },
                {
                  "title": "param",
                  "name": "params.type",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The type of conversation to create. Can be one of \"chat\", \"im\", \"sms\"."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "conversation",
          "kind": "event",
          "name": "conversations:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "conversation",
              "kind": "namespace"
            },
            {
              "name": "conversations:change",
              "kind": "event"
            }
          ],
          "namespace": "conversation.event:conversations:change"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A change has occurred in a specific conversations message list.\nIf a single message was affected/created, "
                  },
                  {
                    "type": "inlineCode",
                    "value": "messageId"
                  },
                  {
                    "type": "text",
                    "value": " will be present\nas part of the event argument."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "memberof",
              "description": "conversation",
              "lineNumber": 6
            },
            {
              "title": "event",
              "description": "messages:change",
              "lineNumber": 7
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The destination for messages created in this conversation.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.destination"
            },
            {
              "title": "param",
              "description": "The type of conversation to create. Can be one of \"chat\", \"im\", \"sms\".",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.type"
            },
            {
              "title": "param",
              "description": "The ID of the message affected.",
              "lineNumber": 11,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "params.messageId"
            },
            {
              "title": "param",
              "description": "The username of the sender of the message which caused the `messages:change` event to be triggered.",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "params.sender"
            }
          ],
          "loc": {
            "start": {
              "line": 22,
              "column": 0
            },
            "end": {
              "line": 35,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 36,
                "column": 0
              },
              "end": {
                "line": 36,
                "column": 48
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.destination",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The destination for messages created in this conversation."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.type",
                  "lineNumber": 10,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The type of conversation to create. Can be one of \"chat\", \"im\", \"sms\"."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.messageId",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the message affected."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "params.sender",
                  "lineNumber": 12,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The username of the sender of the message which caused the "
                          },
                          {
                            "type": "inlineCode",
                            "value": "messages:change"
                          },
                          {
                            "type": "text",
                            "value": " event to be triggered."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "conversation",
          "kind": "event",
          "name": "messages:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "conversation",
              "kind": "namespace"
            },
            {
              "name": "messages:change",
              "kind": "event"
            }
          ],
          "namespace": "conversation.event:messages:change"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An error occurred with messaging."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "conversation",
              "lineNumber": 4
            },
            {
              "title": "event",
              "description": "messages:error",
              "lineNumber": 5
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "api.BasicError"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 38,
              "column": 0
            },
            "end": {
              "line": 46,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 47,
                "column": 0
              },
              "end": {
                "line": 47,
                "column": 46
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 7,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "api.BasicError"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "conversation",
          "kind": "event",
          "name": "messages:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "conversation",
              "kind": "namespace"
            },
            {
              "name": "messages:error",
              "kind": "event"
            }
          ],
          "namespace": "conversation.event:messages:error"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Get a conversation object matching the user ID provided in the 'destination' parameter.\nIf successful, the event 'conversations:change' will be emitted."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will retrieve a conversation already existing in the store."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "memberof",
              "description": "conversation",
              "lineNumber": 7
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 8,
              "name": "onlyInternalMessaging"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 9,
              "name": "get"
            },
            {
              "title": "param",
              "description": "The destination for messages created in this conversation. This will\nbe a user's sip address.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "destination"
            },
            {
              "title": "param",
              "description": "An optional configuration object to query for more specific results.\nIf this object is not passed, the function will query for \"im\" conversation with that recipient.",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "The type of conversation to retrieve. Can be one of \"im\", \"sms\" or \"other\".",
              "lineNumber": 14,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "options.type"
            },
            {
              "title": "returns",
              "description": "A Conversation object matching the passed destination, otherwise undefined is returned.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "conversation.Conversation"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 17,
              "column": 4
            },
            "end": {
              "line": 33,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 50,
                "column": 4
              },
              "end": {
                "line": 86,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "destination",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The destination for messages created in this conversation. This will\nbe a user's sip address."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 12,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An optional configuration object to query for more specific results.\nIf this object is not passed, the function will query for \"im\" conversation with that recipient."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.type",
                  "lineNumber": 14,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The type of conversation to retrieve. Can be one of \"im\", \"sms\" or \"other\"."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A Conversation object matching the passed destination, otherwise undefined is returned."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "conversation.Conversation"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "conversation",
          "kind": "function",
          "name": "get",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "conversation",
              "kind": "namespace"
            },
            {
              "name": "get",
              "kind": "function"
            }
          ],
          "namespace": "conversationget"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Returns all conversations currently tracked by the SDK"
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "conversation",
              "lineNumber": 4
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 5,
              "name": "internalAndSmsMessaging"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 6,
              "name": "onlyInternalMessaging"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "getAll"
            },
            {
              "title": "returns",
              "description": "An array of conversation objects.",
              "lineNumber": 8,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "conversation.Conversation"
                  }
                ]
              }
            }
          ],
          "loc": {
            "start": {
              "line": 115,
              "column": 4
            },
            "end": {
              "line": 124,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 125,
                "column": 4
              },
              "end": {
                "line": 131,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An array of conversation objects."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "conversation.Conversation"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "conversation",
          "kind": "function",
          "name": "getAll",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "conversation",
              "kind": "namespace"
            },
            {
              "name": "getAll",
              "kind": "function"
            }
          ],
          "namespace": "conversationgetAll"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Conversation object represents a conversation between two users.\nA Conversation can create messages via the conversation's\n"
                  },
                  {
                    "type": "link",
                    "url": "#conversationconversationcreatemessage",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "createMessage()"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " function."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 5
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "Conversation"
            },
            {
              "title": "memberof",
              "description": "conversation",
              "lineNumber": 7
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 8,
              "name": "simpleMessagingOnly"
            },
            {
              "title": "property",
              "description": "The id of the remote user with which the current user is having a conversation.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "destination"
            }
          ],
          "loc": {
            "start": {
              "line": 17,
              "column": 0
            },
            "end": {
              "line": 27,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 64,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "destination",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The id of the remote user with which the current user is having a conversation."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "Conversation",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "conversation",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": [
              {
                "description": {
                  "type": "root",
                  "children": [
                    {
                      "type": "paragraph",
                      "children": [
                        {
                          "type": "text",
                          "value": "Create and return a message object. You must provide a "
                        },
                        {
                          "type": "inlineCode",
                          "value": "text"
                        },
                        {
                          "type": "text",
                          "value": " part as demonstrated in the example."
                        }
                      ]
                    }
                  ]
                },
                "tags": [
                  {
                    "title": "public",
                    "description": null,
                    "lineNumber": 3,
                    "type": null
                  },
                  {
                    "title": "static",
                    "description": null,
                    "lineNumber": 4
                  },
                  {
                    "title": "memberof",
                    "description": "conversation.Conversation",
                    "lineNumber": 5
                  },
                  {
                    "title": "requires",
                    "description": null,
                    "lineNumber": 6,
                    "name": "simpleMessagingOnly"
                  },
                  {
                    "title": "param",
                    "description": "The part to add to the message.",
                    "lineNumber": 7,
                    "type": {
                      "type": "NameExpression",
                      "name": "Object"
                    },
                    "name": "part"
                  },
                  {
                    "title": "param",
                    "description": "The type of part. Must be \"text\".",
                    "lineNumber": 8,
                    "type": {
                      "type": "NameExpression",
                      "name": "string"
                    },
                    "name": "part.type"
                  },
                  {
                    "title": "param",
                    "description": "The text of the part. Must be a part of type \"text\".",
                    "lineNumber": 9,
                    "type": {
                      "type": "NameExpression",
                      "name": "string"
                    },
                    "name": "part.text"
                  },
                  {
                    "title": "returns",
                    "description": "The newly created Message object.",
                    "lineNumber": 10,
                    "type": {
                      "type": "NameExpression",
                      "name": "conversation.Message"
                    }
                  },
                  {
                    "title": "example",
                    "description": "conversation.createMessage({type: 'text', text: 'This is the message'});",
                    "lineNumber": 12
                  }
                ],
                "loc": {
                  "start": {
                    "line": 51,
                    "column": 6
                  },
                  "end": {
                    "line": 65,
                    "column": 9
                  }
                },
                "context": {
                  "loc": {
                    "start": {
                      "line": 66,
                      "column": 6
                    },
                    "end": {
                      "line": 79,
                      "column": 7
                    }
                  },
                  "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/interface/mixins.js"
                },
                "augments": [],
                "examples": [
                  {
                    "description": "conversation.createMessage({type: 'text', text: 'This is the message'});"
                  }
                ],
                "implements": [],
                "params": [
                  {
                    "title": "param",
                    "name": "part",
                    "lineNumber": 7,
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "The part to add to the message."
                            }
                          ]
                        }
                      ]
                    },
                    "type": {
                      "type": "NameExpression",
                      "name": "Object"
                    },
                    "properties": [
                      {
                        "title": "param",
                        "name": "part.type",
                        "lineNumber": 8,
                        "description": {
                          "type": "root",
                          "children": [
                            {
                              "type": "paragraph",
                              "children": [
                                {
                                  "type": "text",
                                  "value": "The type of part. Must be \"text\"."
                                }
                              ]
                            }
                          ]
                        },
                        "type": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      },
                      {
                        "title": "param",
                        "name": "part.text",
                        "lineNumber": 9,
                        "description": {
                          "type": "root",
                          "children": [
                            {
                              "type": "paragraph",
                              "children": [
                                {
                                  "type": "text",
                                  "value": "The text of the part. Must be a part of type \"text\"."
                                }
                              ]
                            }
                          ]
                        },
                        "type": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      }
                    ]
                  }
                ],
                "properties": [],
                "returns": [
                  {
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "The newly created Message object."
                            }
                          ]
                        }
                      ]
                    },
                    "title": "returns",
                    "type": {
                      "type": "NameExpression",
                      "name": "conversation.Message"
                    }
                  }
                ],
                "sees": [],
                "throws": [],
                "todos": [],
                "yields": [],
                "access": "public",
                "scope": "static",
                "memberof": "conversation.Conversation",
                "name": "createMessage",
                "kind": "function",
                "members": {
                  "global": [],
                  "inner": [],
                  "instance": [],
                  "events": [],
                  "static": []
                },
                "path": [
                  {
                    "name": "conversation",
                    "kind": "namespace"
                  },
                  {
                    "name": "Conversation",
                    "kind": "typedef",
                    "scope": "static"
                  },
                  {
                    "name": "createMessage",
                    "kind": "function",
                    "scope": "static"
                  }
                ],
                "namespace": "conversation.Conversation.createMessage"
              },
              {
                "description": {
                  "type": "root",
                  "children": [
                    {
                      "type": "paragraph",
                      "children": [
                        {
                          "type": "text",
                          "value": "Clears all messages in this conversation from local state."
                        }
                      ]
                    }
                  ]
                },
                "tags": [
                  {
                    "title": "public",
                    "description": null,
                    "lineNumber": 2,
                    "type": null
                  },
                  {
                    "title": "static",
                    "description": null,
                    "lineNumber": 3
                  },
                  {
                    "title": "memberof",
                    "description": "conversation.Conversation",
                    "lineNumber": 4
                  },
                  {
                    "title": "method",
                    "description": null,
                    "lineNumber": 5,
                    "name": "clearMessages"
                  }
                ],
                "loc": {
                  "start": {
                    "line": 81,
                    "column": 6
                  },
                  "end": {
                    "line": 87,
                    "column": 9
                  }
                },
                "context": {
                  "loc": {
                    "start": {
                      "line": 88,
                      "column": 6
                    },
                    "end": {
                      "line": 94,
                      "column": 7
                    }
                  },
                  "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/interface/mixins.js"
                },
                "augments": [],
                "examples": [],
                "implements": [],
                "params": [],
                "properties": [],
                "returns": [],
                "sees": [],
                "throws": [],
                "todos": [],
                "yields": [],
                "access": "public",
                "scope": "static",
                "memberof": "conversation.Conversation",
                "kind": "function",
                "name": "clearMessages",
                "members": {
                  "global": [],
                  "inner": [],
                  "instance": [],
                  "events": [],
                  "static": []
                },
                "path": [
                  {
                    "name": "conversation",
                    "kind": "namespace"
                  },
                  {
                    "name": "Conversation",
                    "kind": "typedef",
                    "scope": "static"
                  },
                  {
                    "name": "clearMessages",
                    "kind": "function",
                    "scope": "static"
                  }
                ],
                "namespace": "conversation.Conversation.clearMessages"
              },
              {
                "description": {
                  "type": "root",
                  "children": [
                    {
                      "type": "paragraph",
                      "children": [
                        {
                          "type": "text",
                          "value": "Get the messages associated with this conversation."
                        }
                      ]
                    }
                  ]
                },
                "tags": [
                  {
                    "title": "public",
                    "description": null,
                    "lineNumber": 3,
                    "type": null
                  },
                  {
                    "title": "static",
                    "description": null,
                    "lineNumber": 4
                  },
                  {
                    "title": "memberof",
                    "description": "conversation.Conversation",
                    "lineNumber": 5
                  },
                  {
                    "title": "returns",
                    "description": "messages An array containing the conversation's messages.",
                    "lineNumber": 6,
                    "type": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "Object"
                        }
                      ]
                    }
                  },
                  {
                    "title": "returns",
                    "description": "messages.markRead Marks the message as read.",
                    "lineNumber": 7,
                    "type": {
                      "type": "NameExpression",
                      "name": "Function"
                    }
                  },
                  {
                    "title": "returns",
                    "description": "messages.forward Forward the message to another user.",
                    "lineNumber": 8,
                    "type": {
                      "type": "NameExpression",
                      "name": "Function"
                    }
                  },
                  {
                    "title": "returns",
                    "description": "messages.messageId The Id of the message.",
                    "lineNumber": 9,
                    "type": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  },
                  {
                    "title": "returns",
                    "description": "messages.sender The user Id of the user who sent the message.",
                    "lineNumber": 10,
                    "type": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  },
                  {
                    "title": "returns",
                    "description": "messages.timestamp The time at which the message was sent.",
                    "lineNumber": 11,
                    "type": {
                      "type": "NameExpression",
                      "name": "number"
                    }
                  },
                  {
                    "title": "returns",
                    "description": "messages.read Whether the message has been marked as read.",
                    "lineNumber": 12,
                    "type": {
                      "type": "NameExpression",
                      "name": "boolean"
                    }
                  },
                  {
                    "title": "returns",
                    "description": "messages.isPending Whether the message has finished being sent to the server.",
                    "lineNumber": 13,
                    "type": {
                      "type": "NameExpression",
                      "name": "boolean"
                    }
                  },
                  {
                    "title": "returns",
                    "description": "messages.parts The parts of the message.",
                    "lineNumber": 14,
                    "type": {
                      "type": "NameExpression",
                      "name": "Array"
                    }
                  }
                ],
                "loc": {
                  "start": {
                    "line": 96,
                    "column": 6
                  },
                  "end": {
                    "line": 111,
                    "column": 9
                  }
                },
                "context": {
                  "loc": {
                    "start": {
                      "line": 112,
                      "column": 6
                    },
                    "end": {
                      "line": 139,
                      "column": 7
                    }
                  },
                  "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/interface/mixins.js"
                },
                "augments": [],
                "examples": [],
                "implements": [],
                "params": [],
                "properties": [],
                "returns": [
                  {
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "messages An array containing the conversation's messages."
                            }
                          ]
                        }
                      ]
                    },
                    "title": "returns",
                    "type": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "Object"
                        }
                      ]
                    }
                  },
                  {
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "messages.markRead Marks the message as read."
                            }
                          ]
                        }
                      ]
                    },
                    "title": "returns",
                    "type": {
                      "type": "NameExpression",
                      "name": "Function"
                    }
                  },
                  {
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "messages.forward Forward the message to another user."
                            }
                          ]
                        }
                      ]
                    },
                    "title": "returns",
                    "type": {
                      "type": "NameExpression",
                      "name": "Function"
                    }
                  },
                  {
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "messages.messageId The Id of the message."
                            }
                          ]
                        }
                      ]
                    },
                    "title": "returns",
                    "type": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  },
                  {
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "messages.sender The user Id of the user who sent the message."
                            }
                          ]
                        }
                      ]
                    },
                    "title": "returns",
                    "type": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  },
                  {
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "messages.timestamp The time at which the message was sent."
                            }
                          ]
                        }
                      ]
                    },
                    "title": "returns",
                    "type": {
                      "type": "NameExpression",
                      "name": "number"
                    }
                  },
                  {
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "messages.read Whether the message has been marked as read."
                            }
                          ]
                        }
                      ]
                    },
                    "title": "returns",
                    "type": {
                      "type": "NameExpression",
                      "name": "boolean"
                    }
                  },
                  {
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "messages.isPending Whether the message has finished being sent to the server."
                            }
                          ]
                        }
                      ]
                    },
                    "title": "returns",
                    "type": {
                      "type": "NameExpression",
                      "name": "boolean"
                    }
                  },
                  {
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "messages.parts The parts of the message."
                            }
                          ]
                        }
                      ]
                    },
                    "title": "returns",
                    "type": {
                      "type": "NameExpression",
                      "name": "Array"
                    }
                  }
                ],
                "sees": [],
                "throws": [],
                "todos": [],
                "yields": [],
                "access": "public",
                "scope": "static",
                "memberof": "conversation.Conversation",
                "name": "getMessages",
                "kind": "function",
                "members": {
                  "global": [],
                  "inner": [],
                  "instance": [],
                  "events": [],
                  "static": []
                },
                "path": [
                  {
                    "name": "conversation",
                    "kind": "namespace"
                  },
                  {
                    "name": "Conversation",
                    "kind": "typedef",
                    "scope": "static"
                  },
                  {
                    "name": "getMessages",
                    "kind": "function",
                    "scope": "static"
                  }
                ],
                "namespace": "conversation.Conversation.getMessages"
              },
              {
                "description": {
                  "type": "root",
                  "children": [
                    {
                      "type": "paragraph",
                      "children": [
                        {
                          "type": "text",
                          "value": "Get a specific message from this conversation."
                        }
                      ]
                    }
                  ]
                },
                "tags": [
                  {
                    "title": "public",
                    "description": null,
                    "lineNumber": 2,
                    "type": null
                  },
                  {
                    "title": "static",
                    "description": null,
                    "lineNumber": 3
                  },
                  {
                    "title": "method",
                    "description": null,
                    "lineNumber": 4,
                    "name": "getMessage"
                  },
                  {
                    "title": "memberof",
                    "description": "conversation.Conversation",
                    "lineNumber": 5
                  },
                  {
                    "title": "param",
                    "description": "ID of the message to retrieve.",
                    "lineNumber": 6,
                    "type": {
                      "type": "NameExpression",
                      "name": "string"
                    },
                    "name": "messageId"
                  },
                  {
                    "title": "return",
                    "description": "A message object.",
                    "lineNumber": 7,
                    "type": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  }
                ],
                "loc": {
                  "start": {
                    "line": 141,
                    "column": 6
                  },
                  "end": {
                    "line": 149,
                    "column": 9
                  }
                },
                "context": {
                  "loc": {
                    "start": {
                      "line": 150,
                      "column": 6
                    },
                    "end": {
                      "line": 179,
                      "column": 7
                    }
                  },
                  "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/interface/mixins.js"
                },
                "augments": [],
                "examples": [],
                "implements": [],
                "params": [
                  {
                    "title": "param",
                    "name": "messageId",
                    "lineNumber": 6,
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "ID of the message to retrieve."
                            }
                          ]
                        }
                      ]
                    },
                    "type": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                ],
                "properties": [],
                "returns": [
                  {
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "A message object."
                            }
                          ]
                        }
                      ]
                    },
                    "title": "returns",
                    "type": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  }
                ],
                "sees": [],
                "throws": [],
                "todos": [],
                "yields": [],
                "access": "public",
                "scope": "static",
                "kind": "function",
                "name": "getMessage",
                "memberof": "conversation.Conversation",
                "members": {
                  "global": [],
                  "inner": [],
                  "instance": [],
                  "events": [],
                  "static": []
                },
                "path": [
                  {
                    "name": "conversation",
                    "kind": "namespace"
                  },
                  {
                    "name": "Conversation",
                    "kind": "typedef",
                    "scope": "static"
                  },
                  {
                    "name": "getMessage",
                    "kind": "function",
                    "scope": "static"
                  }
                ],
                "namespace": "conversation.Conversation.getMessage"
              },
              {
                "description": {
                  "type": "root",
                  "children": [
                    {
                      "type": "paragraph",
                      "children": [
                        {
                          "type": "text",
                          "value": "Subscribe to this conversations messages array."
                        }
                      ]
                    }
                  ]
                },
                "tags": [
                  {
                    "title": "public",
                    "description": null,
                    "lineNumber": 3,
                    "type": null
                  },
                  {
                    "title": "static",
                    "description": null,
                    "lineNumber": 4
                  },
                  {
                    "title": "memberof",
                    "description": "conversation.Conversation",
                    "lineNumber": 5
                  },
                  {
                    "title": "param",
                    "description": "A subscriber function to be triggered when the messages array of this conversation is updated.",
                    "lineNumber": 6,
                    "type": {
                      "type": "NameExpression",
                      "name": "Function"
                    },
                    "name": "subscriber"
                  },
                  {
                    "title": "param",
                    "description": "The conversation participants.",
                    "lineNumber": 7,
                    "type": {
                      "type": "NameExpression",
                      "name": "string"
                    },
                    "name": "subscriber.destination"
                  },
                  {
                    "title": "param",
                    "description": "The ID of the message that caused the event.",
                    "lineNumber": 8,
                    "type": {
                      "type": "NameExpression",
                      "name": "string"
                    },
                    "name": "subscriber.messageId"
                  },
                  {
                    "title": "return",
                    "description": "The unsubscribe function.",
                    "lineNumber": 9,
                    "type": {
                      "type": "NameExpression",
                      "name": "Function"
                    }
                  }
                ],
                "loc": {
                  "start": {
                    "line": 181,
                    "column": 6
                  },
                  "end": {
                    "line": 191,
                    "column": 9
                  }
                },
                "context": {
                  "loc": {
                    "start": {
                      "line": 192,
                      "column": 6
                    },
                    "end": {
                      "line": 209,
                      "column": 7
                    }
                  },
                  "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/interface/mixins.js"
                },
                "augments": [],
                "examples": [],
                "implements": [],
                "params": [
                  {
                    "title": "param",
                    "name": "subscriber",
                    "lineNumber": 6,
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "A subscriber function to be triggered when the messages array of this conversation is updated."
                            }
                          ]
                        }
                      ]
                    },
                    "type": {
                      "type": "NameExpression",
                      "name": "Function"
                    },
                    "properties": [
                      {
                        "title": "param",
                        "name": "subscriber.destination",
                        "lineNumber": 7,
                        "description": {
                          "type": "root",
                          "children": [
                            {
                              "type": "paragraph",
                              "children": [
                                {
                                  "type": "text",
                                  "value": "The conversation participants."
                                }
                              ]
                            }
                          ]
                        },
                        "type": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      },
                      {
                        "title": "param",
                        "name": "subscriber.messageId",
                        "lineNumber": 8,
                        "description": {
                          "type": "root",
                          "children": [
                            {
                              "type": "paragraph",
                              "children": [
                                {
                                  "type": "text",
                                  "value": "The ID of the message that caused the event."
                                }
                              ]
                            }
                          ]
                        },
                        "type": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      }
                    ]
                  }
                ],
                "properties": [],
                "returns": [
                  {
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "The unsubscribe function."
                            }
                          ]
                        }
                      ]
                    },
                    "title": "returns",
                    "type": {
                      "type": "NameExpression",
                      "name": "Function"
                    }
                  }
                ],
                "sees": [],
                "throws": [],
                "todos": [],
                "yields": [],
                "access": "public",
                "scope": "static",
                "memberof": "conversation.Conversation",
                "name": "subscribe",
                "kind": "function",
                "members": {
                  "global": [],
                  "inner": [],
                  "instance": [],
                  "events": [],
                  "static": []
                },
                "path": [
                  {
                    "name": "conversation",
                    "kind": "namespace"
                  },
                  {
                    "name": "Conversation",
                    "kind": "typedef",
                    "scope": "static"
                  },
                  {
                    "name": "subscribe",
                    "kind": "function",
                    "scope": "static"
                  }
                ],
                "namespace": "conversation.Conversation.subscribe"
              }
            ]
          },
          "path": [
            {
              "name": "conversation",
              "kind": "namespace"
            },
            {
              "name": "Conversation",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "conversation.Conversation"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Message object is a means by which a sender can deliver information to a recipient."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Creating and sending a message:"
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A message object can be obtained through the "
                  },
                  {
                    "type": "link",
                    "url": "#conversationconversationcreatemessage",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Conversation.createMessage"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API on an existing conversation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Messages have Parts which represent pieces of a message. Currently, only a 'text' part is suported.\nOnce all the desired parts have been added to the message using the "
                  },
                  {
                    "type": "link",
                    "url": "conversation.Message.addPart",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Message.addPart"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " function,\nthe message can then be sent using the "
                  },
                  {
                    "type": "link",
                    "url": "#conversationmessagesend",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Message.send"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " function."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Once the sender sends a message, this message is saved in sender's state as an object.\nSimilarly, once the recipient gets a message, this message is saved in recipient's state."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieving a delivered message:"
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Once a message is delivered successfully, it can be\nobtained through the "
                  },
                  {
                    "type": "link",
                    "url": "#conversationconversationgetmessages",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Conversation.getMessages"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "link",
                    "url": "#conversationconversationgetmessage",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Conversation.getMessage"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API on an existing conversation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Below are the properties pertaining to the message object, returned by Conversation.getMessage(s) APIs, for either sender or recipient."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "property",
              "description": "A Unix timestamp in seconds marking the time when the message was created by sender.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "timestamp"
            },
            {
              "title": "property",
              "description": "An array of Part Objects.",
              "lineNumber": 22,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "conversation.Part"
                  }
                ]
              },
              "name": "parts"
            },
            {
              "title": "property",
              "description": "The primary contact address of the sender.",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "sender"
            },
            {
              "title": "property",
              "description": "An array of primary contact addresses associated with various destinations to which the message is meant to be delivered. Currently, only one destination is supported.",
              "lineNumber": 24,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "destination"
            },
            {
              "title": "property",
              "description": "The unique id of the message. The message object (stored in sender's state) has a different id\nthan the one associated with the message object stored in recipient's state.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "messageId"
            },
            {
              "title": "property",
              "description": "The type of message that was sent. See {@link conversation.chatTypes} for valid types.\nThis property applies only to message objects stored in sender's state.",
              "lineNumber": 27,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "type"
            },
            {
              "title": "public",
              "description": null,
              "lineNumber": 30,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 31
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 32,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "Message"
            },
            {
              "title": "memberof",
              "description": "conversation",
              "lineNumber": 33
            }
          ],
          "loc": {
            "start": {
              "line": 29,
              "column": 0
            },
            "end": {
              "line": 63,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 64,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "timestamp",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A Unix timestamp in seconds marking the time when the message was created by sender."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            },
            {
              "title": "property",
              "name": "parts",
              "lineNumber": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An array of Part Objects."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "conversation.Part"
                  }
                ]
              }
            },
            {
              "title": "property",
              "name": "sender",
              "lineNumber": 23,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The primary contact address of the sender."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "destination",
              "lineNumber": 24,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An array of primary contact addresses associated with various destinations to which the message is meant to be delivered. Currently, only one destination is supported."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            },
            {
              "title": "property",
              "name": "messageId",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The unique id of the message. The message object (stored in sender's state) has a different id\nthan the one associated with the message object stored in recipient's state."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "type",
              "lineNumber": 27,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The type of message that was sent. See "
                      },
                      {
                        "type": "link",
                        "url": "conversation.chatTypes",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "conversation.chatTypes"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": " for valid types.\nThis property applies only to message objects stored in sender's state."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "Message",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "conversation",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": [
              {
                "description": {
                  "type": "root",
                  "children": [
                    {
                      "type": "paragraph",
                      "children": [
                        {
                          "type": "text",
                          "value": "Sends the message."
                        }
                      ]
                    }
                  ]
                },
                "tags": [
                  {
                    "title": "public",
                    "description": null,
                    "lineNumber": 3,
                    "type": null
                  },
                  {
                    "title": "static",
                    "description": null,
                    "lineNumber": 4
                  },
                  {
                    "title": "method",
                    "description": null,
                    "lineNumber": 5,
                    "name": "send"
                  },
                  {
                    "title": "memberof",
                    "description": "conversation.Message",
                    "lineNumber": 6
                  }
                ],
                "loc": {
                  "start": {
                    "line": 241,
                    "column": 6
                  },
                  "end": {
                    "line": 248,
                    "column": 9
                  }
                },
                "context": {
                  "loc": {
                    "start": {
                      "line": 249,
                      "column": 6
                    },
                    "end": {
                      "line": 265,
                      "column": 7
                    }
                  },
                  "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/messaging/interface/mixins.js"
                },
                "augments": [],
                "examples": [],
                "implements": [],
                "params": [],
                "properties": [],
                "returns": [],
                "sees": [],
                "throws": [],
                "todos": [],
                "yields": [],
                "access": "public",
                "scope": "static",
                "kind": "function",
                "name": "send",
                "memberof": "conversation.Message",
                "members": {
                  "global": [],
                  "inner": [],
                  "instance": [],
                  "events": [],
                  "static": []
                },
                "path": [
                  {
                    "name": "conversation",
                    "kind": "namespace"
                  },
                  {
                    "name": "Message",
                    "kind": "typedef",
                    "scope": "static"
                  },
                  {
                    "name": "send",
                    "kind": "function",
                    "scope": "static"
                  }
                ],
                "namespace": "conversation.Message.send"
              }
            ]
          },
          "path": [
            {
              "name": "conversation",
              "kind": "namespace"
            },
            {
              "name": "Message",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "conversation.Message"
        }
      ]
    },
    "path": [
      {
        "name": "conversation",
        "kind": "namespace"
      }
    ],
    "namespace": "conversation"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The SDK has an internal logging system for providing information about its\nbehaviour. The SDK will generate logs, at different levels for different\ntypes of information, which are routed to a\n\""
            },
            {
              "type": "link",
              "url": "#loggerloghandler",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "Log Handler"
                }
              ]
            },
            {
              "type": "text",
              "value": "\" for consumption. An application\ncan provide their own Log Handler (see\n"
            },
            {
              "type": "link",
              "url": "#configconfiglogs",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "config.logs"
                }
              ]
            },
            {
              "type": "text",
              "value": ") to customize how the logs are\nhandled, or allow the default Log Handler to print the logs to the\nconsole."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The SDK's default Log Handler is merely a thin wrapper around the browser's\nconsole API (ie. "
            },
            {
              "type": "inlineCode",
              "value": "window.console"
            },
            {
              "type": "text",
              "value": "). It receives the log generated by the\nSDK, called a \""
            },
            {
              "type": "link",
              "url": "#loggerlogentry",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "Log Entry"
                }
              ]
            },
            {
              "type": "text",
              "value": "\", formats a\nhuman-readable message with it, then uses the console to log it at the\nappropriate level. This is important to be aware of, since your browser's\nconsole may affect how you see the SDK's default log messages. Since the\ndefault Log Handler uses the console's levels, the browser may filter\nwhich messages are shown depending on which levels it has configured. For\na user that understands console log levels, this can be helpful for\nfiltering the logs to only the relevant information. But it can equally\nbe a hindrance by hiding the more detailed log messages (at the 'debug'\nlevel), since browser can have this level hidden by default. For this\nreason, we recommend providing a custom Log Handler to the SDK that is\nbetter suited for your application and its users."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 25,
        "type": null
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 26,
        "type": null,
        "name": "logger"
      },
      {
        "title": "requires",
        "description": null,
        "lineNumber": 27,
        "name": "logs"
      }
    ],
    "loc": {
      "start": {
        "line": 4,
        "column": 0
      },
      "end": {
        "line": 32,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 40,
          "column": 0
        },
        "end": {
          "line": 203,
          "column": 1
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/logs/interface/api.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "logger",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Possible levels for the SDK logger."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will provide "
                  },
                  {
                    "type": "link",
                    "url": "#loggerlogentry",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Log Entries"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " to the\n"
                  },
                  {
                    "type": "link",
                    "url": "#loggerloghandler",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Log Handler"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " for all logs at or above the set\nlog level. 'debug' is considered the lowest level and 'silent' the\nhighest level. For example, if the current level is 'info', then the\n"
                  },
                  {
                    "type": "link",
                    "url": "#loggerloghandler",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Log Handler"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " will receive\n"
                  },
                  {
                    "type": "link",
                    "url": "#loggerlogentry",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "Log Entries"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " for logs at 'info', 'warn', and\n'error', but not for the 'debug' level."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "memberof",
              "description": "logger",
              "lineNumber": 12
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 13,
              "name": "levels"
            },
            {
              "title": "property",
              "description": "Nothing will be logged.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "SILENT"
            },
            {
              "title": "property",
              "description": "Unhandled error information will be logged. If\n   the SDK encounters an issue it cannot resolve, the error will be included\n   in the logs. This likely points to an issue with the SDK itself or an\n   issue with how the SDK is being used.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "ERROR"
            },
            {
              "title": "property",
              "description": "Warning messages for the application developer will\n   be logged. If the SDK encounters an issue that it can recover and continue,\n   a warning about the issue will be included in the logs. These logs point\n   to issues that need to be handled by the application. For example, providing\n   an invalid configuration to the SDK will cause a warning log that explains\n   the issue.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "WARN"
            },
            {
              "title": "property",
              "description": "General information about the SDK's operations will\n   be logged, outlining how the SDK is handling the operations. Reading through\n   these logs should provide a high-level view of what the SDK is doing,\n   and why it is doing it.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "INFO"
            },
            {
              "title": "property",
              "description": "Detailed information about the SDK's operations,\n   meant for debugging issues, will be logged. Specific information and relevant\n   operation data are provided for understanding the scenario that the SDK\n   was in during the operation.",
              "lineNumber": 29,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "DEBUG"
            }
          ],
          "loc": {
            "start": {
              "line": 45,
              "column": 4
            },
            "end": {
              "line": 78,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 79,
                "column": 4
              },
              "end": {
                "line": 85,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/logs/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "SILENT",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Nothing will be logged."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "ERROR",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Unhandled error information will be logged. If\nthe SDK encounters an issue it cannot resolve, the error will be included\nin the logs. This likely points to an issue with the SDK itself or an\nissue with how the SDK is being used."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "WARN",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Warning messages for the application developer will\nbe logged. If the SDK encounters an issue that it can recover and continue,\na warning about the issue will be included in the logs. These logs point\nto issues that need to be handled by the application. For example, providing\nan invalid configuration to the SDK will cause a warning log that explains\nthe issue."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "INFO",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "General information about the SDK's operations will\nbe logged, outlining how the SDK is handling the operations. Reading through\nthese logs should provide a high-level view of what the SDK is doing,\nand why it is doing it."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "DEBUG",
              "lineNumber": 29,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Detailed information about the SDK's operations,\nmeant for debugging issues, will be logged. Specific information and relevant\noperation data are provided for understanding the scenario that the SDK\nwas in during the operation."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "logger",
          "kind": "function",
          "name": "levels",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "logger",
              "kind": "namespace"
            },
            {
              "name": "levels",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "logger.levels"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A LogEntry object is the data that the SDK compiles when information is\nlogged. It contains both the logged information and meta-info about when\nand who logged it."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A "
                  },
                  {
                    "type": "link",
                    "url": "#loggerloghandler",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "LogHandler"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " provided to the SDK (see\n"
                  },
                  {
                    "type": "link",
                    "url": "#configconfiglogs",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "config.logs"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ") will need to handle LogEntry\nobjects."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 9,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 10
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "LogEntry"
            },
            {
              "title": "memberof",
              "description": "logger",
              "lineNumber": 12
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 13,
              "name": "logs"
            },
            {
              "title": "property",
              "description": "When the log was created, based on UNIX epoch.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "timestamp"
            },
            {
              "title": "property",
              "description": "The log function that was used to create the log.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "method"
            },
            {
              "title": "property",
              "description": "The level of severity the log.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "level"
            },
            {
              "title": "property",
              "description": "The subject that the log is about.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "target"
            },
            {
              "title": "property",
              "description": "The type of the target. This is also\n   used as part of the name of the Logger.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "target.type"
            },
            {
              "title": "property",
              "description": "A unique identifier for the target.",
              "lineNumber": 20,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "target.id"
            },
            {
              "title": "property",
              "description": "A combination of the target type and ID. If no\n   id was provided, this will be the same as the type.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "target.name"
            },
            {
              "title": "property",
              "description": "The logged information, given to the Logger\n   method as parameters.",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "Array"
              },
              "name": "messages"
            },
            {
              "title": "property",
              "description": "Timing data, if the log method was a timer method.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "timer"
            },
            {
              "title": "example",
              "description": "function defaultLogHandler (logEntry) {\n  // Compile the meta info of the log for a prefix.\n  const { timestamp, level, target } = logEntry\n  let { method } = logEntry\n  const logInfo = `${timestamp} - ${target.type} - ${level}`\n\n  // Assume that the first message parameter is a string.\n  const [log, ...extra] = logEntry.messages\n\n  // For the timer methods, don't actually use the console methods.\n  //    The Logger already did the timing, so simply log out the info.\n  if (['time', 'timeLog', 'timeEnd'].includes(method)) {\n    method = 'debug'\n  }\n\n  console[method](`${logInfo} - ${log}`, ...extra)\n}",
              "lineNumber": 26
            }
          ],
          "loc": {
            "start": {
              "line": 8,
              "column": 0
            },
            "end": {
              "line": 52,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 94,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/logs/docs.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "function defaultLogHandler (logEntry) {\n  // Compile the meta info of the log for a prefix.\n  const { timestamp, level, target } = logEntry\n  let { method } = logEntry\n  const logInfo = `${timestamp} - ${target.type} - ${level}`\n\n  // Assume that the first message parameter is a string.\n  const [log, ...extra] = logEntry.messages\n\n  // For the timer methods, don't actually use the console methods.\n  //    The Logger already did the timing, so simply log out the info.\n  if (['time', 'timeLog', 'timeEnd'].includes(method)) {\n    method = 'debug'\n  }\n\n  console[method](`${logInfo} - ${log}`, ...extra)\n}"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "timestamp",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "When the log was created, based on UNIX epoch."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            },
            {
              "title": "property",
              "name": "method",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The log function that was used to create the log."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "level",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The level of severity the log."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "target",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The subject that the log is about."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "property",
                  "name": "target.type",
                  "lineNumber": 18,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The type of the target. This is also\nused as part of the name of the Logger."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "property",
                  "name": "target.id",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "A unique identifier for the target."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "property",
                  "name": "target.name",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "A combination of the target type and ID. If no\nid was provided, this will be the same as the type."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            },
            {
              "title": "property",
              "name": "messages",
              "lineNumber": 23,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The logged information, given to the Logger\nmethod as parameters."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Array"
              }
            },
            {
              "title": "property",
              "name": "timer",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Timing data, if the log method was a timer method."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "LogEntry",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "logger",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "logger",
              "kind": "namespace"
            },
            {
              "name": "LogEntry",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "logger.LogEntry"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A LogHandler can be used to customize how the SDK should log information. By\ndefault, the SDK will log information to the console, but a LogHandler can\nbe configured to change this behaviour."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A LogHandler can be provided to the SDK as part of its configuration (see\n"
                  },
                  {
                    "type": "link",
                    "url": "#configconfiglogs",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "config.logs"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "). The SDK will then provide this\nfunction with the logged information."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 9,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 10
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "Function"
              },
              "name": "LogHandler"
            },
            {
              "title": "memberof",
              "description": "logger",
              "lineNumber": 12
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 13,
              "name": "logs"
            },
            {
              "title": "param",
              "description": "The LogEntry to be logged.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "LogEntry"
            },
            {
              "title": "example",
              "description": "// Define a custom function to handle logs.\nfunction logHandler (logEntry) {\n  // Compile the meta info of the log for a prefix.\n  const { timestamp, level, target } = logEntry\n  let { method } = logEntry\n  const logInfo = `${timestamp} - ${target.type} - ${level}`\n\n  // Assume that the first message parameter is a string.\n  const [log, ...extra] = logEntry.messages\n\n  // For the timer methods, don't actually use the console methods.\n  //    The Logger already did the timing, so simply log out the info.\n  if (['time', 'timeLog', 'timeEnd'].includes(method)) {\n    method = 'debug'\n  }\n\n  console[method](`${logInfo} - ${log}`, ...extra)\n}\n\n// Provide the LogHandler as part of the SDK configurations.\nconst configs = { ... }\nconfigs.logs.handler = logHandler\nconst client = create(configs)",
              "lineNumber": 15
            }
          ],
          "loc": {
            "start": {
              "line": 54,
              "column": 0
            },
            "end": {
              "line": 93,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 94,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/logs/docs.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Define a custom function to handle logs.\nfunction logHandler (logEntry) {\n  // Compile the meta info of the log for a prefix.\n  const { timestamp, level, target } = logEntry\n  let { method } = logEntry\n  const logInfo = `${timestamp} - ${target.type} - ${level}`\n\n  // Assume that the first message parameter is a string.\n  const [log, ...extra] = logEntry.messages\n\n  // For the timer methods, don't actually use the console methods.\n  //    The Logger already did the timing, so simply log out the info.\n  if (['time', 'timeLog', 'timeEnd'].includes(method)) {\n    method = 'debug'\n  }\n\n  console[method](`${logInfo} - ${log}`, ...extra)\n}\n\n// Provide the LogHandler as part of the SDK configurations.\nconst configs = { ... }\nconfigs.logs.handler = logHandler\nconst client = create(configs)"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "LogEntry",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The LogEntry to be logged."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "LogHandler",
          "type": {
            "type": "NameExpression",
            "name": "Function"
          },
          "memberof": "logger",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "logger",
              "kind": "namespace"
            },
            {
              "name": "LogHandler",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "logger.LogHandler"
        }
      ]
    },
    "path": [
      {
        "name": "logger",
        "kind": "namespace"
      }
    ],
    "namespace": "logger"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'media' namespace provides an interface for interacting with Media that the\nSDK has access to. Media is used in conjunction with the "
            },
            {
              "type": "link",
              "url": "#call",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "Calls"
                }
              ]
            },
            {
              "type": "text",
              "value": "\nfeature to manipulate and render the Tracks sent and received from a Call."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "Media and Track objects are not created directly, but are created as part of\nCall operations. Media and Tracks will either be marked as \"local\" or\n\"remote\" depending on whether their source is the local user's machine\nor a remote user's machine."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The Media feature also keeps track of media devices that the user's machine\ncan access. Any media device (eg. USB headset) connected to the machine\ncan be used as a source for media. Available devices can be found using\nthe "
            },
            {
              "type": "link",
              "url": "#mediagetdevices",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "media.getDevices"
                }
              ]
            },
            {
              "type": "text",
              "value": " API."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 15,
        "type": null
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 16,
        "type": null,
        "name": "media"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 18,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 53,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "media",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The media devices available for use have changed."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Information about the available media devices can be retrieved using the\n"
                  },
                  {
                    "type": "link",
                    "url": "#mediagetdevices",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.getDevices"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 7
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 8
            },
            {
              "title": "event",
              "description": "devices:change",
              "lineNumber": 9
            },
            {
              "title": "example",
              "description": "// Listen for changes to available media devices.\nclient.on('devices:change', function () {\n   // Retrieve the latest media device lists.\n   const devices = client.media.getDevices()\n})",
              "lineNumber": 10
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 17,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 18,
                "column": 0
              },
              "end": {
                "line": 18,
                "column": 47
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Listen for changes to available media devices.\nclient.on('devices:change', function () {\n   // Retrieve the latest media device lists.\n   const devices = client.media.getDevices()\n})"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "event",
          "name": "devices:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "devices:change",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "media.event:devices:change"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An error occurred while trying to access media devices."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The most common causes of this error are when the browser does not have\npermission from the end-user to access the devices, or when the browser\ncannot find a media device that fulfills the\n"
                  },
                  {
                    "type": "link",
                    "url": "#callmediaconstraint",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "MediaConstraint(s)"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " that was provided."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 8,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 9
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 10
            },
            {
              "title": "event",
              "description": "devices:error",
              "lineNumber": 11
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "Error"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 20,
              "column": 0
            },
            "end": {
              "line": 34,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 35,
                "column": 0
              },
              "end": {
                "line": 35,
                "column": 55
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Error"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "event",
          "name": "devices:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "devices:error",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "media.event:devices:error"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified Tracks have been muted."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Track can be muted using the "
                  },
                  {
                    "type": "link",
                    "url": "#mediamutetracks",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.muteTracks"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 5
            },
            {
              "title": "event",
              "description": "media:muted",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The list of Tracks that were muted.",
              "lineNumber": 8,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "params.tracks"
            }
          ],
          "loc": {
            "start": {
              "line": 37,
              "column": 0
            },
            "end": {
              "line": 46,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 47,
                "column": 0
              },
              "end": {
                "line": 47,
                "column": 41
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.tracks",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The list of Tracks that were muted."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "media",
          "kind": "event",
          "name": "media:muted",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "media:muted",
              "kind": "event"
            }
          ],
          "namespace": "media.event:media:muted"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified Tracks have been unmuted."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Track can be unmuted using the "
                  },
                  {
                    "type": "link",
                    "url": "#mediaunmutetracks",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.unmuteTracks"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nAPI."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 6
            },
            {
              "title": "event",
              "description": "media:unmuted",
              "lineNumber": 7
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The list of Tracks that were unmuted.",
              "lineNumber": 9,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "params.tracks"
            }
          ],
          "loc": {
            "start": {
              "line": 49,
              "column": 0
            },
            "end": {
              "line": 59,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 60,
                "column": 0
              },
              "end": {
                "line": 60,
                "column": 45
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.tracks",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The list of Tracks that were unmuted."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "media",
          "kind": "event",
          "name": "media:unmuted",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "media:unmuted",
              "kind": "event"
            }
          ],
          "namespace": "media.event:media:unmuted"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified Track has had its media source muted."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The Track is still active, but is not receiving media any longer. An audio\ntrack will be silent and a video track will be a black frame. It is\npossible for the track to start receiving media again (see the\n"
                  },
                  {
                    "type": "link",
                    "url": "#mediaeventmediasourceunmuted",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media:sourceUnmuted"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event)."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event is generated outside the control of the SDK. This will predominantly\nhappen for a remote track during network issues, where media will lose frames\nand be \"choppy\". This may also happen for a local track if the browser or\nend-user stops allowing the SDK to access the media device, for example."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 12,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 13
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 14
            },
            {
              "title": "event",
              "description": "media:sourceMuted",
              "lineNumber": 15
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The track that is affected as a result of media source being muted.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.trackId"
            }
          ],
          "loc": {
            "start": {
              "line": 62,
              "column": 0
            },
            "end": {
              "line": 80,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 81,
                "column": 0
              },
              "end": {
                "line": 81,
                "column": 53
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.trackId",
                  "lineNumber": 17,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The track that is affected as a result of media source being muted."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "event",
          "name": "media:sourceMuted",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "media:sourceMuted",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "media.event:media:sourceMuted"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified Track has started receiving media from its source once again."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The Track returns to the state before it was muted (see the\n"
                  },
                  {
                    "type": "link",
                    "url": "#mediaeventmediasourcemuted",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media:sourceMuted"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event), and will\nbe able to display video or play audio once again."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event is generated outside the control of the SDK, when the cause of the\nmedia source being muted had been undone."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 9,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 10
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 11
            },
            {
              "title": "event",
              "description": "media:sourceUnmuted",
              "lineNumber": 12
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The track that is affected as a result of media source being unmuted.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.trackId"
            }
          ],
          "loc": {
            "start": {
              "line": 83,
              "column": 0
            },
            "end": {
              "line": 98,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 99,
                "column": 0
              },
              "end": {
                "line": 99,
                "column": 57
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.trackId",
                  "lineNumber": 14,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The track that is affected as a result of media source being unmuted."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "event",
          "name": "media:sourceUnmuted",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "media:sourceUnmuted",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "media.event:media:sourceUnmuted"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The specified Track has been rendered into an element."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 5
            },
            {
              "title": "event",
              "description": "media:trackRendered",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The list of track id's that were rendered.",
              "lineNumber": 8,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "params.trackIds"
            },
            {
              "title": "param",
              "description": "The css selector used to identify the element the track is rendered into.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.selector"
            },
            {
              "title": "param",
              "description": "An error object, if the operation was not successful.",
              "lineNumber": 10,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "api.BasicError"
                }
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 101,
              "column": 0
            },
            "end": {
              "line": 112,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 113,
                "column": 0
              },
              "end": {
                "line": 113,
                "column": 51
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.trackIds",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The list of track id's that were rendered."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                },
                {
                  "title": "param",
                  "name": "params.selector",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The css selector used to identify the element the track is rendered into."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 10,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "An error object, if the operation was not successful."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "api.BasicError"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "event",
          "name": "media:trackRendered",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "media:trackRendered",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "media.event:media:trackRendered"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A local Track has ended unexpectedly. The Track may still be part of a Call but\nhas become disconnected from its media source and is not recoverable."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event is emitted when an action other than an SDK operation stops the\ntrack. The most comon scenarios are when a device being used for a Call\ndisconnects, any local tracks (such as audio from a bluetooth headset's\nmicrophone or video from a USB camera) from that device will be ended.\nAnother scenario is for screensharing, where some browsers provide the\nability to stop screensharing directly rather than through an SDK operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "When a local track ends this way, it will still be part of the Call but will\nnot have any media. The track can be removed from the call with the\n"
                  },
                  {
                    "type": "link",
                    "url": "#callremovemedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.removeMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API so the remote side of the Call knows the track\nhas stopped, or the track can be replaced with a new track using the\n"
                  },
                  {
                    "type": "link",
                    "url": "#callreplacetrack",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.replaceTrack"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API to prevent any interruption."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 16,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 18
            },
            {
              "title": "event",
              "description": "media:trackEnded",
              "lineNumber": 19
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Track that has ended.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.trackId"
            },
            {
              "title": "param",
              "description": "The ID of the Call the Track is used in.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.callId"
            }
          ],
          "loc": {
            "start": {
              "line": 115,
              "column": 0
            },
            "end": {
              "line": 138,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 139,
                "column": 0
              },
              "end": {
                "line": 139,
                "column": 45
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.trackId",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Track that has ended."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                },
                {
                  "title": "param",
                  "name": "params.callId",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the Call the Track is used in."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "event",
          "name": "media:trackEnded",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "media:trackEnded",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "media.event:media:trackEnded"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves the available media devices for use."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "link",
                    "url": "#mediaeventdeviceschange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "devices:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event will be\nemitted when the available media devices have changed."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 7
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 8
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 9,
              "name": "getDevices"
            },
            {
              "title": "return",
              "description": "The lists of camera, microphone, and speaker devices.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 25,
              "column": 4
            },
            "end": {
              "line": 36,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 37,
                "column": 4
              },
              "end": {
                "line": 40,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The lists of camera, microphone, and speaker devices."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "function",
          "name": "getDevices",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "getDevices",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.getDevices"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves an available Media object with a specific Media ID."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "getById"
            },
            {
              "title": "param",
              "description": "The ID of the Media to retrieve.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "mediaId"
            },
            {
              "title": "return",
              "description": "A Media object.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "call.MediaObject"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 42,
              "column": 4
            },
            "end": {
              "line": 50,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 51,
                "column": 4
              },
              "end": {
                "line": 54,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "mediaId",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the Media to retrieve."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A Media object."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "call.MediaObject"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "function",
          "name": "getById",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "getById",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.getById"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieve an available Track object with a specific Track ID."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "getTrackById"
            },
            {
              "title": "param",
              "description": "The ID of the Track to retrieve.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "trackId"
            },
            {
              "title": "return",
              "description": "A Track object.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "call.TrackObject"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 56,
              "column": 4
            },
            "end": {
              "line": 64,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 65,
                "column": 4
              },
              "end": {
                "line": 68,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "trackId",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the Track to retrieve."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A Track object."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "call.TrackObject"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "function",
          "name": "getTrackById",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "getTrackById",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.getTrackById"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Create local media Tracks."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "createLocalMedia"
            },
            {
              "title": "param",
              "description": "Collection of constraints for each media type.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "mediaConstraints"
            },
            {
              "title": "param",
              "description": "Native media constraints for audio.",
              "lineNumber": 7,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "mediaConstraints.audio"
            },
            {
              "title": "param",
              "description": "Native media constraints for video.",
              "lineNumber": 8,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "mediaConstraints.video"
            },
            {
              "title": "param",
              "description": "Native media constraints for display (screen).",
              "lineNumber": 9,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "mediaConstraints.screen"
            },
            {
              "title": "returns",
              "description": "Resolves with an array of objects containing both a media type and a media object.",
              "lineNumber": 10,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "media.DetachedMedia"
                      }
                    ]
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Throws a USER_MEDIA_ERROR error if any any other media type other than audio, video or screen is passed in mediaConstraints.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "throws",
              "description": "Throws a USER_MEDIA_ERROR error if provided constraints cannot be fulfilled.",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "throws",
              "description": "Throws a USER_MEDIA_ERROR error if it fails to get media for other reasons.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "// Create detached media for your local video\nconst medias = await client.media.createLocalMedia({ video: true })",
              "lineNumber": 14
            }
          ],
          "loc": {
            "start": {
              "line": 70,
              "column": 4
            },
            "end": {
              "line": 87,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 88,
                "column": 4
              },
              "end": {
                "line": 99,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Create detached media for your local video\nconst medias = await client.media.createLocalMedia({ video: true })"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "mediaConstraints",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Collection of constraints for each media type."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "mediaConstraints.audio",
                  "lineNumber": 7,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Native media constraints for audio."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "boolean"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "mediaConstraints.video",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Native media constraints for video."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "boolean"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "mediaConstraints.screen",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Native media constraints for display (screen)."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "boolean"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Resolves with an array of objects containing both a media type and a media object."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "media.DetachedMedia"
                      }
                    ]
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Throws a USER_MEDIA_ERROR error if any any other media type other than audio, video or screen is passed in mediaConstraints."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Throws a USER_MEDIA_ERROR error if provided constraints cannot be fulfilled."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Throws a USER_MEDIA_ERROR error if it fails to get media for other reasons."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "function",
          "name": "createLocalMedia",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "createLocalMedia",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.createLocalMedia"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Gets an array of live detached media objects."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "getLocalMedia"
            },
            {
              "title": "returns",
              "description": "An array of live detached media objects.",
              "lineNumber": 6,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "media.DetachedMedia"
                  }
                ]
              }
            },
            {
              "title": "example",
              "description": "await client.media.createLocalMedia({ video: true })\n// Get all detached tracks\nconst medias = client.media.getLocalMedia()",
              "lineNumber": 7
            }
          ],
          "loc": {
            "start": {
              "line": 101,
              "column": 4
            },
            "end": {
              "line": 112,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 113,
                "column": 4
              },
              "end": {
                "line": 128,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "await client.media.createLocalMedia({ video: true })\n// Get all detached tracks\nconst medias = client.media.getLocalMedia()"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An array of live detached media objects."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "media.DetachedMedia"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "function",
          "name": "getLocalMedia",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "getLocalMedia",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.getLocalMedia"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Dispose local media Tracks."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "disposeLocalMedia"
            },
            {
              "title": "param",
              "description": "An object representing the local media to dispose or a string representing a trackId.",
              "lineNumber": 6,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "media.DetachedMedia"
                  },
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "localMedia"
            },
            {
              "title": "returns",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "An error indicating that trackId must be defined.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "throws",
              "description": "An error indicating that the track that is to be disposed is in use by a call.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "throws",
              "description": "An error indicating that the track that is to be disposed was not created locally.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 130,
              "column": 4
            },
            "end": {
              "line": 141,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 142,
                "column": 4
              },
              "end": {
                "line": 156,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "localMedia",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An object representing the local media to dispose or a string representing a trackId."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "NameExpression",
                    "name": "media.DetachedMedia"
                  },
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": []
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An error indicating that trackId must be defined."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An error indicating that the track that is to be disposed is in use by a call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An error indicating that the track that is to be disposed was not created locally."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "function",
          "name": "disposeLocalMedia",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "disposeLocalMedia",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.disposeLocalMedia"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Requests permission to access media devices on the end-user's machine."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will trigger the browser to ask the end-user for permission to\naccess their camera and/or microphone. These permissions are\nneeded for the SDK to read information about the devices (the label,\nfor example) and for using the devices for a call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If the browser does not yet have permission, it will prompt the end-user\nwith a small pop-up window, giving the user a chance to allow/deny the\npermissions. The behaviour of this pop-up window differs slightly\nbased on the browser; it may automatically save the user's decision\n(such as in Chrome and Safari) or it may require the user to choose\nwhether their decision should be saved (such as in Firefox)."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is not required for proper usage of media and/or calls, but\nhelps to prepare a user before a call is made or received. It allows\nan application to prompt the user for device permissions when it is\nconvenient for them, rather than during call setup. If the user saves\ntheir decision, they will not be prompted again when the SDK accesses\nthose devices for a call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "For device information, the "
                  },
                  {
                    "type": "link",
                    "url": "#mediagetdevices",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.getDevices"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API will retrieve\nthe list of media devices available for the SDK to use. If this list\nis empty, or is missing information, it is likely that the browser\ndoes not have permission to access the device's information. We\nrecommend using the "
                  },
                  {
                    "type": "link",
                    "url": "#mediainitializedevices",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.initializeDevices"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API in this\nscenario if you would like to allow the end-user to select which\ndevice(s) they would like to use when they make a call, rather than\nusing the system default."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#mediaeventdeviceschange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "devices:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent when the operation is successful or a\n"
                  },
                  {
                    "type": "link",
                    "url": "#mediaeventdeviceserror",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "devices:error"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event if an error is\nencountered."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 35,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 36
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 37
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 38,
              "name": "initializeDevices"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 39,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "constraints"
            },
            {
              "title": "param",
              "description": "Whether to ask for audio device permissions.",
              "lineNumber": 40,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "constraints.audio",
              "default": "true"
            },
            {
              "title": "param",
              "description": "Whether to ask for video device permissions.",
              "lineNumber": 41,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "constraints.video",
              "default": "true"
            },
            {
              "title": "example",
              "description": "// The SDK will ask for both audio and video permissions by default.\nclient.media.initializeDevices()\n\n// The SDK will only ask for audio permissions.\nclient.media.initializeDevices({ audio: true, video: false })",
              "lineNumber": 42
            }
          ],
          "loc": {
            "start": {
              "line": 159,
              "column": 2
            },
            "end": {
              "line": 207,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 208,
                "column": 2
              },
              "end": {
                "line": 219,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// The SDK will ask for both audio and video permissions by default.\nclient.media.initializeDevices()\n\n// The SDK will only ask for audio permissions.\nclient.media.initializeDevices({ audio: true, video: false })"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "constraints",
              "lineNumber": 39,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "constraints.audio",
                  "lineNumber": 40,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to ask for audio device permissions."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "true"
                },
                {
                  "title": "param",
                  "name": "constraints.video",
                  "lineNumber": 41,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to ask for video device permissions."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "true"
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "function",
          "name": "initializeDevices",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "initializeDevices",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.initializeDevices"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Requests permission to access media devices on the end-user's machine."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#mediainitializedevices",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.initializeDevices"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but\nprovides feedback via a returned promise instead of emitting events.\nThis API will not cause any events to be emitted during this operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will trigger the browser to ask the end-user for permission to\naccess their camera and/or microphone. These permissions are\nneeded for the SDK to read information about the devices (the label,\nfor example) and for using the devices for a call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If the browser does not yet have permission, it will prompt the end-user\nwith a small pop-up window, giving the user a chance to allow/deny the\npermissions. The behaviour of this pop-up window differs slightly\nbased on the browser; it may automatically save the user's decision\n(such as in Chrome and Safari) or it may require the user to choose\nwhether their decision should be saved (such as in Firefox)."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is not required for proper usage of media and/or calls, but\nhelps to prepare a user before a call is made or received. It allows\nan application to prompt the user for device permissions when it is\nconvenient for them, rather than during call setup. If the user saves\ntheir decision, they will not be prompted again when the SDK accesses\nthose devices for a call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "For device information, the "
                  },
                  {
                    "type": "link",
                    "url": "#mediagetdevices",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.getDevices"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API will retrieve\nthe list of media devices available for the SDK to use. If this list\nis empty, or is missing information, it is likely that the browser\ndoes not have permission to access the device's information. We\nrecommend using the "
                  },
                  {
                    "type": "link",
                    "url": "#mediainitializedevicesasync",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.initializeDevicesAsync"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API in this\nscenario if you would like to allow the end-user to select which\ndevice(s) they would like to use when they make a call, rather than\nusing the system default."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 34,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 35
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 36
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 37
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 38,
              "name": "initializeDevicesAsync"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 39,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "constraints"
            },
            {
              "title": "param",
              "description": "Whether to ask for audio device permissions.",
              "lineNumber": 40,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "constraints.audio",
              "default": "true"
            },
            {
              "title": "param",
              "description": "Whether to ask for video device permissions.",
              "lineNumber": 41,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "constraints.video",
              "default": "true"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 42,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 43,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n   // The SDK will ask for both audio and video permissions by default.\n   await client.media.initializeDevicesAsync()\n} catch (error) {\n   // Error retrieving device permissions.\n   const { code, message } = error\n   ...\n}\n\ntry {\n   // The SDK will only ask for audio permissions.\n   await client.media.initializeDevicesAsync({ audio: true, video: false })\n} catch (error) {\n   // Error retrieving device permissions.\n   const { code, message } = error\n   ...\n}",
              "lineNumber": 44
            }
          ],
          "loc": {
            "start": {
              "line": 221,
              "column": 2
            },
            "end": {
              "line": 283,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 284,
                "column": 2
              },
              "end": {
                "line": 295,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n   // The SDK will ask for both audio and video permissions by default.\n   await client.media.initializeDevicesAsync()\n} catch (error) {\n   // Error retrieving device permissions.\n   const { code, message } = error\n   ...\n}\n\ntry {\n   // The SDK will only ask for audio permissions.\n   await client.media.initializeDevicesAsync({ audio: true, video: false })\n} catch (error) {\n   // Error retrieving device permissions.\n   const { code, message } = error\n   ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "constraints",
              "lineNumber": 39,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "constraints.audio",
                  "lineNumber": 40,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to ask for audio device permissions."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "true"
                },
                {
                  "title": "param",
                  "name": "constraints.video",
                  "lineNumber": 41,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to ask for video device permissions."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "true"
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "media",
          "kind": "function",
          "name": "initializeDevicesAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "initializeDevicesAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.initializeDevicesAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Render Media Tracks in a container."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The container is specified by providing a CSS selector string that\ncorresponds to the HTMLElement to act as the container."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 6
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 7
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 8,
              "name": "renderTracks"
            },
            {
              "title": "param",
              "description": "List of Track IDs to be rendered.",
              "lineNumber": 9,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "trackIds"
            },
            {
              "title": "param",
              "description": "A CSS selector string that uniquely\n   identifies an element. Ensure that special characters are properly\n   escaped.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "cssSelector"
            },
            {
              "title": "param",
              "description": "Additional options for rendering the tracks.",
              "lineNumber": 13,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "The speaker's Device ID to use for audio tracks.",
              "lineNumber": 14,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "options.speakerId"
            },
            {
              "title": "example",
              "description": "// When a Call receives a new track, render it.\nclient.on('call:tracksAdded', function (params) {\n   params.trackIds.forEach(trackId => {\n     const track = client.media.getTrackById(trackId)\n     const container = track.isLocal ? localContainer : remoteContainer\n\n     // Render the Call's new track when it first becomes available.\n     client.media.renderTracks([ trackId ], container)\n   }\n})",
              "lineNumber": 15
            }
          ],
          "loc": {
            "start": {
              "line": 297,
              "column": 2
            },
            "end": {
              "line": 323,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 324,
                "column": 2
              },
              "end": {
                "line": 377,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// When a Call receives a new track, render it.\nclient.on('call:tracksAdded', function (params) {\n   params.trackIds.forEach(trackId => {\n     const track = client.media.getTrackById(trackId)\n     const container = track.isLocal ? localContainer : remoteContainer\n\n     // Render the Call's new track when it first becomes available.\n     client.media.renderTracks([ trackId ], container)\n   }\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "trackIds",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "List of Track IDs to be rendered."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            },
            {
              "title": "param",
              "name": "cssSelector",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A CSS selector string that uniquely\nidentifies an element. Ensure that special characters are properly\nescaped."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 13,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Additional options for rendering the tracks."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.speakerId",
                  "lineNumber": 14,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The speaker's Device ID to use for audio tracks."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "function",
          "name": "renderTracks",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "renderTracks",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.renderTracks"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Render Media Track in a container."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is similar to the "
                  },
                  {
                    "type": "link",
                    "url": "media.renderTrack",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.renderTrack"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but\nprovides feedback via a returned promise instead of emitting events.\nThis API will not cause any events to be emitted during this operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The container is specified by providing a CSS selector string that\ncorresponds to the HTMLElement to act as the container."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 9,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 10
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 12
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 13,
              "name": "renderTrackAsync"
            },
            {
              "title": "param",
              "description": "Track ID to be rendered.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "trackId"
            },
            {
              "title": "param",
              "description": "A CSS selector string that uniquely\n   identifies an element. Ensure that special characters are properly\n   escaped.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "cssSelector"
            },
            {
              "title": "param",
              "description": "Additional options for rendering the tracks.",
              "lineNumber": 18,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "The speaker's Device ID to use for audio tracks.",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "options.speakerId"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 20,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "// When a Call receives a new track, render it.\nclient.on('call:tracksAdded', function (params) {\n   params.trackIds.forEach(trackId => {\n     const track = client.media.getTrackById(trackId)\n     const container = track.isLocal ? localContainer : remoteContainer\n\n     try {\n       // Render the Call's new track when it first becomes available.\n       await client.media.renderTrackAsync(trackId, container)\n     } catch (error) {\n       // Failed to render the track.\n       const { code, message } = error\n       ...\n     }\n   }\n})",
              "lineNumber": 22
            }
          ],
          "loc": {
            "start": {
              "line": 379,
              "column": 2
            },
            "end": {
              "line": 418,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 419,
                "column": 2
              },
              "end": {
                "line": 460,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// When a Call receives a new track, render it.\nclient.on('call:tracksAdded', function (params) {\n   params.trackIds.forEach(trackId => {\n     const track = client.media.getTrackById(trackId)\n     const container = track.isLocal ? localContainer : remoteContainer\n\n     try {\n       // Render the Call's new track when it first becomes available.\n       await client.media.renderTrackAsync(trackId, container)\n     } catch (error) {\n       // Failed to render the track.\n       const { code, message } = error\n       ...\n     }\n   }\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "trackId",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Track ID to be rendered."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "cssSelector",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A CSS selector string that uniquely\nidentifies an element. Ensure that special characters are properly\nescaped."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Additional options for rendering the tracks."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.speakerId",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The speaker's Device ID to use for audio tracks."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "media",
          "kind": "function",
          "name": "renderTrackAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "renderTrackAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.renderTrackAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Mutes the specified Tracks."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API prevents the media of the specified Tracks from being rendered. Audio\nTracks will become silent and video Tracks will be a black frame.\nThis does not stop media from being received by those Tracks. The media simply\ncannot be used by the application while the Track is muted."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If a local Track being sent in a Call is muted, the Track will be\nnoticeably muted for the remote user. If a remote Track received in a\ncall is muted, the result will only be noticeable locally."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This mute operation acts on those specified Tracks directly.\nIt does not act on the active Call as a whole."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#mediaeventmediamuted",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media:muted"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event\nwhen a Track has been muted."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 17,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 18
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 19
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 20,
              "name": "muteTracks"
            },
            {
              "title": "param",
              "description": "List of Track IDs.",
              "lineNumber": 21,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "trackIds"
            }
          ],
          "loc": {
            "start": {
              "line": 462,
              "column": 2
            },
            "end": {
              "line": 484,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 485,
                "column": 2
              },
              "end": {
                "line": 507,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "trackIds",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "List of Track IDs."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "function",
          "name": "muteTracks",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "muteTracks",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.muteTracks"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Mutes the specified Track."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is similar to the "
                  },
                  {
                    "type": "link",
                    "url": "#mediamutetracks",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.muteTracks"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but\nprovides feedback via a returned promise instead of emitting events.\nThis API will not cause any events to be emitted during this operation.\nIt will also only take a single track ID as an argument."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API prevents the media of the specified Track from being rendered. Audio\nTracks will become silent and video Tracks will be a black frame.\nThis does not stop media from being received by those Tracks. The media simply\ncannot be used by the application while the Track is muted."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If a local Track being sent in a Call is muted, the Track will be\nnoticeably muted for the remote user. If a remote Track received in a\ncall is muted, the result will only be noticeable locally."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This mute operation acts on the specified Track directly. It does not act on an\nactive Call as a whole."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 20,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 21
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 22
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 23
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 24,
              "name": "muteTrackAsync"
            },
            {
              "title": "param",
              "description": "The ID of the track to mute.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "trackId"
            },
            {
              "title": "return",
              "description": "A promise that resolves with the list of muted track IDs.",
              "lineNumber": 26,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 27,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n   await client.media.muteTrackAsync(trackId)\n} catch (error) {\n   // Failed to mute the track.\n   const { code, message } = error\n   ...\n}",
              "lineNumber": 28
            }
          ],
          "loc": {
            "start": {
              "line": 509,
              "column": 2
            },
            "end": {
              "line": 545,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 546,
                "column": 2
              },
              "end": {
                "line": 557,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n   await client.media.muteTrackAsync(trackId)\n} catch (error) {\n   // Failed to mute the track.\n   const { code, message } = error\n   ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "trackId",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The ID of the track to mute."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves with the list of muted track IDs."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "media",
          "kind": "function",
          "name": "muteTrackAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "muteTrackAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.muteTrackAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Unmutes the specified Tracks."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Media will resume its normal rendering for the Tracks.\nLike the 'muteTracks' API, this unmute operation acts on those specified Tracks directly.\nTherefore it does not act on active Call as a whole."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#mediaeventmediaunmuted",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media:unmuted"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event\nwhen a Track has been unmuted."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 9,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 10
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 11
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 12,
              "name": "unmuteTracks"
            },
            {
              "title": "param",
              "description": "List of Track IDs.",
              "lineNumber": 13,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "trackIds"
            }
          ],
          "loc": {
            "start": {
              "line": 559,
              "column": 2
            },
            "end": {
              "line": 573,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 574,
                "column": 2
              },
              "end": {
                "line": 596,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "trackIds",
              "lineNumber": 13,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "List of Track IDs."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "function",
          "name": "unmuteTracks",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "unmuteTracks",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.unmuteTracks"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Unmutes the specified Track."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is similar to the "
                  },
                  {
                    "type": "link",
                    "url": "#mediaunmutetracks",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.unmuteTracks"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but\nprovides feedback via a returned promise instead of emitting events.\nThis API will not cause any events to be emitted during this operation.\nIt will also only take a single track ID as an argument."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Media will resume its normal rendering for the Track.\nLike the 'muteTrack' API, this unmute operation acts on the specified Track directly.\nTherefore it does not act on active Call as a whole."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 12,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 13
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 15
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 16,
              "name": "unmuteTrackAsync"
            },
            {
              "title": "param",
              "description": "Track ID to unmute.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "trackId"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation succeeds.",
              "lineNumber": 18,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n   const unmutedId = await client.media.unmuteTrackAsync(trackId)\n} catch (error) {\n   // Failed to unmute the track.\n   const { code, message } = error\n   ...\n}",
              "lineNumber": 20
            }
          ],
          "loc": {
            "start": {
              "line": 598,
              "column": 2
            },
            "end": {
              "line": 626,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 627,
                "column": 2
              },
              "end": {
                "line": 638,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n   const unmutedId = await client.media.unmuteTrackAsync(trackId)\n} catch (error) {\n   // Failed to unmute the track.\n   const { code, message } = error\n   ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "trackId",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Track ID to unmute."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation succeeds."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "media",
          "kind": "function",
          "name": "unmuteTrackAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "unmuteTrackAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.unmuteTrackAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Remove Media Tracks from a container."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The container is specified by providing a CSS selector string that\ncorresponds to the HTMLElement to act as the container."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 6
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 7
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 8,
              "name": "removeTracks"
            },
            {
              "title": "param",
              "description": "List of Track IDs to stop being rendered.",
              "lineNumber": 9,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "trackIds"
            },
            {
              "title": "param",
              "description": "A CSS selector string that uniquely\n   identifies an element. Ensure that special characters are properly\n   escaped.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "cssSelector"
            }
          ],
          "loc": {
            "start": {
              "line": 640,
              "column": 2
            },
            "end": {
              "line": 653,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 654,
                "column": 2
              },
              "end": {
                "line": 666,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "trackIds",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "List of Track IDs to stop being rendered."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            },
            {
              "title": "param",
              "name": "cssSelector",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A CSS selector string that uniquely\nidentifies an element. Ensure that special characters are properly\nescaped."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "media",
          "kind": "function",
          "name": "removeTracks",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "removeTracks",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.removeTracks"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Remove Media Track from a container."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is similar to the "
                  },
                  {
                    "type": "link",
                    "url": "#mediaremovetracks",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.removeTracks"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback\nvia a returned promise instead of emitting events. This API will not cause any events\nto be emitted during this operation. It will also only take a single track ID as\nan argument."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The container is specified by providing a CSS selector string that\ncorresponds to the HTMLElement to act as the container."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 12
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 13
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 14,
              "name": "removeTrackAsync"
            },
            {
              "title": "param",
              "description": "Track ID to stop being rendered.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "trackId"
            },
            {
              "title": "param",
              "description": "A CSS selector string that uniquely\n   identifies an element. Ensure that special characters are properly\n   escaped.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "cssSelector"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 19,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n  // Stop the track from being rendered.\n  await client.media.removeTrackAsync(trackId, selector)\n} catch (error) {\n  // Failed to remove the track.\n  const { code, message } = error\n  ...\n}",
              "lineNumber": 21
            }
          ],
          "loc": {
            "start": {
              "line": 668,
              "column": 2
            },
            "end": {
              "line": 698,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 699,
                "column": 2
              },
              "end": {
                "line": 702,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n  // Stop the track from being rendered.\n  await client.media.removeTrackAsync(trackId, selector)\n} catch (error) {\n  // Failed to remove the track.\n  const { code, message } = error\n  ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "trackId",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Track ID to stop being rendered."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "cssSelector",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A CSS selector string that uniquely\nidentifies an element. Ensure that special characters are properly\nescaped."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "media",
          "kind": "function",
          "name": "removeTrackAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "removeTrackAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "media.removeTrackAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Detached Media is a special type of "
                  },
                  {
                    "type": "link",
                    "url": "#callmediaobject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.MediaObject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " that is created outside the scope of a call. A DetachedMedia\nobject is a "
                  },
                  {
                    "type": "link",
                    "url": "#callmediaobject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.MediaObject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " that is wrapped with the contained "
                  },
                  {
                    "type": "link",
                    "url": "#calltrackobject",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.TrackObject"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "'s media type for convenience."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The APIs for managing detached media are available in the "
                  },
                  {
                    "type": "link",
                    "url": "#media",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " namespace. They are\n"
                  },
                  {
                    "type": "link",
                    "url": "#mediacreatelocalmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.createLocalMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ", "
                  },
                  {
                    "type": "link",
                    "url": "#mediagetlocalmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.getLocalMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ", and "
                  },
                  {
                    "type": "link",
                    "url": "#mediadisposelocalmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.disposeLocalMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ". Unlike media that is created\nas part of a call, the application is responsible for the lifecycle for a detached media object."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Accessing local media before a call is made can be used to implement a \"media preview\" feature, allowing an end-user to\ncheck their media devices before joining a call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Detached Media can also be used as part of a call, rather than new media being created as part of the call operations. This can be\ndone as an optimization, to avoid the overhead of creating new media objects during the call setup process. The same Detached\nMedia objects can be used for multiple calls, as well."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "DetachedMedia"
            },
            {
              "title": "memberof",
              "description": "media",
              "lineNumber": 18
            },
            {
              "title": "property",
              "description": "The media object.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "call.MediaObject"
              },
              "name": "media"
            },
            {
              "title": "property",
              "description": "The type of the media object ('audio', 'video', or 'screen').",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "type"
            },
            {
              "title": "example",
              "description": "// Create new detached media objects.\nconst medias = await client.media.createLocalMedia({ audio: true, video: true })\n// medias === [ { type: 'audio', media: <call.MediaObject> }, { type: 'video', media: <call.MediaObject> } ]\n// where medias[x].type === client.media.getTrackById(medias[x].media.tracks[0].id).type)\n\n// Render the local video as a preview.\nclient.media.renderTracks([ medias[1].media.tracks[0].id ], '#localVideoPreview')\n\n// Use the Detached Media in a call, instead of creating new media for it.\nconst call = client.call.make('destination', { audio: false, video: false, medias: medias })",
              "lineNumber": 21
            }
          ],
          "loc": {
            "start": {
              "line": 20,
              "column": 0
            },
            "end": {
              "line": 52,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 53,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtc/docs.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Create new detached media objects.\nconst medias = await client.media.createLocalMedia({ audio: true, video: true })\n// medias === [ { type: 'audio', media: <call.MediaObject> }, { type: 'video', media: <call.MediaObject> } ]\n// where medias[x].type === client.media.getTrackById(medias[x].media.tracks[0].id).type)\n\n// Render the local video as a preview.\nclient.media.renderTracks([ medias[1].media.tracks[0].id ], '#localVideoPreview')\n\n// Use the Detached Media in a call, instead of creating new media for it.\nconst call = client.call.make('destination', { audio: false, video: false, medias: medias })"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "media",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The media object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "call.MediaObject"
              }
            },
            {
              "title": "property",
              "name": "type",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The type of the media object ('audio', 'video', or 'screen')."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "DetachedMedia",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "media",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "media",
              "kind": "namespace"
            },
            {
              "name": "DetachedMedia",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "media.DetachedMedia"
        }
      ]
    },
    "path": [
      {
        "name": "media",
        "kind": "namespace"
      }
    ],
    "namespace": "media"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'notification' namespace allows user to register/deregister for/from push notifications as well as\nenabling/disabling the processing of websocket notifications."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 4,
        "type": null
      },
      {
        "title": "requires",
        "description": null,
        "lineNumber": 5,
        "name": "externalNotifications"
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 6,
        "type": null,
        "name": "notification"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 8,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 9,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/notifications/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "notification",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Push notifications registration state has changed."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 4,
              "name": "push"
            },
            {
              "title": "memberof",
              "description": "notification",
              "lineNumber": 5
            },
            {
              "title": "event",
              "description": "notifications:change",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The channel for the notification.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.channel"
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 10,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 11,
                "column": 0
              },
              "end": {
                "line": 11,
                "column": 49
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/notifications/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.channel",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The channel for the notification."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "notification",
          "kind": "event",
          "name": "notifications:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "notification",
              "kind": "namespace"
            },
            {
              "name": "notifications:change",
              "kind": "event"
            }
          ],
          "namespace": "notification.event:notifications:change"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An error occurred with push notifications."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 4,
              "name": "push"
            },
            {
              "title": "memberof",
              "description": "notification",
              "lineNumber": 5
            },
            {
              "title": "event",
              "description": "notifications:error",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "api.BasicError"
              },
              "name": "params.error"
            },
            {
              "title": "param",
              "description": "The channel for the notification.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.channel"
            }
          ],
          "loc": {
            "start": {
              "line": 13,
              "column": 0
            },
            "end": {
              "line": 23,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 24,
                "column": 0
              },
              "end": {
                "line": 24,
                "column": 47
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/notifications/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "api.BasicError"
                  }
                },
                {
                  "title": "param",
                  "name": "params.channel",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The channel for the notification."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "notification",
          "kind": "event",
          "name": "notifications:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "notification",
              "kind": "namespace"
            },
            {
              "name": "notifications:error",
              "kind": "event"
            }
          ],
          "namespace": "notification.event:notifications:error"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Provides an external notification to the system for processing."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 5,
              "name": "externalNotifications"
            },
            {
              "title": "memberof",
              "description": "notification",
              "lineNumber": 6
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "process"
            },
            {
              "title": "param",
              "description": "The notification object from which to extract relevant data.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "notification"
            },
            {
              "title": "param",
              "description": "The channel that the notification came from.\n   If no channel provided, then by default it will be a PUSH notification.",
              "lineNumber": 9,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "channel",
              "default": "'PUSH'"
            },
            {
              "title": "return",
              "description": null,
              "lineNumber": 11,
              "type": {
                "type": "UndefinedLiteral"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 16,
              "column": 4
            },
            "end": {
              "line": 28,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 29,
                "column": 4
              },
              "end": {
                "line": 37,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/notifications/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "notification",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The notification object from which to extract relevant data."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "param",
              "name": "channel",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The channel that the notification came from.\nIf no channel provided, then by default it will be a PUSH notification."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "default": "'PUSH'"
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": []
              },
              "title": "returns",
              "type": {
                "type": "UndefinedLiteral"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "notification",
          "kind": "function",
          "name": "process",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "notification",
              "kind": "namespace"
            },
            {
              "name": "process",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "notification.process"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Provides an external notification to the system for processing."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#notificationprocess",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "notification.process"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise.\nThis API's promise will resolve after the notification has been processed, rather than synchronously like\nthe "
                  },
                  {
                    "type": "link",
                    "url": "#notificationprocess",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "notification.process"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If the provided notification has a duplicate ID as a notification already processed, then the promise will\nreject with an error."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 12
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 13,
              "name": "externalNotifications"
            },
            {
              "title": "memberof",
              "description": "notification",
              "lineNumber": 14
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 15,
              "name": "processAsync"
            },
            {
              "title": "param",
              "description": "The notification object from which to extract relevant data.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "notification"
            },
            {
              "title": "param",
              "description": "The channel that the notification came from.\n   If no channel provided, then by default it will be a PUSH notification.",
              "lineNumber": 17,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "channel",
              "default": "'PUSH'"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 19,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n   await client.notification.processAsync(notification)\n   // Notification has been processed.\n} catch (error) {\n   // Notification was a duplicate; not processed.\n}",
              "lineNumber": 21
            }
          ],
          "loc": {
            "start": {
              "line": 39,
              "column": 4
            },
            "end": {
              "line": 67,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 68,
                "column": 4
              },
              "end": {
                "line": 73,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/notifications/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n   await client.notification.processAsync(notification)\n   // Notification has been processed.\n} catch (error) {\n   // Notification was a duplicate; not processed.\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "notification",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The notification object from which to extract relevant data."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "param",
              "name": "channel",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The channel that the notification came from.\nIf no channel provided, then by default it will be a PUSH notification."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "default": "'PUSH'"
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "notification",
          "kind": "function",
          "name": "processAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "notification",
              "kind": "namespace"
            },
            {
              "name": "processAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "notification.processAsync"
        }
      ]
    },
    "path": [
      {
        "name": "notification",
        "kind": "namespace"
      }
    ],
    "namespace": "notification"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'presence' namespace provides an interface for an application to set the\nUser's presence information and to track other Users' presence\ninformation."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "Presence information is persisted by the server. When the SDK is initialized,\nthere will be no information available. Presence information will become\navailable either by using "
            },
            {
              "type": "link",
              "url": "#presencefetch",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "presence.fetch"
                }
              ]
            },
            {
              "type": "text",
              "value": " or by subscribing for\nupdates about other Users, using "
            },
            {
              "type": "link",
              "url": "#presencesubscribe",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "presence.subscribe"
                }
              ]
            },
            {
              "type": "text",
              "value": "."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "Available presence information can be retrieved using "
            },
            {
              "type": "link",
              "url": "#presenceget",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "presence.get"
                }
              ]
            },
            {
              "type": "text",
              "value": " or\n"
            },
            {
              "type": "link",
              "url": "#presencegetall",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "presence.getAll"
                }
              ]
            },
            {
              "type": "text",
              "value": "."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 13,
        "type": null
      },
      {
        "title": "requires",
        "description": null,
        "lineNumber": 14,
        "name": "presence"
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 15,
        "type": null,
        "name": "presence"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 17,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 41,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "presence",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A presence update about a subscribed user has been received."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event is generated as a result of "
                  },
                  {
                    "type": "link",
                    "url": "#presencefetch",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence.fetch"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "link",
                    "url": "#presenceupdate",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence.update"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " operations."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "For the latter operation, the current user receives a presence update of another user that the current user is subscribed to."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The changed information can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "#presenceget",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence.get"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nAPI."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 11
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 12,
              "name": "presence"
            },
            {
              "title": "event",
              "description": "presence:change",
              "lineNumber": 13
            },
            {
              "title": "param",
              "description": "A presence object containing data.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID of the user.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.userId"
            },
            {
              "title": "param",
              "description": "The presence status of the user.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.status"
            },
            {
              "title": "param",
              "description": "The activity of the user.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.activity"
            },
            {
              "title": "param",
              "description": "A custom note provided by the user.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.note"
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 20,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 21,
                "column": 0
              },
              "end": {
                "line": 21,
                "column": 41
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A presence object containing data."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.userId",
                  "lineNumber": 15,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID of the user."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.status",
                  "lineNumber": 16,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The presence status of the user."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.activity",
                  "lineNumber": 17,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The activity of the user."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.note",
                  "lineNumber": 18,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "A custom note provided by the user."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "presence",
          "kind": "event",
          "name": "presence:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "presence:change",
              "kind": "event"
            }
          ],
          "namespace": "presence.event:presence:change"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The current user's presence information has changed."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The changed information can be retrieved using the "
                  },
                  {
                    "type": "link",
                    "url": "#presencegetself",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence.getSelf"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nAPI."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 7
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 8,
              "name": "presence"
            },
            {
              "title": "event",
              "description": "presence:selfChange",
              "lineNumber": 9
            }
          ],
          "loc": {
            "start": {
              "line": 23,
              "column": 0
            },
            "end": {
              "line": 33,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 34,
                "column": 0
              },
              "end": {
                "line": 34,
                "column": 48
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "presence",
          "kind": "event",
          "name": "presence:selfChange",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "presence:selfChange",
              "kind": "event"
            }
          ],
          "namespace": "presence.event:presence:selfChange"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An update (as a result of subscribing to a specific user's presence) has been received."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 4
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 5,
              "name": "presence"
            },
            {
              "title": "event",
              "description": "presence:subscribe",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": "A subscription object containing data.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID(s) of the user(s) whose presence needs to be watched.",
              "lineNumber": 8,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "params.userIds"
            }
          ],
          "loc": {
            "start": {
              "line": 36,
              "column": 0
            },
            "end": {
              "line": 45,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 46,
                "column": 0
              },
              "end": {
                "line": 46,
                "column": 45
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A subscription object containing data."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.userIds",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID(s) of the user(s) whose presence needs to be watched."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "presence",
          "kind": "event",
          "name": "presence:subscribe",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "presence:subscribe",
              "kind": "event"
            }
          ],
          "namespace": "presence.event:presence:subscribe"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An update (as a result of unsubscribing to a specific user's presence) has been received."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 4
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 5,
              "name": "presence"
            },
            {
              "title": "event",
              "description": "presence:unsubscribe",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": "A subscription object containing data.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The ID(s) of the user(s) whose presence no longer requires to be watched.",
              "lineNumber": 8,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "params.userIds"
            }
          ],
          "loc": {
            "start": {
              "line": 48,
              "column": 0
            },
            "end": {
              "line": 57,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 58,
                "column": 0
              },
              "end": {
                "line": 58,
                "column": 49
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A subscription object containing data."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.userIds",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The ID(s) of the user(s) whose presence no longer requires to be watched."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "presence",
          "kind": "event",
          "name": "presence:unsubscribe",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "presence:unsubscribe",
              "kind": "event"
            }
          ],
          "namespace": "presence.event:presence:unsubscribe"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An error occurred with presence."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 4
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 5,
              "name": "presence"
            },
            {
              "title": "event",
              "description": "presence:error",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "api.BasicError"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 60,
              "column": 0
            },
            "end": {
              "line": 69,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 70,
                "column": 0
              },
              "end": {
                "line": 70,
                "column": 37
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "api.BasicError"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "presence",
          "kind": "event",
          "name": "presence:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "presence:error",
              "kind": "event"
            }
          ],
          "namespace": "presence.event:presence:error"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Possible status values."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 4
            },
            {
              "title": "type",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "property",
              "description": null,
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "OPEN"
            },
            {
              "title": "property",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "CLOSED"
            },
            {
              "title": "example",
              "description": "const { statuses, activities } = client.presence\n// Use the values when updating presence.\nclient.presence.update(statuses.OPEN, activities.AVAILABLE)",
              "lineNumber": 8
            }
          ],
          "loc": {
            "start": {
              "line": 21,
              "column": 4
            },
            "end": {
              "line": 33,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 34,
                "column": 4
              },
              "end": {
                "line": 34,
                "column": 37
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/link/index.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "const { statuses, activities } = client.presence\n// Use the values when updating presence.\nclient.presence.update(statuses.OPEN, activities.AVAILABLE)"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "OPEN",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "CLOSED",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "presence",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "name": "statuses",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "statuses",
              "scope": "static"
            }
          ],
          "namespace": "presence.statuses"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Possible activity values."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 4
            },
            {
              "title": "type",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "property",
              "description": null,
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "AVAILABLE"
            },
            {
              "title": "property",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "IDLE"
            },
            {
              "title": "property",
              "description": null,
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "AWAY"
            },
            {
              "title": "property",
              "description": null,
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "LUNCH"
            },
            {
              "title": "property",
              "description": null,
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "BUSY"
            },
            {
              "title": "property",
              "description": null,
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "VACATION"
            },
            {
              "title": "property",
              "description": null,
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "ON_THE_PHONE"
            },
            {
              "title": "property",
              "description": null,
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "UNKNOWN"
            }
          ],
          "loc": {
            "start": {
              "line": 36,
              "column": 4
            },
            "end": {
              "line": 50,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 51,
                "column": 4
              },
              "end": {
                "line": 51,
                "column": 41
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/link/index.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "AVAILABLE",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "IDLE",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "AWAY",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "LUNCH",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "BUSY",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "VACATION",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "ON_THE_PHONE",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "UNKNOWN",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "presence",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "name": "activities",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "activities",
              "scope": "static"
            }
          ],
          "namespace": "presence.activities"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Updates the presence information for the current user."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "See "
                  },
                  {
                    "type": "link",
                    "url": "#presencestatuses",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence.statuses"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " and "
                  },
                  {
                    "type": "link",
                    "url": "#presenceactivities",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence.activities"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " for valid\nvalues."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a\n"
                  },
                  {
                    "type": "link",
                    "url": "#presenceeventpresenceselfchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence:selfChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event\nwhen the operation completes. The updated presence information is\navailable and can be retrieved with "
                  },
                  {
                    "type": "link",
                    "url": "#presencegetself",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence.getSelf"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Other users subscribed for this user's presence will receive a\n"
                  },
                  {
                    "type": "link",
                    "url": "#presenceeventpresencechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 14,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 15
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 16
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 17,
              "name": "presence"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 18,
              "name": "update"
            },
            {
              "title": "param",
              "description": "The status of the presence state.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "status"
            },
            {
              "title": "param",
              "description": "The activity to be shown as presence state",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "activity"
            },
            {
              "title": "param",
              "description": "An additional note to be provided when the activity is `presence.activities.ACTIVITIES_OTHER`.",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "note"
            }
          ],
          "loc": {
            "start": {
              "line": 16,
              "column": 4
            },
            "end": {
              "line": 38,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 39,
                "column": 4
              },
              "end": {
                "line": 47,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "status",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The status of the presence state."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "activity",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The activity to be shown as presence state"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "note",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An additional note to be provided when the activity is "
                      },
                      {
                        "type": "inlineCode",
                        "value": "presence.activities.ACTIVITIES_OTHER"
                      },
                      {
                        "type": "text",
                        "value": "."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "presence",
          "kind": "function",
          "name": "update",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "update",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "presence.update"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Fetches presence information for the given users. This will refresh the\navailable information with any new information from the server."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Available presence information an be retrieved using the\n"
                  },
                  {
                    "type": "link",
                    "url": "#presenceget",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence.get"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "link",
                    "url": "#presencegetall",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence.getAll"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 7,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 8
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 9
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 10,
              "name": "presence"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 11,
              "name": "fetch"
            },
            {
              "title": "param",
              "description": "A User ID or an array of User IDs.",
              "lineNumber": 12,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  },
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "user"
            }
          ],
          "loc": {
            "start": {
              "line": 49,
              "column": 4
            },
            "end": {
              "line": 62,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 63,
                "column": 4
              },
              "end": {
                "line": 71,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "user",
              "lineNumber": 12,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A User ID or an array of User IDs."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  },
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "presence",
          "kind": "function",
          "name": "fetch",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "fetch",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "presence.fetch"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Subscribe to another User's presence updates."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "When the User updates their presence information, the SDK will emit a\n"
                  },
                  {
                    "type": "link",
                    "url": "#presenceeventpresencechange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 7
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 8
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 9,
              "name": "presence"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 10,
              "name": "subscribe"
            },
            {
              "title": "param",
              "description": "A User ID or an array of User IDs.",
              "lineNumber": 11,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  },
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "users"
            }
          ],
          "loc": {
            "start": {
              "line": 73,
              "column": 4
            },
            "end": {
              "line": 85,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 86,
                "column": 4
              },
              "end": {
                "line": 94,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "users",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A User ID or an array of User IDs."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  },
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "presence",
          "kind": "function",
          "name": "subscribe",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "subscribe",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "presence.subscribe"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Unsubscribe from another User's presence updates."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 5
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 6,
              "name": "presence"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "unsubscribe"
            },
            {
              "title": "param",
              "description": "A User ID or an array of User IDs.",
              "lineNumber": 8,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  },
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "users"
            }
          ],
          "loc": {
            "start": {
              "line": 96,
              "column": 4
            },
            "end": {
              "line": 105,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 106,
                "column": 4
              },
              "end": {
                "line": 114,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "users",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A User ID or an array of User IDs."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  },
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "presence",
          "kind": "function",
          "name": "unsubscribe",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "unsubscribe",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "presence.unsubscribe"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves the presence information for specified users, if available."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 5
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 6,
              "name": "presence"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "get"
            },
            {
              "title": "param",
              "description": "A User ID or an array of User IDs.",
              "lineNumber": 8,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  },
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "user"
            },
            {
              "title": "return",
              "description": "List of user presence information.",
              "lineNumber": 9,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "Object"
                      }
                    ]
                  },
                  {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                ]
              }
            }
          ],
          "loc": {
            "start": {
              "line": 116,
              "column": 4
            },
            "end": {
              "line": 126,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 127,
                "column": 4
              },
              "end": {
                "line": 139,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "user",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A User ID or an array of User IDs."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  },
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "List of user presence information."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "Object"
                      }
                    ]
                  },
                  {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "presence",
          "kind": "function",
          "name": "get",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "get",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "presence.get"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves the presence information for all available users."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 5
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 6,
              "name": "presence"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "getAll"
            },
            {
              "title": "return",
              "description": "List of user presence information.",
              "lineNumber": 8,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                ]
              }
            }
          ],
          "loc": {
            "start": {
              "line": 141,
              "column": 4
            },
            "end": {
              "line": 150,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 151,
                "column": 4
              },
              "end": {
                "line": 154,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "List of user presence information."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "presence",
          "kind": "function",
          "name": "getAll",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "getAll",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "presence.getAll"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves the presence information for the current user."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This information is set using the "
                  },
                  {
                    "type": "link",
                    "url": "#presenceupdate",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence.update"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 6
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 7
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 8,
              "name": "presence"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 9,
              "name": "getSelf"
            },
            {
              "title": "return",
              "description": "Presence information for the current user.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 156,
              "column": 4
            },
            "end": {
              "line": 167,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 168,
                "column": 4
              },
              "end": {
                "line": 171,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Presence information for the current user."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "presence",
          "kind": "function",
          "name": "getSelf",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "getSelf",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "presence.getSelf"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The PresenceStatus type defines the user's current status in terms of the user's availability to\ncommunicate/respond to other users in the network.\nAn instance of this type can be obtained by invoking the "
                  },
                  {
                    "type": "link",
                    "url": "#presenceget",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "presence.get"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " function."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Reporting when a user is on the phone is enabled (by default), which means that presence update notifications\nwill be sent whenever a user is in a call, as well as when the call has ended.\nThis is a user preference enabled or disabled on server side, and it can only be changed on the server side."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The status is set to "
                  },
                  {
                    "type": "link",
                    "url": "#presencestatuses",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "open"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " as soon as a user subscribes for the presence service."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 11,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 12
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "PresenceStatus"
            },
            {
              "title": "memberof",
              "description": "presence",
              "lineNumber": 14
            },
            {
              "title": "property",
              "description": "The unique identifier for the user associated with this presence status.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "userId"
            },
            {
              "title": "property",
              "description": "The current status the user has set for themselves. For supported values see {@link presence.statuses}.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "status"
            },
            {
              "title": "property",
              "description": "The current activity of the user.\n     For supported values see {@link presence.activities}.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "activity"
            },
            {
              "title": "property",
              "description": "Additional message accompanying the status & activity.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "note"
            },
            {
              "title": "property",
              "description": "Whether the presence information has been loaded or is in the process of loading.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "loading"
            }
          ],
          "loc": {
            "start": {
              "line": 19,
              "column": 0
            },
            "end": {
              "line": 40,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 41,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/presence/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "userId",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The unique identifier for the user associated with this presence status."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "status",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The current status the user has set for themselves. For supported values see "
                      },
                      {
                        "type": "link",
                        "url": "#presencestatuses",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "presence.statuses"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": "."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "activity",
              "lineNumber": 17,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The current activity of the user.\nFor supported values see "
                      },
                      {
                        "type": "link",
                        "url": "#presenceactivities",
                        "title": null,
                        "jsdoc": true,
                        "children": [
                          {
                            "type": "text",
                            "value": "presence.activities"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": "."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "note",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Additional message accompanying the status & activity."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "loading",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Whether the presence information has been loaded or is in the process of loading."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "PresenceStatus",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "presence",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "presence",
              "kind": "namespace"
            },
            {
              "name": "PresenceStatus",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "presence.PresenceStatus"
        }
      ]
    },
    "path": [
      {
        "name": "presence",
        "kind": "namespace"
      }
    ],
    "namespace": "presence"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'proxy' namespace allows for a secondary mode for making calls: proxy mode.\nWhen proxy mode is enabled, the SDK will redirect webRTC / media operations from the current machine to a remote machine using a channel."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "This is an advanced feature that enables support for Calls in particular scenarios that would otherwise not support them."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 6,
        "type": null
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 7,
        "type": null,
        "name": "proxy"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 9,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 58,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "proxy",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Proxy API has completed and changed the proxy state."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "link",
                    "url": "#proxygetinfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.getInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to retrieve the current proxy state."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "memberof",
              "description": "proxy",
              "lineNumber": 5
            },
            {
              "title": "event",
              "description": "proxy:change",
              "lineNumber": 6
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 8,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 9,
                "column": 0
              },
              "end": {
                "line": 9,
                "column": 42
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "proxy",
          "kind": "event",
          "name": "proxy:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "proxy",
              "kind": "namespace"
            },
            {
              "name": "proxy:change",
              "kind": "event"
            }
          ],
          "namespace": "proxy.event:proxy:change"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Proxy API has resulted in an error."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "link",
                    "url": "#proxygetinfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.getInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to retrieve the current proxy state."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "memberof",
              "description": "proxy",
              "lineNumber": 5
            },
            {
              "title": "event",
              "description": "proxy:error",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "An error with `code` and `message` information.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 11,
              "column": 0
            },
            "end": {
              "line": 20,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 21,
                "column": 0
              },
              "end": {
                "line": 21,
                "column": 40
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "An error with "
                          },
                          {
                            "type": "inlineCode",
                            "value": "code"
                          },
                          {
                            "type": "text",
                            "value": " and "
                          },
                          {
                            "type": "inlineCode",
                            "value": "message"
                          },
                          {
                            "type": "text",
                            "value": " information."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "BasicError"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "proxy",
          "kind": "event",
          "name": "proxy:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "proxy",
              "kind": "namespace"
            },
            {
              "name": "proxy:error",
              "kind": "event"
            }
          ],
          "namespace": "proxy.event:proxy:error"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The Channel object that the Proxy module needs to be provided."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "Channel"
            },
            {
              "title": "memberof",
              "description": "proxy",
              "lineNumber": 6
            },
            {
              "title": "example",
              "description": "// The channel the application uses for communicating with a remote endpoint.\nconst appChannel = ...\n\n// The channel the application will provide to the Proxy module for use.\nconst channel = {\n   send: function (data) {\n     // Any encoding / wrapping needed for a Proxy message being sent\n     //    over the channel.\n     appChannel.sendMessage(data)\n   },\n   // The Proxy module will set this function.\n   receive: undefined\n}\nappChannel.on('message', data => {\n   // Any decoding / unwrapping needed for the received message.\n   channel.receive(data)\n})\n\nclient.proxy.setChannel(channel)",
              "lineNumber": 7
            }
          ],
          "loc": {
            "start": {
              "line": 11,
              "column": 0
            },
            "end": {
              "line": 38,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 58,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/docs.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// The channel the application uses for communicating with a remote endpoint.\nconst appChannel = ...\n\n// The channel the application will provide to the Proxy module for use.\nconst channel = {\n   send: function (data) {\n     // Any encoding / wrapping needed for a Proxy message being sent\n     //    over the channel.\n     appChannel.sendMessage(data)\n   },\n   // The Proxy module will set this function.\n   receive: undefined\n}\nappChannel.on('message', data => {\n   // Any decoding / unwrapping needed for the received message.\n   channel.receive(data)\n})\n\nclient.proxy.setChannel(channel)"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "Channel",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "proxy",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": [
              {
                "description": {
                  "type": "root",
                  "children": [
                    {
                      "type": "paragraph",
                      "children": [
                        {
                          "type": "text",
                          "value": "Channel function that the Proxy module will use to send messages to the remote side."
                        }
                      ]
                    }
                  ]
                },
                "tags": [
                  {
                    "title": "public",
                    "description": null,
                    "lineNumber": 2,
                    "type": null
                  },
                  {
                    "title": "memberof",
                    "description": "proxy.Channel",
                    "lineNumber": 3
                  },
                  {
                    "title": "name",
                    "description": null,
                    "lineNumber": 4,
                    "name": "send"
                  },
                  {
                    "title": "function",
                    "description": null,
                    "lineNumber": 5,
                    "name": null
                  },
                  {
                    "title": "param",
                    "description": "Message to be sent over the channel.",
                    "lineNumber": 6,
                    "type": {
                      "type": "NameExpression",
                      "name": "Object"
                    },
                    "name": "data"
                  }
                ],
                "loc": {
                  "start": {
                    "line": 40,
                    "column": 0
                  },
                  "end": {
                    "line": 47,
                    "column": 3
                  }
                },
                "context": {
                  "loc": {
                    "start": {
                      "line": 1,
                      "column": 0
                    },
                    "end": {
                      "line": 58,
                      "column": 0
                    }
                  },
                  "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/docs.js"
                },
                "augments": [],
                "examples": [],
                "implements": [],
                "params": [
                  {
                    "title": "param",
                    "name": "data",
                    "lineNumber": 6,
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "Message to be sent over the channel."
                            }
                          ]
                        }
                      ]
                    },
                    "type": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  }
                ],
                "properties": [],
                "returns": [],
                "sees": [],
                "throws": [],
                "todos": [],
                "yields": [],
                "access": "public",
                "memberof": "proxy.Channel",
                "name": "send",
                "kind": "function",
                "members": {
                  "global": [],
                  "inner": [],
                  "instance": [],
                  "events": [],
                  "static": []
                },
                "path": [
                  {
                    "name": "proxy",
                    "kind": "namespace"
                  },
                  {
                    "name": "Channel",
                    "kind": "typedef",
                    "scope": "static"
                  },
                  {
                    "name": "send",
                    "kind": "function"
                  }
                ],
                "namespace": "proxy.Channelsend"
              },
              {
                "description": {
                  "type": "root",
                  "children": [
                    {
                      "type": "paragraph",
                      "children": [
                        {
                          "type": "text",
                          "value": "API that the Proxy module will assign a listener function for accepting received messages.\nThis function should receive all messages sent from the remote side of the channel."
                        }
                      ]
                    }
                  ]
                },
                "tags": [
                  {
                    "title": "public",
                    "description": null,
                    "lineNumber": 3,
                    "type": null
                  },
                  {
                    "title": "memberof",
                    "description": "proxy.Channel",
                    "lineNumber": 4
                  },
                  {
                    "title": "name",
                    "description": null,
                    "lineNumber": 5,
                    "name": "receive"
                  },
                  {
                    "title": "function",
                    "description": null,
                    "lineNumber": 6,
                    "name": null
                  },
                  {
                    "title": "param",
                    "description": "The message received from the Channel.",
                    "lineNumber": 7,
                    "type": {
                      "type": "NameExpression",
                      "name": "Object"
                    },
                    "name": "data"
                  }
                ],
                "loc": {
                  "start": {
                    "line": 49,
                    "column": 0
                  },
                  "end": {
                    "line": 57,
                    "column": 3
                  }
                },
                "context": {
                  "loc": {
                    "start": {
                      "line": 1,
                      "column": 0
                    },
                    "end": {
                      "line": 58,
                      "column": 0
                    }
                  },
                  "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/docs.js"
                },
                "augments": [],
                "examples": [],
                "implements": [],
                "params": [
                  {
                    "title": "param",
                    "name": "data",
                    "lineNumber": 7,
                    "description": {
                      "type": "root",
                      "children": [
                        {
                          "type": "paragraph",
                          "children": [
                            {
                              "type": "text",
                              "value": "The message received from the Channel."
                            }
                          ]
                        }
                      ]
                    },
                    "type": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  }
                ],
                "properties": [],
                "returns": [],
                "sees": [],
                "throws": [],
                "todos": [],
                "yields": [],
                "access": "public",
                "memberof": "proxy.Channel",
                "name": "receive",
                "kind": "function",
                "members": {
                  "global": [],
                  "inner": [],
                  "instance": [],
                  "events": [],
                  "static": []
                },
                "path": [
                  {
                    "name": "proxy",
                    "kind": "namespace"
                  },
                  {
                    "name": "Channel",
                    "kind": "typedef",
                    "scope": "static"
                  },
                  {
                    "name": "receive",
                    "kind": "function"
                  }
                ],
                "namespace": "proxy.Channelreceive"
              }
            ]
          },
          "path": [
            {
              "name": "proxy",
              "kind": "namespace"
            },
            {
              "name": "Channel",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "proxy.Channel"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves the current mode for Proxy behaviour."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "When set to "
                  },
                  {
                    "type": "inlineCode",
                    "value": "true"
                  },
                  {
                    "type": "text",
                    "value": ", WebRTC operations will be proxied over a channel. When\nset to "
                  },
                  {
                    "type": "inlineCode",
                    "value": "false"
                  },
                  {
                    "type": "text",
                    "value": ", WebRTC operation will occur as normal on the local machine.\nSee the "
                  },
                  {
                    "type": "link",
                    "url": "#proxysetproxymode",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.setProxyMode"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API for more information."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 7
            },
            {
              "title": "memberof",
              "description": "proxy",
              "lineNumber": 8
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 9,
              "name": "getProxyMode"
            },
            {
              "title": "return",
              "description": "Whether proxy mode is currently enabled.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 16,
              "column": 4
            },
            "end": {
              "line": 27,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 28,
                "column": 4
              },
              "end": {
                "line": 32,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Whether proxy mode is currently enabled."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "proxy",
          "kind": "function",
          "name": "getProxyMode",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "proxy",
              "kind": "namespace"
            },
            {
              "name": "getProxyMode",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "proxy.getProxyMode"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves information about the proxy."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "proxy",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "getInfo"
            },
            {
              "title": "returns",
              "description": "proxy Object containing information about the proxy.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "returns",
              "description": "proxy.proxyMode Current operating mode.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "returns",
              "description": "proxy.hasChannel Proxy has a channel associated with it.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "returns",
              "description": "proxy.remoteInitialized Proxy initialization state.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "title": "returns",
              "description": "proxy.browser Details for the browser the proxy is using.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "example",
              "description": "const proxy = client.proxy.getInfo()\n\nlog(`Proxy Browser in use: ${proxy.browser}, mode: ${proxy.proxyMode}, channel: ${proxy.hasChannel}, initialized: ${proxy.remoteInitialized}.`)",
              "lineNumber": 11
            }
          ],
          "loc": {
            "start": {
              "line": 34,
              "column": 4
            },
            "end": {
              "line": 49,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 50,
                "column": 4
              },
              "end": {
                "line": 54,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "const proxy = client.proxy.getInfo()\n\nlog(`Proxy Browser in use: ${proxy.browser}, mode: ${proxy.proxyMode}, channel: ${proxy.hasChannel}, initialized: ${proxy.remoteInitialized}.`)"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy Object containing information about the proxy."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.proxyMode Current operating mode."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.hasChannel Proxy has a channel associated with it."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.remoteInitialized Proxy initialization state."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            },
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.browser Details for the browser the proxy is using."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "proxy",
          "kind": "function",
          "name": "getInfo",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "proxy",
              "kind": "namespace"
            },
            {
              "name": "getInfo",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "proxy.getInfo"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieve information about the proxy's browser being used.\nBrowser information being defined indicates that the browser supports\nbasic webRTC scenarios."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 5
            },
            {
              "title": "memberof",
              "description": "proxy",
              "lineNumber": 6
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "getProxyDetails"
            },
            {
              "title": "return",
              "description": "Object containing `browser` and `version` information.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "example",
              "description": "const details = client.proxy.getProxyDetails()\n\nlog(`Proxy Browser in use: ${details.browser}, version ${details.version}.`)",
              "lineNumber": 9
            }
          ],
          "loc": {
            "start": {
              "line": 56,
              "column": 4
            },
            "end": {
              "line": 69,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 70,
                "column": 4
              },
              "end": {
                "line": 74,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "const details = client.proxy.getProxyDetails()\n\nlog(`Proxy Browser in use: ${details.browser}, version ${details.version}.`)"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Object containing "
                      },
                      {
                        "type": "inlineCode",
                        "value": "browser"
                      },
                      {
                        "type": "text",
                        "value": " and "
                      },
                      {
                        "type": "inlineCode",
                        "value": "version"
                      },
                      {
                        "type": "text",
                        "value": " information."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "proxy",
          "kind": "function",
          "name": "getProxyDetails",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "proxy",
              "kind": "namespace"
            },
            {
              "name": "getProxyDetails",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "proxy.getProxyDetails"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sets the channel to be used while proxy mode is enabled."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Providing a channel is a required step for being able to use the Proxy\nfunctionality. This should be the first step, before initializing the\nremote endpoint and setting proxy mode."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "On completion, this API will trigger a "
                  },
                  {
                    "type": "link",
                    "url": "#proxyeventproxychange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent on success. The "
                  },
                  {
                    "type": "link",
                    "url": "#proxygetinfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.getInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to verify\nthat a channel has been set. If an error is encountered, this API will\ntrigger a "
                  },
                  {
                    "type": "link",
                    "url": "#proxyeventproxyerror",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy:error"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event. A channel\ncannot be set if there is an on-going call."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 12,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 13
            },
            {
              "title": "memberof",
              "description": "proxy",
              "lineNumber": 14
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 15,
              "name": "setChannel"
            },
            {
              "title": "param",
              "description": "See the `Channel` module for information.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "proxy.Channel"
              },
              "name": "channel"
            },
            {
              "title": "example",
              "description": "client.on('proxy:change', () => {\n   const { hasChannel } = client.proxy.getInfo()\n   log(`A channel ${hasChannel ? 'has': 'has not'} been set.`)\n})\nclient.on('proxy:error', params => {\n   const { code, message } = params.error\n   log(`Encountered error ${code}: ${message}.`)\n})\n\nconst appChannel = ...\nclient.proxy.setChannel(appChannel)",
              "lineNumber": 17
            }
          ],
          "loc": {
            "start": {
              "line": 77,
              "column": 2
            },
            "end": {
              "line": 106,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 107,
                "column": 2
              },
              "end": {
                "line": 116,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('proxy:change', () => {\n   const { hasChannel } = client.proxy.getInfo()\n   log(`A channel ${hasChannel ? 'has': 'has not'} been set.`)\n})\nclient.on('proxy:error', params => {\n   const { code, message } = params.error\n   log(`Encountered error ${code}: ${message}.`)\n})\n\nconst appChannel = ...\nclient.proxy.setChannel(appChannel)"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "channel",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "See the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "Channel"
                      },
                      {
                        "type": "text",
                        "value": " module for information."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "proxy.Channel"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "proxy",
          "kind": "function",
          "name": "setChannel",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "proxy",
              "kind": "namespace"
            },
            {
              "name": "setChannel",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "proxy.setChannel"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sets the channel to be used while proxy mode is enabled."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#proxysetchannel",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.setChannel"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise instead\nof an event. This API will not emit events specifically about the operation's completion, but may\nemit an event to reflect proxy state changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Providing a channel is a required step for being able to use the Proxy functionality. This should be the first\nstep, before initializing the remote endpoint and setting proxy mode."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The Proxy state will be changed on operation success, which will be accompanied by a\n"
                  },
                  {
                    "type": "link",
                    "url": "#proxyeventproxychange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event. The "
                  },
                  {
                    "type": "link",
                    "url": "#proxygetinfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.getInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to retrieve\nthe state."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 13,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 15
            },
            {
              "title": "memberof",
              "description": "proxy",
              "lineNumber": 16
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 17,
              "name": "setChannelAsync"
            },
            {
              "title": "param",
              "description": "See the `Channel` module for information.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "proxy.Channel"
              },
              "name": "channel"
            },
            {
              "title": "return",
              "description": "A Promise that resolves when the operation is successful.",
              "lineNumber": 19,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "const appChannel = ...\ntry {\n  await client.proxy.setChannelAsync(appChannel)\n  // Proxy channel has been set.\n  // client.proxy.getInfo().hasChannel === true\n} catch (error) {\n  // Encountered error while setting channel.\n  const { code, message } = error\n  ...\n}",
              "lineNumber": 21
            }
          ],
          "loc": {
            "start": {
              "line": 118,
              "column": 2
            },
            "end": {
              "line": 150,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 151,
                "column": 2
              },
              "end": {
                "line": 159,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "const appChannel = ...\ntry {\n  await client.proxy.setChannelAsync(appChannel)\n  // Proxy channel has been set.\n  // client.proxy.getInfo().hasChannel === true\n} catch (error) {\n  // Encountered error while setting channel.\n  const { code, message } = error\n  ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "channel",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "See the "
                      },
                      {
                        "type": "inlineCode",
                        "value": "Channel"
                      },
                      {
                        "type": "text",
                        "value": " module for information."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "proxy.Channel"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A Promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "proxy",
          "kind": "function",
          "name": "setChannelAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "proxy",
              "kind": "namespace"
            },
            {
              "name": "setChannelAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "proxy.setChannelAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sets whether Call functionality should be proxied to the Remote SDK or not.\nWhen set to "
                  },
                  {
                    "type": "inlineCode",
                    "value": "true"
                  },
                  {
                    "type": "text",
                    "value": ", WebRTC operations will be proxied over a channel. When\nset to "
                  },
                  {
                    "type": "inlineCode",
                    "value": "false"
                  },
                  {
                    "type": "text",
                    "value": ", WebRTC operation will occur as normal on the local machine."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Setting proxy mode is a required step for being able to use the Proxy\nfunctionality. It is recommended that this is the last step, after setting\na channel and initializing the remote endpoint. Proxy mode cannot be changed if there\nis an on-going call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "On completion, this API will trigger a "
                  },
                  {
                    "type": "link",
                    "url": "#proxyeventproxychange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent on success. The "
                  },
                  {
                    "type": "link",
                    "url": "#proxygetproxymode",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.getProxyMode"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " or "
                  },
                  {
                    "type": "link",
                    "url": "#proxygetinfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.getInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nAPIs can be used to verify that proxy mode has been changed. If an error\nis encountered, this API will trigger a "
                  },
                  {
                    "type": "link",
                    "url": "#proxyeventproxyerror",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy:error"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "memberof",
              "description": "proxy",
              "lineNumber": 17
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 18,
              "name": "setProxyMode"
            },
            {
              "title": "param",
              "description": "Whether proxy mode should be enabled.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "value"
            },
            {
              "title": "example",
              "description": "// On success, the `proxy.setProxyMode` API will trigger a `proxy:change` event.\nclient.on('proxy:change', params => {\n   const isProxied = client.proxy.getProxyMode()\n   log(`Proxy mode set to ${isProxied}.`)\n})\n// On error, the `proxy.setProxyMode` API will trigger a `proxy:error` event.\nclient.on('proxy:error', params => {\n   const { code, message } = params.error\n   log(`Failed to set proxy mode due to ${code}: ${message}.`)\n})\n\n// Get the current proxy state to ensure we can set proxy mode to `true`.\nconst { proxyMode, hasChannel, remoteInitialized } = client.proxy.getInfo()\nif (\n   hasChannel === true && // A channel was previously provided.\n   remoteInitialized === true && // The Remote SDK is ready.\n   proxyMode === false && // Proxy mode is not already `true`.\n) {\n   client.proxy.setProxyMode(true)\n}",
              "lineNumber": 20
            }
          ],
          "loc": {
            "start": {
              "line": 161,
              "column": 2
            },
            "end": {
              "line": 202,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 203,
                "column": 2
              },
              "end": {
                "line": 213,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// On success, the `proxy.setProxyMode` API will trigger a `proxy:change` event.\nclient.on('proxy:change', params => {\n   const isProxied = client.proxy.getProxyMode()\n   log(`Proxy mode set to ${isProxied}.`)\n})\n// On error, the `proxy.setProxyMode` API will trigger a `proxy:error` event.\nclient.on('proxy:error', params => {\n   const { code, message } = params.error\n   log(`Failed to set proxy mode due to ${code}: ${message}.`)\n})\n\n// Get the current proxy state to ensure we can set proxy mode to `true`.\nconst { proxyMode, hasChannel, remoteInitialized } = client.proxy.getInfo()\nif (\n   hasChannel === true && // A channel was previously provided.\n   remoteInitialized === true && // The Remote SDK is ready.\n   proxyMode === false && // Proxy mode is not already `true`.\n) {\n   client.proxy.setProxyMode(true)\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "value",
              "lineNumber": 19,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Whether proxy mode should be enabled."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "proxy",
          "kind": "function",
          "name": "setProxyMode",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "proxy",
              "kind": "namespace"
            },
            {
              "name": "setProxyMode",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "proxy.setProxyMode"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sets whether Call functionality should be proxied to the Remote SDK or not. When set to "
                  },
                  {
                    "type": "inlineCode",
                    "value": "true"
                  },
                  {
                    "type": "text",
                    "value": ", WebRTC\noperations will be proxied over a channel. When set to "
                  },
                  {
                    "type": "inlineCode",
                    "value": "false"
                  },
                  {
                    "type": "text",
                    "value": ", WebRTC operation will occur as normal\non the local machine."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#proxysetproxymode",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.setProxyMode"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise\ninstead of an event. This API will not emit events specifically about the operation's completion, but may\nemit an event to reflect proxy state changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Setting proxy mode is a required step for being able to use the Proxy functionality. It is recommended that\nthis is the last step, after setting a channel and initializing the remote endpoint. Proxy mode cannot be\nchanged if there is an on-going call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The Proxy state will be changed on operation success, which will be accompanied by a\n"
                  },
                  {
                    "type": "link",
                    "url": "#proxyeventproxychange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event. The "
                  },
                  {
                    "type": "link",
                    "url": "#proxygetinfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.getInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to retrieve\nthe state."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 16,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 18
            },
            {
              "title": "memberof",
              "description": "proxy",
              "lineNumber": 19
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 20,
              "name": "setProxyModeAsync"
            },
            {
              "title": "param",
              "description": "Whether proxy mode should be enabled.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "value"
            },
            {
              "title": "return",
              "description": "A Promise that resolves when the operation is successful.",
              "lineNumber": 22,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "// Get the current proxy state to ensure we can set proxy mode to `true`.\nconst { proxyMode, hasChannel, remoteInitialized } = client.proxy.getInfo()\nif (\n   hasChannel === true &&        // A channel was previously provided.\n   remoteInitialized === true && // The Remote SDK is ready.\n   proxyMode === false &&        // Proxy mode is not already `true`.\n) {\n   try {\n     await client.proxy.setProxyMode(true)\n     // Calls are now set to be proxied.\n     // client.proxy.getInfo().proxyMode === true\n   } catch (error) {\n     // Operation failed; handle error.\n     const { code, message } = error\n     ...\n   }\n}",
              "lineNumber": 24
            }
          ],
          "loc": {
            "start": {
              "line": 215,
              "column": 2
            },
            "end": {
              "line": 257,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 258,
                "column": 2
              },
              "end": {
                "line": 267,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Get the current proxy state to ensure we can set proxy mode to `true`.\nconst { proxyMode, hasChannel, remoteInitialized } = client.proxy.getInfo()\nif (\n   hasChannel === true &&        // A channel was previously provided.\n   remoteInitialized === true && // The Remote SDK is ready.\n   proxyMode === false &&        // Proxy mode is not already `true`.\n) {\n   try {\n     await client.proxy.setProxyMode(true)\n     // Calls are now set to be proxied.\n     // client.proxy.getInfo().proxyMode === true\n   } catch (error) {\n     // Operation failed; handle error.\n     const { code, message } = error\n     ...\n   }\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "value",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Whether proxy mode should be enabled."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A Promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "proxy",
          "kind": "function",
          "name": "setProxyModeAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "proxy",
              "kind": "namespace"
            },
            {
              "name": "setProxyModeAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "proxy.setProxyModeAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sends an initialization message over the channel with webRTC configurations."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Initializing the Remote SDK is a required step before being able to use the\nProxy functionality. This step requires a channel having been set previously\n(see the "
                  },
                  {
                    "type": "link",
                    "url": "#proxysetchannel",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "API"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "). It is recommended to perform this\nstep before setting the proxy mode (see the "
                  },
                  {
                    "type": "link",
                    "url": "#proxysetproxymode",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.setProxyMode"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API)."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "On completion, this API will trigger a "
                  },
                  {
                    "type": "link",
                    "url": "#proxyeventproxychange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent on success. The "
                  },
                  {
                    "type": "link",
                    "url": "#proxygetinfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.getInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to verify\nthat the remote endpoint is initialized. If an error is encountered, this\nAPI will trigger a "
                  },
                  {
                    "type": "link",
                    "url": "#proxyeventproxyerror",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy:error"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will perform a version-check between this SDK and the Remote SDK.\nTheir versions must be the same, otherwise initialization will fail."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "memberof",
              "description": "proxy",
              "lineNumber": 17
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 18,
              "name": "initializeRemote"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "config"
            },
            {
              "title": "example",
              "description": "// Get the current proxy state to ensure we can initialize the Remote SDK.\nconst { hasChannel, remoteInitialized } = client.proxy.getInfo()\nif (\n   hasChannel === true && // A channel was previously provided.\n   remoteInitialized === false // The Remote SDK was not previously initializted.\n) {\n   client.proxy.initializeRemote()\n}",
              "lineNumber": 20
            }
          ],
          "loc": {
            "start": {
              "line": 269,
              "column": 2
            },
            "end": {
              "line": 298,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 299,
                "column": 2
              },
              "end": {
                "line": 308,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Get the current proxy state to ensure we can initialize the Remote SDK.\nconst { hasChannel, remoteInitialized } = client.proxy.getInfo()\nif (\n   hasChannel === true && // A channel was previously provided.\n   remoteInitialized === false // The Remote SDK was not previously initializted.\n) {\n   client.proxy.initializeRemote()\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "config",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "proxy",
          "kind": "function",
          "name": "initializeRemote",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "proxy",
              "kind": "namespace"
            },
            {
              "name": "initializeRemote",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "proxy.initializeRemote"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sends an initialization message over the channel with webRTC configurations."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#proxyinitializeremote",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.initializeRemote"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise instead\nof emitting events. This API will not emit events specifically about the operation's completion, but may\nemit an event to reflect proxy state changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Initializing the Remote SDK is a required step before being able to use the\nProxy functionality. This step requires a channel having been set previously\n(see the "
                  },
                  {
                    "type": "link",
                    "url": "#proxysetchannel",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "API"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "). It is recommended to perform this\nstep before setting the proxy mode (see the "
                  },
                  {
                    "type": "link",
                    "url": "#proxysetproxymode",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.setProxyMode"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API)."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will perform a version-check between this SDK and the Remote SDK. Their versions must be the same,\notherwise initialization will fail."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The Proxy state will be changed on operation success, which will be accompanied by a\n"
                  },
                  {
                    "type": "link",
                    "url": "#proxyeventproxychange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event. The "
                  },
                  {
                    "type": "link",
                    "url": "#proxygetinfo",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "proxy.getInfo"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to retrieve\nthe state."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 18,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 19
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 20
            },
            {
              "title": "memberof",
              "description": "proxy",
              "lineNumber": 21
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 22,
              "name": "initializeRemoteAsync"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "config"
            },
            {
              "title": "return",
              "description": "A Promise that resolves when the operation is successful.",
              "lineNumber": 24,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "// Get the current proxy state to ensure we can initialize the Remote SDK.\nconst { hasChannel, remoteInitialized } = client.proxy.getInfo()\nif (\n   hasChannel === true &&      // A channel was previously provided.\n   remoteInitialized === false // The Remote SDK was not previously initializted.\n) {\n   try {\n     await client.proxy.initializeRemoteAsync()\n     // Remote SDK has been setup.\n     // client.proxy.getInfo().remoteInitialized === true\n   } catch (params) {\n     // Operation failed; handle error.\n     const { code, message } = error\n     ...\n   }\n}",
              "lineNumber": 26
            }
          ],
          "loc": {
            "start": {
              "line": 310,
              "column": 2
            },
            "end": {
              "line": 353,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 354,
                "column": 2
              },
              "end": {
                "line": 362,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/webrtcProxy/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Get the current proxy state to ensure we can initialize the Remote SDK.\nconst { hasChannel, remoteInitialized } = client.proxy.getInfo()\nif (\n   hasChannel === true &&      // A channel was previously provided.\n   remoteInitialized === false // The Remote SDK was not previously initializted.\n) {\n   try {\n     await client.proxy.initializeRemoteAsync()\n     // Remote SDK has been setup.\n     // client.proxy.getInfo().remoteInitialized === true\n   } catch (params) {\n     // Operation failed; handle error.\n     const { code, message } = error\n     ...\n   }\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "config",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A Promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "proxy",
          "kind": "function",
          "name": "initializeRemoteAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "proxy",
              "kind": "namespace"
            },
            {
              "name": "initializeRemoteAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "proxy.initializeRemoteAsync"
        }
      ]
    },
    "path": [
      {
        "name": "proxy",
        "kind": "namespace"
      }
    ],
    "namespace": "proxy"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'request' namespace (within the 'api' type) is used to make network requests to the server."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 3,
        "type": null
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 4,
        "type": null,
        "name": "request"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 6,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 7,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/request/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "request",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Send a request to the underlying REST service with the appropriate configuration and authentication.\nThis is a wrapper on top of the browser's "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "https://developer.mozilla.org/en-US/docs/Web/API/fetch",
                    "children": [
                      {
                        "type": "text",
                        "value": "fetch API"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nand behaves very similarly but using SDK configuration for the base URL and authentication as well\nas SDK logging."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "memberof",
              "description": "request",
              "lineNumber": 7
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 8,
              "name": "fetch"
            },
            {
              "title": "param",
              "description": "The full path of the resource to fetch from the underlying service. This should include any REST version\n                         or user information. This path will be appended to the base URL according to SDK configuration.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "resource"
            },
            {
              "title": "param",
              "description": "An object containing any custom settings that you want to apply to the request. See [fetch API](https://developer.mozilla.org/en-US/docs/Web/API/fetch)\n                          for a full description and defaults.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "RequestInit"
              },
              "name": "init"
            },
            {
              "title": "return",
              "description": "A promise for a [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) object.",
              "lineNumber": 13,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "Response"
                  }
                ]
              }
            },
            {
              "title": "example",
              "description": "// Send a REST request to the server\n// Create a request options object following [fetch API](https://developer.mozilla.org/en-US/docs/Web/API/fetch)\nconst requestOptions = {\n  method: 'POST',\n  body: JSON.stringify({\n    test: 123\n  })\n}\n\n// Note that you will need to subscribe for the `custom` service in order to\n// receive notifications from the `externalnotification` service.\nconst response = await client.request.fetch('/rest/version/1/user/xyz@test.com/externalnotification', requestOptions)",
              "lineNumber": 14
            }
          ],
          "loc": {
            "start": {
              "line": 22,
              "column": 4
            },
            "end": {
              "line": 49,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 50,
                "column": 4
              },
              "end": {
                "line": 57,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/request/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Send a REST request to the server\n// Create a request options object following [fetch API](https://developer.mozilla.org/en-US/docs/Web/API/fetch)\nconst requestOptions = {\n  method: 'POST',\n  body: JSON.stringify({\n    test: 123\n  })\n}\n\n// Note that you will need to subscribe for the `custom` service in order to\n// receive notifications from the `externalnotification` service.\nconst response = await client.request.fetch('/rest/version/1/user/xyz@test.com/externalnotification', requestOptions)"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "resource",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The full path of the resource to fetch from the underlying service. This should include any REST version\nor user information. This path will be appended to the base URL according to SDK configuration."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "init",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An object containing any custom settings that you want to apply to the request. See "
                      },
                      {
                        "type": "link",
                        "title": null,
                        "url": "https://developer.mozilla.org/en-US/docs/Web/API/fetch",
                        "children": [
                          {
                            "type": "text",
                            "value": "fetch API"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": "\nfor a full description and defaults."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "RequestInit"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise for a "
                      },
                      {
                        "type": "link",
                        "title": null,
                        "url": "https://developer.mozilla.org/en-US/docs/Web/API/Response",
                        "children": [
                          {
                            "type": "text",
                            "value": "Response"
                          }
                        ]
                      },
                      {
                        "type": "text",
                        "value": " object."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "Response"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "request",
          "kind": "function",
          "name": "fetch",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "request",
              "kind": "function"
            },
            {
              "name": "fetch",
              "kind": "function"
            }
          ],
          "namespace": "requestfetch"
        }
      ]
    },
    "path": [
      {
        "name": "request",
        "kind": "namespace"
      }
    ],
    "namespace": "request"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "A set of "
            },
            {
              "type": "link",
              "url": "#callsdphandlerfunction",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "SdpHandlerFunction"
                }
              ]
            },
            {
              "type": "text",
              "value": "s for manipulating SDP information.\nThese handlers are used to customize low-level call behaviour for very specific\nenvironments and/or scenarios."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "Note that SDP handlers are exposed on the entry point of the SDK. They can be added during\ninitialization of the SDK using the "
            },
            {
              "type": "link",
              "url": "#configconfigcall",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "config.call.sdpHandlers"
                }
              ]
            },
            {
              "type": "text",
              "value": " configuration\nparameter. They can also be set after the SDK's creation by using the\n"
            },
            {
              "type": "link",
              "url": "#callsetsdphandlers",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "call.setSdpHandlers"
                }
              ]
            },
            {
              "type": "text",
              "value": " function."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 10,
        "type": null
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 11,
        "type": null,
        "name": "sdpHandlers"
      },
      {
        "title": "example",
        "description": "import { create, sdpHandlers } from '@rbbn/webrtc-js-sdk';\nconst codecRemover = sdpHandlers.createCodecRemover(['VP8', 'VP9'])\nconst client = create({\n  call: {\n    sdpHandlers: [ codecRemover, <Your-SDP-Handler-Function>, ...]\n  }\n})",
        "lineNumber": 12
      },
      {
        "title": "example",
        "description": "// Through the Call API post-instantiation\nclient.call.setSdpHandlers([ codecRemover, <Your-SDP-Handler-Function>, ...])",
        "lineNumber": 20
      }
    ],
    "loc": {
      "start": {
        "line": 40,
        "column": 0
      },
      "end": {
        "line": 63,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 121,
          "column": 0
        },
        "end": {
          "line": 121,
          "column": 58
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/builds/core/index.js"
    },
    "augments": [],
    "examples": [
      {
        "description": "import { create, sdpHandlers } from '@rbbn/webrtc-js-sdk';\nconst codecRemover = sdpHandlers.createCodecRemover(['VP8', 'VP9'])\nconst client = create({\n  call: {\n    sdpHandlers: [ codecRemover, <Your-SDP-Handler-Function>, ...]\n  }\n})"
      },
      {
        "description": "// Through the Call API post-instantiation\nclient.call.setSdpHandlers([ codecRemover, <Your-SDP-Handler-Function>, ...])"
      }
    ],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "sdpHandlers",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An object that represents a selector to match codecs of an RTP map in SDP."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "CodecSelector"
            },
            {
              "title": "memberof",
              "description": "sdpHandlers",
              "lineNumber": 6
            },
            {
              "title": "property",
              "description": "The name of the codec.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "name"
            },
            {
              "title": "property",
              "description": "An array of strings to match against the \"a=fmtp\" format parameters for the corresponding codec.\n                                     All of the elements in the array must be contained in the \"a=fmtp\" attribute in order to be a match.",
              "lineNumber": 8,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "fmtpParams"
            }
          ],
          "loc": {
            "start": {
              "line": 65,
              "column": 0
            },
            "end": {
              "line": 75,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 121,
                "column": 0
              },
              "end": {
                "line": 121,
                "column": 58
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/builds/core/index.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "name",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The name of the codec."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "fmtpParams",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An array of strings to match against the \"a=fmtp\" format parameters for the corresponding codec.\nAll of the elements in the array must be contained in the \"a=fmtp\" attribute in order to be a match."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "CodecSelector",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "sdpHandlers",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "sdpHandlers",
              "kind": "namespace"
            },
            {
              "name": "CodecSelector",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "sdpHandlers.CodecSelector"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This function creates an SDP handler that will remove codecs matching the selectors specified for SDP offers and answers."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "In some scenarios it's necessary to remove certain codecs being offered by the SDK to remote parties. For example, some legacy call services limit the SDP\nlength (usually to 4KB) and will reject calls that have SDP size above this amount."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "While creating an SDP handler would allow a user to perform this type of manipulation, it is a non-trivial task that requires in-depth knowledge of WebRTC SDP."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "To facilitate this common task, the createCodecRemover function creates a codec removal handler that can be used for this purpose. Applications can use this codec\nremoval handler in combination with the "
                  },
                  {
                    "type": "link",
                    "url": "#callgetavailablecodecs",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getAvailableCodecs"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " function in order to build logic to determine the best codecs to use\nfor their application."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 12,
              "type": null
            },
            {
              "title": "memberof",
              "description": "sdpHandlers",
              "lineNumber": 13
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 14,
              "name": "createCodecRemover"
            },
            {
              "title": "param",
              "description": "A list of codec selectors to remove from the SDP. If passing a list of strings, they will be converted into\n                                                     codec selectors that correspond to those names without any extra FMTP parameters.",
              "lineNumber": 15,
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "CodecSelector"
                      }
                    ]
                  },
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                ]
              },
              "name": "codecs"
            },
            {
              "title": "returns",
              "description": "The resulting SDP handler that will remove the codec.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "call.SdpHandlerFunction"
              }
            },
            {
              "title": "example",
              "description": "import { create, sdpHandlers } from '@rbbn/webrtc-js-sdk';\n\nconst codecRemover = sdpHandlers.createCodecRemover([\n  // Remove all VP8 and VP9 codecs.\n  'VP8',\n  'VP9',\n\n  // Remove all H264 codecs with the specified FMTP parameters.\n  {\n    name: 'H264',\n    fmtpParams: ['packetization-mode=0']\n  }\n])\n\nconst client = create({\n  call: {\n    sdpHandlers: [codecRemover]\n  }\n})",
              "lineNumber": 18
            }
          ],
          "loc": {
            "start": {
              "line": 77,
              "column": 0
            },
            "end": {
              "line": 116,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 121,
                "column": 0
              },
              "end": {
                "line": 121,
                "column": 58
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/builds/core/index.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "import { create, sdpHandlers } from '@rbbn/webrtc-js-sdk';\n\nconst codecRemover = sdpHandlers.createCodecRemover([\n  // Remove all VP8 and VP9 codecs.\n  'VP8',\n  'VP9',\n\n  // Remove all H264 codecs with the specified FMTP parameters.\n  {\n    name: 'H264',\n    fmtpParams: ['packetization-mode=0']\n  }\n])\n\nconst client = create({\n  call: {\n    sdpHandlers: [codecRemover]\n  }\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "codecs",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of codec selectors to remove from the SDP. If passing a list of strings, they will be converted into\ncodec selectors that correspond to those names without any extra FMTP parameters."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "UnionType",
                "elements": [
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "CodecSelector"
                      }
                    ]
                  },
                  {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The resulting SDP handler that will remove the codec."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "call.SdpHandlerFunction"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "sdpHandlers",
          "kind": "function",
          "name": "createCodecRemover",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "sdpHandlers",
              "kind": "namespace"
            },
            {
              "name": "createCodecRemover",
              "kind": "function"
            }
          ],
          "namespace": "sdpHandlerscreateCodecRemover"
        }
      ]
    },
    "path": [
      {
        "name": "sdpHandlers",
        "kind": "namespace"
      }
    ],
    "namespace": "sdpHandlers"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'services' namespace allows an application to manage how they wish the SDK to\nreceive communications from the platform. An application can subscribe to\nservices in order to receive updates about that service for the current\nuser. A feature generally requires a subscription for its service to be\nfully functional."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The services an application can subscribe to are based on the features\nincluded in the SDK. The list of available services can be retrieved\nusing the "
            },
            {
              "type": "link",
              "url": "#servicesgetsubscriptions",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "services.getSubscriptions"
                }
              ]
            },
            {
              "type": "text",
              "value": " API. These values can be used\nwith the "
            },
            {
              "type": "link",
              "url": "#servicessubscribe",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "services.subscribe"
                }
              ]
            },
            {
              "type": "text",
              "value": " API."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The channel used for subscriptions is the method for receiving the service\nupdates. The recommended channel is "
            },
            {
              "type": "inlineCode",
              "value": "websocket"
            },
            {
              "type": "text",
              "value": ", where the SDK is able to\nhandle receiving the updates internally. Alternate channel methods, if a\nwebsocket cannot be used, will be available in the future."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 17,
        "type": null
      },
      {
        "title": "requires",
        "description": null,
        "lineNumber": 18,
        "name": "subscription"
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 19,
        "type": null,
        "name": "services"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 21,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 65,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/subscription/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "services",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Subscription information has changed."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The updated subscription information can be retrieved using the\n"
                  },
                  {
                    "type": "link",
                    "url": "#servicesgetsubscriptions",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.getSubscriptions"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "inlineCode",
                    "value": "reason"
                  },
                  {
                    "type": "text",
                    "value": " parameter indicates why the subscription has changed.\nThe value for this parameter will be one of the "
                  },
                  {
                    "type": "link",
                    "url": "#serviceschangereasons",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.changeReasons"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " constants."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 8,
              "type": null
            },
            {
              "title": "memberof",
              "description": "services",
              "lineNumber": 9
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 10,
              "name": "subscription"
            },
            {
              "title": "event",
              "description": "subscription:change",
              "lineNumber": 11
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The reason for the change.",
              "lineNumber": 13,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "params.reason"
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 15,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 16,
                "column": 0
              },
              "end": {
                "line": 16,
                "column": 47
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/subscription/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.reason",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The reason for the change."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "services",
          "kind": "event",
          "name": "subscription:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "services",
              "kind": "namespace"
            },
            {
              "name": "subscription:change",
              "kind": "event"
            }
          ],
          "namespace": "services.event:subscription:change"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An error occurred during a subscription operation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The subscription information can be retrieved using the\n"
                  },
                  {
                    "type": "link",
                    "url": "#servicesgetsubscriptions",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.getSubscriptions"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Below are some common errors related to service subscriptions."
                  }
                ]
              },
              {
                "type": "list",
                "ordered": false,
                "start": null,
                "spread": false,
                "children": [
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:1"
                          },
                          {
                            "type": "text",
                            "value": "  - \"Authorization failed with server. Please check credentials. Status code: 4`\" - Invalid credentials."
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:3"
                          },
                          {
                            "type": "text",
                            "value": "  - \"No subscription found for \"X\", can't unsubscribe\" - The requested service is not currently subscribed."
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:3"
                          },
                          {
                            "type": "text",
                            "value": "  - \"No subscription found, can't unsubscribe.\" - There are no active subscriptions."
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:4"
                          },
                          {
                            "type": "text",
                            "value": "  - \"Failed to subscribe user. Status Code 19\" - Too many active sessions with the requested user."
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:4"
                          },
                          {
                            "type": "text",
                            "value": "  - \"Failed to subscribe user. Status Code 37\" - Invalid service string."
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:4"
                          },
                          {
                            "type": "text",
                            "value": "  - \"Failed to subscribe user. Status Code 38\" - Invalid characters in client correlator."
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:4"
                          },
                          {
                            "type": "text",
                            "value": "  - \"Failed to subscribe user. Status Code 39\" - Session does not exist anymore."
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:12"
                          },
                          {
                            "type": "text",
                            "value": " - \"No services found in configuration.\" - No services found in SDK configuration."
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The following errors indicate an issue with the user account or temporary backend issue. They may require help from support or a delay before being retried."
                  }
                ]
              },
              {
                "type": "list",
                "ordered": false,
                "start": null,
                "spread": false,
                "children": [
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:4"
                          },
                          {
                            "type": "text",
                            "value": "  - \"Failed to subscribe user. Status Code 9\""
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:4"
                          },
                          {
                            "type": "text",
                            "value": "  - \"Failed to subscribe user. Status Code 17\""
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:4"
                          },
                          {
                            "type": "text",
                            "value": "  - \"Failed to subscribe user. Status Code 26\""
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:4"
                          },
                          {
                            "type": "text",
                            "value": "  - \"Failed to subscribe user. Status Code 27\""
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:4"
                          },
                          {
                            "type": "text",
                            "value": "  - \"Failed to subscribe user. Status Code 54\""
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:4"
                          },
                          {
                            "type": "text",
                            "value": "  - \"Failed to subscribe user. Status Code 62\""
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:4"
                          },
                          {
                            "type": "text",
                            "value": "  - \"Failed to subscribe user. Status Code 63\""
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "inlineCode",
                            "value": "authentication:13"
                          },
                          {
                            "type": "text",
                            "value": " - \"Failed to subscribe user. Status Code 53\""
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "For a more detailed look into subscription errors and handling recommendations,\nplease refer to the \"Handling Subscription Errors\" tutorial."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 30,
              "type": null
            },
            {
              "title": "memberof",
              "description": "services",
              "lineNumber": 31
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 32,
              "name": "subscription"
            },
            {
              "title": "event",
              "description": "subscription:error",
              "lineNumber": 33
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 34,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "A Basic error object, representing the error that occurred.",
              "lineNumber": 35,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 18,
              "column": 0
            },
            "end": {
              "line": 54,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 55,
                "column": 0
              },
              "end": {
                "line": 55,
                "column": 45
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/subscription/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 34,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 35,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "A Basic error object, representing the error that occurred."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "services",
          "kind": "event",
          "name": "subscription:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "services",
              "kind": "namespace"
            },
            {
              "name": "subscription:error",
              "kind": "event"
            }
          ],
          "namespace": "services.event:subscription:error"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An attempt to extend the current user's subscription was made."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "In a failure scenario, the current user is still connected, and further\nresubscription attempts will be made, but may become disconnected if the\nsession expires."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "memberof",
              "description": "services",
              "lineNumber": 7
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 8,
              "name": "subscription"
            },
            {
              "title": "event",
              "description": "subscription:resub",
              "lineNumber": 9
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The attempt number of this resubscription.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "params.attemptNum"
            },
            {
              "title": "param",
              "description": "Whether the resubscription failed or not.",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "params.isFailure"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 13,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "api.BasicError"
                }
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 57,
              "column": 0
            },
            "end": {
              "line": 71,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 72,
                "column": 0
              },
              "end": {
                "line": 72,
                "column": 45
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/subscription/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.attemptNum",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The attempt number of this resubscription."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  }
                },
                {
                  "title": "param",
                  "name": "params.isFailure",
                  "lineNumber": 12,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the resubscription failed or not."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  }
                },
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "api.BasicError"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "services",
          "kind": "event",
          "name": "subscription:resub",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "services",
              "kind": "namespace"
            },
            {
              "name": "subscription:resub",
              "kind": "event"
            }
          ],
          "namespace": "services.event:subscription:resub"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Subscribes to platform notifications for an SDK service."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#serviceseventsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "subscription:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event for each change\nin subscription state. This includes when this API is initially called, to indicate a pending subscription,\nthen again after the operation succeeds. Upon getting such event, existing subscriptions can be retrieved\nusing the "
                  },
                  {
                    "type": "link",
                    "url": "#servicesgetsubscriptions",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.getSubscriptions"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#serviceseventsubscriptionerror",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "subscription:error"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event if the operation\nfails."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If the "
                  },
                  {
                    "type": "link",
                    "url": "#servicesunsubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.unsubscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API is called while a subscription is in progress, this operation will\nbe cancelled and the SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#serviceseventsubscriptionerror",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "subscription:error"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event\nwith an error indicating the cancellation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "inlineCode",
                    "value": "clientCorrelator"
                  },
                  {
                    "type": "text",
                    "value": " option should be provided to support a user subscribing from multiple clients\nat the same time. This value is used by the platform to correlate subscriptions to specific clients.\nIf a second subscription is made with the same value (including no value), the platform will override\nthe first subscription. The client with the first subscription will receive a\n"
                  },
                  {
                    "type": "link",
                    "url": "#serviceseventsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "subscription:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event with an explicit reason in this\nscenario."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK currently only supports the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "websocket"
                  },
                  {
                    "type": "text",
                    "value": " channel as a subscription "
                  },
                  {
                    "type": "inlineCode",
                    "value": "type"
                  },
                  {
                    "type": "text",
                    "value": " option."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 24,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 25
            },
            {
              "title": "memberof",
              "description": "services",
              "lineNumber": 26
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 27,
              "name": "subscription"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 28,
              "name": "subscribe"
            },
            {
              "title": "param",
              "description": "A list of service configurations.",
              "lineNumber": 29,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "UnionType",
                    "elements": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      },
                      {
                        "type": "NameExpression",
                        "name": "services.ServiceDescriptor"
                      }
                    ]
                  }
                ]
              },
              "name": "services"
            },
            {
              "title": "param",
              "description": "The options object for non-credential options.",
              "lineNumber": 30,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "The method of how to receive service updates.",
              "lineNumber": 31,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "options.type",
              "default": "'websocket'"
            },
            {
              "title": "param",
              "description": "Unique ID for the client. This is used by the platform to identify\n   an instance of the application used by the specific device.",
              "lineNumber": 32,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "options.clientCorrelator"
            },
            {
              "title": "return",
              "description": null,
              "lineNumber": 34,
              "type": {
                "type": "UndefinedLiteral"
              }
            },
            {
              "title": "example",
              "description": "// Subscribe for call and messaging services.\nclient.services.subscribe(['call', 'IM'], { clientCorrelator: 'abc123' })",
              "lineNumber": 35
            }
          ],
          "loc": {
            "start": {
              "line": 29,
              "column": 2
            },
            "end": {
              "line": 67,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 68,
                "column": 2
              },
              "end": {
                "line": 89,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/subscription/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Subscribe for call and messaging services.\nclient.services.subscribe(['call', 'IM'], { clientCorrelator: 'abc123' })"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "services",
              "lineNumber": 29,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of service configurations."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "UnionType",
                    "elements": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      },
                      {
                        "type": "NameExpression",
                        "name": "services.ServiceDescriptor"
                      }
                    ]
                  }
                ]
              }
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 30,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The options object for non-credential options."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.type",
                  "lineNumber": 31,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The method of how to receive service updates."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  },
                  "default": "'websocket'"
                },
                {
                  "title": "param",
                  "name": "options.clientCorrelator",
                  "lineNumber": 32,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Unique ID for the client. This is used by the platform to identify\nan instance of the application used by the specific device."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": []
              },
              "title": "returns",
              "type": {
                "type": "UndefinedLiteral"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "services",
          "kind": "function",
          "name": "subscribe",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "services",
              "kind": "namespace"
            },
            {
              "name": "subscribe",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "services.subscribe"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Creates a subscription on the WebRTC Gateway to receive notifications for specified services."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#servicessubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.subscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise instead\nof emitting events. This API will not emit events specifically about the operation's completion, but may\nemit an event to reflect subscription changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "As a prerequisite, user credentials must be available for REST authorization with the WebRTC Gateway. The credentials\nshould be provided with the "
                  },
                  {
                    "type": "link",
                    "url": "auth.setCredentials",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "auth.setCredentials"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Returns a promise that resolves when the subscription is successful. When resolved, subscriptions can be retrieved\nusing the "
                  },
                  {
                    "type": "link",
                    "url": "#servicesgetsubscriptions",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.getSubscriptions"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API. If the subscription fails, the promise will reject with a\n"
                  },
                  {
                    "type": "link",
                    "url": "BasicError",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "BasicError"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " describing the failure."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If the "
                  },
                  {
                    "type": "link",
                    "url": "#servicesunsubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.unsubscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API is called while a subscription is in progress, this operation will\nbe cancelled and will reject with an error indicating the cancellation."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "inlineCode",
                    "value": "clientCorrelator"
                  },
                  {
                    "type": "text",
                    "value": " option should be provided to support a user subscribing from multiple clients\nat the same time. This value is used by the platform to correlate subscriptions to specific clients.\nIf a second subscription is made with the same value (including no value), the platform will override\nthe first subscription. The client with the first subscription will receive a\n"
                  },
                  {
                    "type": "link",
                    "url": "#serviceseventsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "subscription:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event with an explicit reason in this\nscenario."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The subscription will be refreshed automatically based on the "
                  },
                  {
                    "type": "link",
                    "url": "config.subscription",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "config.subscription"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " configuration. When this\nresubscribe happens, a "
                  },
                  {
                    "type": "link",
                    "url": "#serviceseventsubscriptionresub",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "subscription:resub"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event will be emitted. If the\nsubscription cannot be refreshed before it expires, a "
                  },
                  {
                    "type": "link",
                    "url": "#serviceseventsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "subscription:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent will be emitted with an explicit "
                  },
                  {
                    "type": "inlineCode",
                    "value": "reason"
                  },
                  {
                    "type": "text",
                    "value": " parameter."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 29,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 30
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 31
            },
            {
              "title": "memberof",
              "description": "services",
              "lineNumber": 32
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 33,
              "name": "subscribeAsync"
            },
            {
              "title": "param",
              "description": "A list of service configurations.",
              "lineNumber": 34,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "UnionType",
                    "elements": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      },
                      {
                        "type": "NameExpression",
                        "name": "services.ServiceDescriptor"
                      }
                    ]
                  }
                ]
              },
              "name": "services"
            },
            {
              "title": "param",
              "description": "The options object for non-credential options.",
              "lineNumber": 35,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "The method of how to receive service updates.",
              "lineNumber": 36,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "options.type",
              "default": "'websocket'"
            },
            {
              "title": "param",
              "description": "Unique ID for the client. This is used by the platform to identify\n   an instance of the application used by the specific device.",
              "lineNumber": 37,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "options.clientCorrelator"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the subscription is successful.",
              "lineNumber": 39,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 40,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "// Subscribe for call and messaging services.\ntry {\n    await client.services.subscribeAsync(['call', 'IM'], { clientCorrelator: 'abc123' })\n} catch (error) {\n    // Subscription failed; handle error.\n    const { code, message } = error\n    ...\n}",
              "lineNumber": 41
            }
          ],
          "loc": {
            "start": {
              "line": 91,
              "column": 2
            },
            "end": {
              "line": 141,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 142,
                "column": 2
              },
              "end": {
                "line": 182,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/subscription/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Subscribe for call and messaging services.\ntry {\n    await client.services.subscribeAsync(['call', 'IM'], { clientCorrelator: 'abc123' })\n} catch (error) {\n    // Subscription failed; handle error.\n    const { code, message } = error\n    ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "services",
              "lineNumber": 34,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of service configurations."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "UnionType",
                    "elements": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      },
                      {
                        "type": "NameExpression",
                        "name": "services.ServiceDescriptor"
                      }
                    ]
                  }
                ]
              }
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 35,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The options object for non-credential options."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.type",
                  "lineNumber": 36,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The method of how to receive service updates."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  },
                  "default": "'websocket'"
                },
                {
                  "title": "param",
                  "name": "options.clientCorrelator",
                  "lineNumber": 37,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Unique ID for the client. This is used by the platform to identify\nan instance of the application used by the specific device."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the subscription is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "services",
          "kind": "function",
          "name": "subscribeAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "services",
              "kind": "namespace"
            },
            {
              "name": "subscribeAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "services.subscribeAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Cancels existing subscriptions for platform notifications."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "When calling this API, SDK emits a "
                  },
                  {
                    "type": "link",
                    "url": "#serviceseventsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "subscription:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event, each\ntime there is a change in subscriptions."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Upon getting such event, existing subscriptions can be retrieved using the\n"
                  },
                  {
                    "type": "link",
                    "url": "#servicesgetsubscriptions",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.getSubscriptions"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API. The "
                  },
                  {
                    "type": "inlineCode",
                    "value": "subscribed"
                  },
                  {
                    "type": "text",
                    "value": " values are the\nservices that can be unsubscribed from."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "memberof",
              "description": "services",
              "lineNumber": 12
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 13,
              "name": "subscription"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 14,
              "name": "unsubscribe"
            },
            {
              "title": "param",
              "description": "A list of subscribed service names.",
              "lineNumber": 15,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "services"
            },
            {
              "title": "param",
              "description": "The method of how the service updates\n   are being received.",
              "lineNumber": 16,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "type",
              "default": "'websocket'"
            },
            {
              "title": "example",
              "description": "// Unsubscribe from chat and SMS services.\nconst services = [ 'chat', 'smsinbound' ]\n\nclient.services.unsubscribe(services)",
              "lineNumber": 18
            }
          ],
          "loc": {
            "start": {
              "line": 184,
              "column": 2
            },
            "end": {
              "line": 207,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 208,
                "column": 2
              },
              "end": {
                "line": 215,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/subscription/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Unsubscribe from chat and SMS services.\nconst services = [ 'chat', 'smsinbound' ]\n\nclient.services.unsubscribe(services)"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "services",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of subscribed service names."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            },
            {
              "title": "param",
              "name": "type",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The method of how the service updates\nare being received."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "default": "'websocket'"
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "services",
          "kind": "function",
          "name": "unsubscribe",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "services",
              "kind": "namespace"
            },
            {
              "name": "unsubscribe",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "services.unsubscribe"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Cancels the existing subscription on the WebRTC Gateway for receiving notifications."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#servicesunsubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.unsubscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise instead\nof emitting events. This API will not emit events specifically about the operation's completion, but may\nemit an event to reflect subscription changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "As a prerequisite, a subscription must exist with some or all of the specified "
                  },
                  {
                    "type": "inlineCode",
                    "value": "services"
                  },
                  {
                    "type": "text",
                    "value": ". The "
                  },
                  {
                    "type": "link",
                    "url": "#servicesgetsubscriptions",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.getSubscriptions"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API\ncan be used to retrieve the existing subscription, if any. If a subset of the existing services are specified, then the\nsubscription will be updated to remove only those services. If all of the existing services are specified, then the subscription\nwill be removed entirely."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Returns a promise that resolves when the operation is successful. If the operation fails, the promise will reject with a\n"
                  },
                  {
                    "type": "link",
                    "url": "BasicError",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "BasicError"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " describing the failure."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "memberof",
              "description": "services",
              "lineNumber": 18
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 19,
              "name": "unsubscribeAsync"
            },
            {
              "title": "param",
              "description": "A list of subscribed service names.",
              "lineNumber": 20,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "services"
            },
            {
              "title": "param",
              "description": "The method of how the service updates are being received.",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "type",
              "default": "'websocket'"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the unsubscription is complete.",
              "lineNumber": 22,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "// Unsubscribe from call and messaging services.\ntry {\n  await client.services.unsubscribeAsync(['call', 'IM'])\n  // Operation was successful.\n} catch (error) {\n  // Operation failed.\n  const { code, message } = error\n}",
              "lineNumber": 24
            }
          ],
          "loc": {
            "start": {
              "line": 217,
              "column": 2
            },
            "end": {
              "line": 250,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 251,
                "column": 2
              },
              "end": {
                "line": 283,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/subscription/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Unsubscribe from call and messaging services.\ntry {\n  await client.services.unsubscribeAsync(['call', 'IM'])\n  // Operation was successful.\n} catch (error) {\n  // Operation failed.\n  const { code, message } = error\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "services",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of subscribed service names."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            },
            {
              "title": "param",
              "name": "type",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The method of how the service updates are being received."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "default": "'websocket'"
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the unsubscription is complete."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "memberof": "services",
          "kind": "function",
          "name": "unsubscribeAsync",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "services",
              "kind": "namespace"
            },
            {
              "name": "unsubscribeAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "services.unsubscribeAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves information about currently subscribed services and available services.\nThe data returned by this API is a snapshot of the SDK's current local subscription state.\nThe data does indicate whether there was an ongoing subscription at the time this API was called.\nIf a subscription is in fact in progress, the user should not take decisions based on this snapshot, as the\nsubscription is not yet complete."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "To be notified when any subscription(s) did change/complete, listen for\n"
                  },
                  {
                    "type": "link",
                    "url": "#serviceseventsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "subscription:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " events."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "inlineCode",
                    "value": "available"
                  },
                  {
                    "type": "text",
                    "value": " values are the SDK's services that an application can\nsubscribe to receive notifications about. A feature generally\nrequires a subscription to its service in order to be fully functional."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "inlineCode",
                    "value": "subscribed"
                  },
                  {
                    "type": "text",
                    "value": " values are the SDK's services that the application has\nan active subscription for. Services are subscribed to using the\n"
                  },
                  {
                    "type": "link",
                    "url": "#servicessubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.subscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 18,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 19
            },
            {
              "title": "memberof",
              "description": "services",
              "lineNumber": 20
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 21,
              "name": "subscription"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 22,
              "name": "getSubscriptions"
            },
            {
              "title": "return",
              "description": "Lists of subscribed and available services.",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "example",
              "description": "// Get the lists of services.\nconst services = client.services.getSubscriptions()\n\n// Ensure that there were no pending subscriptions at the time\n// we called getSubscriptions API.\nif (!services.isPending) {\n  // Figure out which available services don't have a subscription.\n  const notSubscribed = services.available.filter(service => {\n    return !services.subscribed.includes(service)\n  })\n\n  // Subscribe for all not-yet-subscribed services.\n  client.services.subscribe(notSubscribed)\n}",
              "lineNumber": 24
            }
          ],
          "loc": {
            "start": {
              "line": 292,
              "column": 6
            },
            "end": {
              "line": 332,
              "column": 9
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 333,
                "column": 6
              },
              "end": {
                "line": 340,
                "column": 7
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/subscription/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Get the lists of services.\nconst services = client.services.getSubscriptions()\n\n// Ensure that there were no pending subscriptions at the time\n// we called getSubscriptions API.\nif (!services.isPending) {\n  // Figure out which available services don't have a subscription.\n  const notSubscribed = services.available.filter(service => {\n    return !services.subscribed.includes(service)\n  })\n\n  // Subscribe for all not-yet-subscribed services.\n  client.services.subscribe(notSubscribed)\n}"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Lists of subscribed and available services."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "services",
          "kind": "function",
          "name": "getSubscriptions",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "services",
              "kind": "namespace"
            },
            {
              "name": "getSubscriptions",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "services.getSubscriptions"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Constants used to describe reasons for subscription change."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "These values are used in the "
                  },
                  {
                    "type": "link",
                    "url": "#serviceseventsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "subscription:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event\nfor the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "reason"
                  },
                  {
                    "type": "text",
                    "value": " parameter to indicate why the subscription has changed."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 7
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 8,
              "name": "subscription"
            },
            {
              "title": "memberof",
              "description": "services",
              "lineNumber": 9
            },
            {
              "title": "property",
              "description": "When the server terminated the subscription.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "GONE"
            },
            {
              "title": "property",
              "description": "When network connectivity was lost.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "LOST_CONNECTION"
            },
            {
              "title": "property",
              "description": "When the webSocket was overridden by the server.",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "WS_OVERRIDDEN"
            },
            {
              "title": "property",
              "description": "When the subscription is in progress.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "PENDING"
            },
            {
              "title": "property",
              "description": "When the user is subscribed to services.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "SUBSCRIBED"
            },
            {
              "title": "property",
              "description": "When the user is unsubscribed from services.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "UNSUBSCRIBED"
            }
          ],
          "loc": {
            "start": {
              "line": 342,
              "column": 6
            },
            "end": {
              "line": 358,
              "column": 9
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 359,
                "column": 6
              },
              "end": {
                "line": 359,
                "column": 35
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/subscription/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "GONE",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "When the server terminated the subscription."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "LOST_CONNECTION",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "When network connectivity was lost."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "WS_OVERRIDDEN",
              "lineNumber": 12,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "When the webSocket was overridden by the server."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "PENDING",
              "lineNumber": 13,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "When the subscription is in progress."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "SUBSCRIBED",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "When the user is subscribed to services."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "UNSUBSCRIBED",
              "lineNumber": 15,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "When the user is unsubscribed from services."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "services",
          "name": "changeReasons",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "services",
              "kind": "namespace"
            },
            {
              "name": "changeReasons",
              "scope": "static"
            }
          ],
          "namespace": "services.changeReasons"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The ServiceDescriptor type defines the format for specifying how to subscribe for a certain service.\nThis is the service configuration object that needs to be passed (as part of an array of configuration objects)\nwhen calling the "
                  },
                  {
                    "type": "link",
                    "url": "#servicessubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.subscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " function.\nOnly some plugins ("
                  },
                  {
                    "type": "inlineCode",
                    "value": "call"
                  },
                  {
                    "type": "text",
                    "value": ", "
                  },
                  {
                    "type": "inlineCode",
                    "value": "messaging"
                  },
                  {
                    "type": "text",
                    "value": " and "
                  },
                  {
                    "type": "inlineCode",
                    "value": "presence"
                  },
                  {
                    "type": "text",
                    "value": ") support such configuration object that needs to be passed\nto the subscribe function."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 7,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 8
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 9,
              "name": "subscription"
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "ServiceDescriptor"
            },
            {
              "title": "property",
              "description": "The name of the available service user wants to subscribe to.\n   The available service names are `chat`, `presence`, `call` and `smsinbound`.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "service"
            },
            {
              "title": "property",
              "description": "An object containing any additional parameters required for subscribing to that service.\n   This is an optional property as not all service subscriptions require it.",
              "lineNumber": 13,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "params"
            },
            {
              "title": "memberof",
              "description": "services",
              "lineNumber": 15
            },
            {
              "title": "example",
              "description": "// Subscribe to chat, presence & call services on a WebSocket channel.\nclient.services.subscribe([\n   {service: 'chat'},\n   {service: 'presence'},\n   {service: 'call'},\n], 'websocket')",
              "lineNumber": 16
            }
          ],
          "loc": {
            "start": {
              "line": 23,
              "column": 0
            },
            "end": {
              "line": 46,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 65,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/subscription/docs.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Subscribe to chat, presence & call services on a WebSocket channel.\nclient.services.subscribe([\n   {service: 'chat'},\n   {service: 'presence'},\n   {service: 'call'},\n], 'websocket')"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "service",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The name of the available service user wants to subscribe to.\nThe available service names are "
                      },
                      {
                        "type": "inlineCode",
                        "value": "chat"
                      },
                      {
                        "type": "text",
                        "value": ", "
                      },
                      {
                        "type": "inlineCode",
                        "value": "presence"
                      },
                      {
                        "type": "text",
                        "value": ", "
                      },
                      {
                        "type": "inlineCode",
                        "value": "call"
                      },
                      {
                        "type": "text",
                        "value": " and "
                      },
                      {
                        "type": "inlineCode",
                        "value": "smsinbound"
                      },
                      {
                        "type": "text",
                        "value": "."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "params",
              "lineNumber": 13,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An object containing any additional parameters required for subscribing to that service.\nThis is an optional property as not all service subscriptions require it."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "ServiceDescriptor",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "services",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "services",
              "kind": "namespace"
            },
            {
              "name": "ServiceDescriptor",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "services.ServiceDescriptor"
        }
      ]
    },
    "path": [
      {
        "name": "services",
        "kind": "namespace"
      }
    ],
    "namespace": "services"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The SIP Events feature allows an application to communicate with a SIP network integrated\nwith their WebRTC Gateway instance. The SIP network may generate custom events intended\nfor an application, which can be handled with the SDK's "
            },
            {
              "type": "inlineCode",
              "value": "sip"
            },
            {
              "type": "text",
              "value": " namespace."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "Usage of SIP Events is dependent on your WebRTC Gateway instance. The types of SIP Events can\nbe different based on configurations and components, often being part of a custom\nsolution. As such, the SIP Events feature is presented in a generic manner to be\nflexible for any possible events."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "An example of a common SIP event is \"SIP presence\". When a user is connected to a SIP phone,\nthe network may generate \"phone presence\" events when the user starts and ends a call\n(eg. 'On Call', 'Available'). Applications can subscribe to receive these events for\nspecific users."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "A SIP event may either be solicited or unsolicited. Solicited events, such as the \"presence\"\nexample above, requires the application to subscribe for the event. See the\n"
            },
            {
              "type": "link",
              "url": "#sipsubscribe",
              "title": null,
              "jsdoc": true,
              "children": [
                {
                  "type": "text",
                  "value": "sip.subscribe API"
                }
              ]
            },
            {
              "type": "text",
              "value": " for more information about solicited events.\nUnsolicited events have no prerequisites for being received."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 20,
        "type": null
      },
      {
        "title": "requires",
        "description": null,
        "lineNumber": 21,
        "name": "sipEvents"
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 22,
        "type": null,
        "name": "sip"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 24,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 25,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/sipEvents/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "sip",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A change has occurred to a SIP subscription."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This event can be emitted when a new SIP subscription is created ("
                  },
                  {
                    "type": "link",
                    "url": "#sipsubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.subscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nAPI), an existing subscription is updated ("
                  },
                  {
                    "type": "link",
                    "url": "#sipupdate",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.update"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API), or has been\ndeleted ("
                  },
                  {
                    "type": "link",
                    "url": "#sipunsubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.unsubscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API). The "
                  },
                  {
                    "type": "inlineCode",
                    "value": "change"
                  },
                  {
                    "type": "text",
                    "value": " parameter on the event indicates\nwhich scenario caused the event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "When users are added or removed from a subscription through a new subscription or an update,\nthe "
                  },
                  {
                    "type": "inlineCode",
                    "value": "subscribedUsers"
                  },
                  {
                    "type": "text",
                    "value": " and "
                  },
                  {
                    "type": "inlineCode",
                    "value": "unsubscribedUsers"
                  },
                  {
                    "type": "text",
                    "value": " parameters will indicate the users added\nand removed, respectively."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "link",
                    "url": "#sipgetdetails",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.getDetails"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to retrieve the current information about\na subscription."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 15,
              "type": null
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 16,
              "name": "sipEvents"
            },
            {
              "title": "memberof",
              "description": "sip",
              "lineNumber": 17
            },
            {
              "title": "event",
              "description": "sip:subscriptionChange",
              "lineNumber": 18
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The name of the SIP event.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.eventType"
            },
            {
              "title": "param",
              "description": "The change operation that triggered the event.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.change"
            },
            {
              "title": "param",
              "description": "List of users added to the subscription\n   as part of the change.",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  ]
                }
              },
              "name": "params.subscribedUsers"
            },
            {
              "title": "param",
              "description": "List of users removed from the\n   subscription as part of the change.",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  ]
                }
              },
              "name": "params.unsubscribedUsers"
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 27,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 28,
                "column": 0
              },
              "end": {
                "line": 28,
                "column": 66
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/sipEvents/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.eventType",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The name of the SIP event."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.change",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The change operation that triggered the event."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.subscribedUsers",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of users added to the subscription\nas part of the change."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      ]
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "params.unsubscribedUsers",
                  "lineNumber": 24,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of users removed from the\nsubscription as part of the change."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "TypeApplication",
                      "expression": {
                        "type": "NameExpression",
                        "name": "Array"
                      },
                      "applications": [
                        {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      ]
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "sip",
          "kind": "event",
          "name": "sip:subscriptionChange",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "sip",
              "kind": "namespace"
            },
            {
              "name": "sip:subscriptionChange",
              "kind": "event"
            }
          ],
          "namespace": "sip.event:sip:subscriptionChange"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An error has occurred during a SIP event operation."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 4,
              "name": "sipEvents"
            },
            {
              "title": "memberof",
              "description": "sip",
              "lineNumber": 5
            },
            {
              "title": "event",
              "description": "sip:error",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "api.BasicError"
              },
              "name": "params.error"
            },
            {
              "title": "param",
              "description": "The name of the SIP event.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.eventType"
            },
            {
              "title": "example",
              "description": "// Listen for the event being emitted.\nclient.on('sip:error', (params) => {\n   // Handle the error based on the information.\n   const { code, message } = params.error\n   ...\n})",
              "lineNumber": 10
            }
          ],
          "loc": {
            "start": {
              "line": 30,
              "column": 0
            },
            "end": {
              "line": 47,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 48,
                "column": 0
              },
              "end": {
                "line": 48,
                "column": 38
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/sipEvents/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Listen for the event being emitted.\nclient.on('sip:error', (params) => {\n   // Handle the error based on the information.\n   const { code, message } = params.error\n   ...\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "api.BasicError"
                  }
                },
                {
                  "title": "param",
                  "name": "params.eventType",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The name of the SIP event."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "sip",
          "kind": "event",
          "name": "sip:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "sip",
              "kind": "namespace"
            },
            {
              "name": "sip:error",
              "kind": "event"
            }
          ],
          "namespace": "sip.event:sip:error"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A SIP event notification has been received."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "inlineCode",
                    "value": "event"
                  },
                  {
                    "type": "text",
                    "value": " parameter is the full notification received from the network. The format\nof the notification is dependant on its event type. The SDK does not do any\npre-processing of this data."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 7,
              "name": "sipEvents"
            },
            {
              "title": "memberof",
              "description": "sip",
              "lineNumber": 8
            },
            {
              "title": "event",
              "description": "sip:eventsChange",
              "lineNumber": 9
            },
            {
              "title": "param",
              "description": "Information about the notification.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The name of the SIP event.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.eventType"
            },
            {
              "title": "param",
              "description": "A unique ID for the event notification.",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.eventId"
            },
            {
              "title": "param",
              "description": "The full event object.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.event"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.links"
            },
            {
              "title": "param",
              "description": "The ID of the call this SIP event links to.",
              "lineNumber": 15,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "params.links.callId"
            },
            {
              "title": "example",
              "description": "// Listen for the event being emitted.\nclient.on('sip:eventsChange', (params) => {\n   // Gather the SIP info specific to the event.\n   const sipInfo = params.event.genericNotificationParams\n\n   // Handle the data based on the event type.\n   if (params.eventType === 'event:presence') {\n       const { data, from } = sipInfo\n       ...\n   }\n})",
              "lineNumber": 16
            }
          ],
          "loc": {
            "start": {
              "line": 50,
              "column": 0
            },
            "end": {
              "line": 78,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 79,
                "column": 0
              },
              "end": {
                "line": 79,
                "column": 48
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/sipEvents/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Listen for the event being emitted.\nclient.on('sip:eventsChange', (params) => {\n   // Gather the SIP info specific to the event.\n   const sipInfo = params.event.genericNotificationParams\n\n   // Handle the data based on the event type.\n   if (params.eventType === 'event:presence') {\n       const { data, from } = sipInfo\n       ...\n   }\n})"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Information about the notification."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.eventType",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The name of the SIP event."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.eventId",
                  "lineNumber": 12,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "A unique ID for the event notification."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.event",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The full event object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                },
                {
                  "title": "param",
                  "name": "params.links",
                  "lineNumber": 14,
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "params.links.callId",
                      "lineNumber": 15,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The ID of the call this SIP event links to."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "string"
                        }
                      }
                    }
                  ]
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "sip",
          "kind": "event",
          "name": "sip:eventsChange",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "sip",
              "kind": "namespace"
            },
            {
              "name": "sip:eventsChange",
              "kind": "event"
            }
          ],
          "namespace": "sip.event:sip:eventsChange"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieve information about a SIP event subscription."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will track which users are included as part of the subscription and\nprevious notifications received. Each subscription will include a unique ID."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 6
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 7,
              "name": "getDetails"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 8,
              "name": "sipEvents"
            },
            {
              "title": "memberof",
              "description": "sip",
              "lineNumber": 9
            },
            {
              "title": "param",
              "description": "The name of a SIP event. If not provided, will retrieve\n   information for all SIP subscriptions.",
              "lineNumber": 10,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "eventType"
            },
            {
              "title": "return",
              "description": "SIP subscription information. If `eventType` was not provided, will\n   return an object namespaced by event types.",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "example",
              "description": "// Retrieve information about a single SIP subscription.\nconst { subscribedUsers, notifications } = client.sip.getDetails('event:presence')\n\n// Retrieve information about all current SIP subscriptions.\nconst subscriptions = client.sip.getDetails()\nconst { subscribedUsers, notifications } = subscriptions['event:presence']",
              "lineNumber": 14
            }
          ],
          "loc": {
            "start": {
              "line": 15,
              "column": 4
            },
            "end": {
              "line": 36,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 37,
                "column": 4
              },
              "end": {
                "line": 41,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/sipEvents/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Retrieve information about a single SIP subscription.\nconst { subscribedUsers, notifications } = client.sip.getDetails('event:presence')\n\n// Retrieve information about all current SIP subscriptions.\nconst subscriptions = client.sip.getDetails()\nconst { subscribedUsers, notifications } = subscriptions['event:presence']"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "eventType",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The name of a SIP event. If not provided, will retrieve\ninformation for all SIP subscriptions."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "SIP subscription information. If "
                      },
                      {
                        "type": "inlineCode",
                        "value": "eventType"
                      },
                      {
                        "type": "text",
                        "value": " was not provided, will\nreturn an object namespaced by event types."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "function",
          "name": "getDetails",
          "memberof": "sip",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "sip",
              "kind": "namespace"
            },
            {
              "name": "getDetails",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "sip.getDetails"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Creates a subscription for a SIP event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A subscription is required to receive SIP notifications for solicited events. Before\ncreating a SIP subscription, the service for the event type must have been\nprovisioned as part of the user subscription using the "
                  },
                  {
                    "type": "link",
                    "url": "#servicessubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.subscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nAPI."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Only one SIP subscription per event type can exist at a time. A subscription can\nwatch for events from multiple users at once. Users can be added to or removed\nfrom a subscription using the "
                  },
                  {
                    "type": "link",
                    "url": "#sipupdate",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.update"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API at any time."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#sipeventsipsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip:subscriptionChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent when the operations completes. The "
                  },
                  {
                    "type": "link",
                    "url": "#sipgetdetails",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.getDetails"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used\nto retrieve the current information about a subscription."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#sipeventsipeventschange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip:eventsChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event when\na SIP event is received."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 18,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 19
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 20,
              "name": "subscribe"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 21,
              "name": "sipEvents"
            },
            {
              "title": "memberof",
              "description": "sip",
              "lineNumber": 22
            },
            {
              "title": "param",
              "description": "The name of the SIP event.",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "eventType"
            },
            {
              "title": "param",
              "description": "The list of users to receive events about.",
              "lineNumber": 24,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "subscribeUserList"
            },
            {
              "title": "param",
              "description": "Unique identifier for a client device.",
              "lineNumber": 25,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "clientCorrelator"
            },
            {
              "title": "param",
              "description": "Custom SIP header parameters for the SIP backend.",
              "lineNumber": 26,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.CustomParameter"
                    }
                  ]
                }
              },
              "name": "customParameters"
            },
            {
              "title": "example",
              "description": "// Provision the service for the specific SIP event during user subscription.\n//   This is required before a SIP subscription for the event can be created.\nconst services = ['call', 'event:presence', ...]\nclient.services.subscribe(services)\n\n// Subscribe to receive SIP presence events from two users.\nclient.sip.subscribe('event:presence', ['userOne@example.com', 'userTwo@example.com'], 'clientId123')\n\n// Subscribe for SIP events with a custom parameter.\nconst customParameters = [{\n   name: 'X-nt-GUID',\n   value: 'GUID123abc'\n}]\nclient.sip.subscribe('event:presence', subscribeUserList, 'clientId123', customParameters)",
              "lineNumber": 27
            }
          ],
          "loc": {
            "start": {
              "line": 44,
              "column": 2
            },
            "end": {
              "line": 86,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 87,
                "column": 2
              },
              "end": {
                "line": 100,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/sipEvents/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Provision the service for the specific SIP event during user subscription.\n//   This is required before a SIP subscription for the event can be created.\nconst services = ['call', 'event:presence', ...]\nclient.services.subscribe(services)\n\n// Subscribe to receive SIP presence events from two users.\nclient.sip.subscribe('event:presence', ['userOne@example.com', 'userTwo@example.com'], 'clientId123')\n\n// Subscribe for SIP events with a custom parameter.\nconst customParameters = [{\n   name: 'X-nt-GUID',\n   value: 'GUID123abc'\n}]\nclient.sip.subscribe('event:presence', subscribeUserList, 'clientId123', customParameters)"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "eventType",
              "lineNumber": 23,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The name of the SIP event."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "subscribeUserList",
              "lineNumber": 24,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The list of users to receive events about."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            },
            {
              "title": "param",
              "name": "clientCorrelator",
              "lineNumber": 25,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Unique identifier for a client device."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "customParameters",
              "lineNumber": 26,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Custom SIP header parameters for the SIP backend."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.CustomParameter"
                    }
                  ]
                }
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "function",
          "name": "subscribe",
          "memberof": "sip",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "sip",
              "kind": "namespace"
            },
            {
              "name": "subscribe",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "sip.subscribe"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Creates a subscription for a SIP event."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#sipsubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.subscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise instead\nof an event. This API will not emit events specifically about the operation's completion, but may\nemit an event to reflect SIP subscription changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A subscription is required to receive SIP notifications for solicited events. Before\ncreating a SIP subscription, the service for the event type must have been\nprovisioned as part of the user subscription using the "
                  },
                  {
                    "type": "link",
                    "url": "#servicessubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "services.subscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nAPI."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Only one SIP subscription per event type can exist at a time. A subscription can\nwatch for events from multiple users at once. Users can be added to or removed\nfrom a subscription using the "
                  },
                  {
                    "type": "link",
                    "url": "#sipupdate",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.update"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API at any time."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SIP subscriptions state will be changed on operation success, which will be accompanied by a\n"
                  },
                  {
                    "type": "link",
                    "url": "#sipeventsipsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip:subscriptionChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event. The "
                  },
                  {
                    "type": "link",
                    "url": "#sipgetdetails",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.getDetails"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be\nused to retrieve the state."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#sipeventsipeventschange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip:eventsChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event when a SIP event is received."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 21,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 22
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 23
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 24,
              "name": "subscribeAsync"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 25,
              "name": "sipEvents"
            },
            {
              "title": "memberof",
              "description": "sip",
              "lineNumber": 26
            },
            {
              "title": "param",
              "description": "The name of the SIP event.",
              "lineNumber": 27,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "eventType"
            },
            {
              "title": "param",
              "description": "The list of users to receive events about.",
              "lineNumber": 28,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "subscribeUserList"
            },
            {
              "title": "param",
              "description": "Unique identifier for a client device.",
              "lineNumber": 29,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "clientCorrelator"
            },
            {
              "title": "param",
              "description": "Custom SIP header parameters for the SIP backend.",
              "lineNumber": 30,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.CustomParameter"
                    }
                  ]
                }
              },
              "name": "customParameters"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 31,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 32,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "// Provision the service for the specific SIP event during user subscription.\n//   This is required before a SIP subscription for the event can be created.\nawait client.services.subscribeAsync(['call', 'event:presence', ...])\n\n// Subscribe to receive SIP presence events from two users.\ntry {\n    await client.sip.subscribeAsync('event:presence', ['userOne@example.com', 'userTwo@example.com'], 'clientId123')\n} catch (error) {\n    // Operation failed; handle error.\n    const { code, message } = error\n    ...\n}\n\n// Subscribe for SIP events with a custom parameter.\ntry {\n    const customParameters = [{\n      name: 'X-nt-GUID',\n      value: 'GUID123abc'\n    }]\n    await client.sip.subscribeAsync('event:presence', subscribeUserList, 'clientId123', customParameters)\n} catch (error) {\n    // Operation failed; handle error.\n    const { code, message } = error\n    ...\n}",
              "lineNumber": 33
            }
          ],
          "loc": {
            "start": {
              "line": 102,
              "column": 2
            },
            "end": {
              "line": 161,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 162,
                "column": 2
              },
              "end": {
                "line": 175,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/sipEvents/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Provision the service for the specific SIP event during user subscription.\n//   This is required before a SIP subscription for the event can be created.\nawait client.services.subscribeAsync(['call', 'event:presence', ...])\n\n// Subscribe to receive SIP presence events from two users.\ntry {\n    await client.sip.subscribeAsync('event:presence', ['userOne@example.com', 'userTwo@example.com'], 'clientId123')\n} catch (error) {\n    // Operation failed; handle error.\n    const { code, message } = error\n    ...\n}\n\n// Subscribe for SIP events with a custom parameter.\ntry {\n    const customParameters = [{\n      name: 'X-nt-GUID',\n      value: 'GUID123abc'\n    }]\n    await client.sip.subscribeAsync('event:presence', subscribeUserList, 'clientId123', customParameters)\n} catch (error) {\n    // Operation failed; handle error.\n    const { code, message } = error\n    ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "eventType",
              "lineNumber": 27,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The name of the SIP event."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "subscribeUserList",
              "lineNumber": 28,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The list of users to receive events about."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              }
            },
            {
              "title": "param",
              "name": "clientCorrelator",
              "lineNumber": 29,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Unique identifier for a client device."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "customParameters",
              "lineNumber": 30,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Custom SIP header parameters for the SIP backend."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.CustomParameter"
                    }
                  ]
                }
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "kind": "function",
          "name": "subscribeAsync",
          "memberof": "sip",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "sip",
              "kind": "namespace"
            },
            {
              "name": "subscribeAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "sip.subscribeAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Deletes an existing SIP event subscription."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#sipeventsipsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip:subscriptionChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent when the operations completes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Subscription details will no longer be available using the "
                  },
                  {
                    "type": "link",
                    "url": "#sipgetdetails",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.getDetails"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nAPI after it has been unsubscribed from."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 8,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 9
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 10,
              "name": "unsubscribe"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 11,
              "name": "sipEvents"
            },
            {
              "title": "memberof",
              "description": "sip",
              "lineNumber": 12
            },
            {
              "title": "param",
              "description": "The name of the SIP event.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "eventType"
            },
            {
              "title": "example",
              "description": "// Delete a SIP subscription.\nclient.sip.unsubscribe('event:presence')",
              "lineNumber": 14
            }
          ],
          "loc": {
            "start": {
              "line": 177,
              "column": 2
            },
            "end": {
              "line": 194,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 195,
                "column": 2
              },
              "end": {
                "line": 207,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/sipEvents/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Delete a SIP subscription.\nclient.sip.unsubscribe('event:presence')"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "eventType",
              "lineNumber": 13,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The name of the SIP event."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "function",
          "name": "unsubscribe",
          "memberof": "sip",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "sip",
              "kind": "namespace"
            },
            {
              "name": "unsubscribe",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "sip.unsubscribe"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Deletes an existing SIP event subscription."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#sipunsubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.unsubscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise instead\nof an event. This API will not emit events specifically about the operation's completion, but may\nemit an event to reflect SIP subscription changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SIP subscriptions state will be changed on operation success, which will be accompanied by a\n"
                  },
                  {
                    "type": "link",
                    "url": "#sipeventsipsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip:subscriptionChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event. The subscription details will no longer\nbe available using the "
                  },
                  {
                    "type": "link",
                    "url": "#sipgetdetails",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.getDetails"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API after it has been unsubscribed from."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 12
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 13,
              "name": "unsubscribeAsync"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 14,
              "name": "sipEvents"
            },
            {
              "title": "memberof",
              "description": "sip",
              "lineNumber": 15
            },
            {
              "title": "param",
              "description": "The name of the SIP event.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "eventType"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 17,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "try {\n    await client.sip.unsubscribeAsync('event:presence')\n    // SIP subscription deleted.\n    // client.sip.getDetails('event:presence') === undefined\n} catch (error) {\n    // Operation failed; handle error.\n    const { code, message } = error\n    ...\n}",
              "lineNumber": 19
            }
          ],
          "loc": {
            "start": {
              "line": 209,
              "column": 2
            },
            "end": {
              "line": 238,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 239,
                "column": 2
              },
              "end": {
                "line": 251,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/sipEvents/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "try {\n    await client.sip.unsubscribeAsync('event:presence')\n    // SIP subscription deleted.\n    // client.sip.getDetails('event:presence') === undefined\n} catch (error) {\n    // Operation failed; handle error.\n    const { code, message } = error\n    ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "eventType",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The name of the SIP event."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "kind": "function",
          "name": "unsubscribeAsync",
          "memberof": "sip",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "sip",
              "kind": "namespace"
            },
            {
              "name": "unsubscribeAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "sip.unsubscribeAsync"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Updates an existing SIP event subscription."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Allows for adding or removing users from the subscription, and for changing the\ncustom parameters of the subscription."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#sipeventsipsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip:subscriptionChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent when the operations completes. The "
                  },
                  {
                    "type": "link",
                    "url": "#sipgetdetails",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.getDetails"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used\nto retrieve the current information about a subscription."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 9,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 10
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 11,
              "name": "update"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 12,
              "name": "sipEvents"
            },
            {
              "title": "memberof",
              "description": "sip",
              "lineNumber": 13
            },
            {
              "title": "param",
              "description": "The name of the SIP event.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "eventType"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "userLists"
            },
            {
              "title": "param",
              "description": "List of users to add to the subscription.",
              "lineNumber": 16,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "userLists.subscribeUserList"
            },
            {
              "title": "param",
              "description": "List of users to remove from the subscription. If all users are removed, the event subscription will be deleted.",
              "lineNumber": 17,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "userLists.unsubscribeUserList"
            },
            {
              "title": "param",
              "description": "Custom SIP header parameters for the SIP backend.",
              "lineNumber": 18,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.CustomParameter"
                    }
                  ]
                }
              },
              "name": "customParameters"
            },
            {
              "title": "example",
              "description": "// Add a user to an existing subscription.\nconst userLists = {\n   subscribedUserList: ['userThree@example.com']\n}\nclient.sip.update('event:presence', userLists)\n\n// Simultaneously add and remove users from the subscription.\nconst userLists = {\n   subscribedUserList: ['userThree@example.com'],\n   unsubscribeUserList: ['userOne@example.com']\n}\nclient.sip.update('event:presence', userLists)",
              "lineNumber": 19
            }
          ],
          "loc": {
            "start": {
              "line": 253,
              "column": 2
            },
            "end": {
              "line": 285,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 286,
                "column": 2
              },
              "end": {
                "line": 301,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/sipEvents/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Add a user to an existing subscription.\nconst userLists = {\n   subscribedUserList: ['userThree@example.com']\n}\nclient.sip.update('event:presence', userLists)\n\n// Simultaneously add and remove users from the subscription.\nconst userLists = {\n   subscribedUserList: ['userThree@example.com'],\n   unsubscribeUserList: ['userOne@example.com']\n}\nclient.sip.update('event:presence', userLists)"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "eventType",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The name of the SIP event."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "userLists",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "userLists.subscribeUserList",
                  "lineNumber": 16,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of users to add to the subscription."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                },
                {
                  "title": "param",
                  "name": "userLists.unsubscribeUserList",
                  "lineNumber": 17,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of users to remove from the subscription. If all users are removed, the event subscription will be deleted."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "title": "param",
              "name": "customParameters",
              "lineNumber": 18,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Custom SIP header parameters for the SIP backend."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.CustomParameter"
                    }
                  ]
                }
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "function",
          "name": "update",
          "memberof": "sip",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "sip",
              "kind": "namespace"
            },
            {
              "name": "update",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "sip.update"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Updates an existing SIP event subscription."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API is equivalent to the "
                  },
                  {
                    "type": "link",
                    "url": "#sipupdate",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.update"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, but provides feedback via a returned promise instead\nof emitting events. This API will not emit events specifically about the operation's completion, but may\nemit an event to reflect SIP subscription changes."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "As a prerequisite, a SIP subscription must exist for the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "eventType"
                  },
                  {
                    "type": "text",
                    "value": " service. The "
                  },
                  {
                    "type": "link",
                    "url": "#sipsubscribe",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.subscribe"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API\ncan be used to create a SIP subscription, and the "
                  },
                  {
                    "type": "link",
                    "url": "#sipgetdetails",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.getDetails"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to\nretrieve information about existing subscriptions."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SIP subscriptions state will be changed on operation success, which will be accompanied by a\n"
                  },
                  {
                    "type": "link",
                    "url": "#sipeventsipsubscriptionchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip:subscriptionChange"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event. The "
                  },
                  {
                    "type": "link",
                    "url": "#sipgetdetails",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "sip.getDetails"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be\nused to retrieve the state."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 14,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 15
            },
            {
              "title": "async",
              "description": null,
              "lineNumber": 16
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 17,
              "name": "updateAsync"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 18,
              "name": "sipEvents"
            },
            {
              "title": "memberof",
              "description": "sip",
              "lineNumber": 19
            },
            {
              "title": "param",
              "description": "The name of the SIP event.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "eventType"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "userLists"
            },
            {
              "title": "param",
              "description": "List of users to add to the subscription.",
              "lineNumber": 22,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "userLists.subscribeUserList"
            },
            {
              "title": "param",
              "description": "List of users to remove from the subscription. If all users are removed, the event subscription will be deleted.",
              "lineNumber": 23,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "userLists.unsubscribeUserList"
            },
            {
              "title": "param",
              "description": "Custom SIP header parameters for the SIP backend.",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.CustomParameter"
                    }
                  ]
                }
              },
              "name": "customParameters"
            },
            {
              "title": "return",
              "description": "A promise that resolves when the operation is successful.",
              "lineNumber": 25,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            },
            {
              "title": "throws",
              "description": "Rejects with a BasicError if the operation fails.",
              "lineNumber": 26,
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            },
            {
              "title": "example",
              "description": "// Add a user to an existing subscription.\nconst userLists = {\n   subscribedUserList: ['userThree@example.com']\n}\ntry {\n    await client.sip.updateAsync('event:presence', userLists)\n} catch (error) {\n    // Operation failed; handle error.\n    const { code, message } = error\n    ...\n}\n\n// Simultaneously add and remove users from the subscription.\nconst userLists = {\n   subscribedUserList: ['userThree@example.com'],\n   unsubscribeUserList: ['userOne@example.com']\n}\n\ntry {\n    await client.sip.updateAsync('event:presence', userLists)\n} catch (error) {\n    // Operation failed; handle error.\n    const { code, message } = error\n    ...\n}",
              "lineNumber": 27
            }
          ],
          "loc": {
            "start": {
              "line": 303,
              "column": 2
            },
            "end": {
              "line": 356,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 357,
                "column": 2
              },
              "end": {
                "line": 371,
                "column": 3
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/sipEvents/interface/api.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Add a user to an existing subscription.\nconst userLists = {\n   subscribedUserList: ['userThree@example.com']\n}\ntry {\n    await client.sip.updateAsync('event:presence', userLists)\n} catch (error) {\n    // Operation failed; handle error.\n    const { code, message } = error\n    ...\n}\n\n// Simultaneously add and remove users from the subscription.\nconst userLists = {\n   subscribedUserList: ['userThree@example.com'],\n   unsubscribeUserList: ['userOne@example.com']\n}\n\ntry {\n    await client.sip.updateAsync('event:presence', userLists)\n} catch (error) {\n    // Operation failed; handle error.\n    const { code, message } = error\n    ...\n}"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "eventType",
              "lineNumber": 20,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The name of the SIP event."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "userLists",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "userLists.subscribeUserList",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of users to add to the subscription."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                },
                {
                  "title": "param",
                  "name": "userLists.unsubscribeUserList",
                  "lineNumber": 23,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "List of users to remove from the subscription. If all users are removed, the event subscription will be deleted."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "title": "param",
              "name": "customParameters",
              "lineNumber": 24,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Custom SIP header parameters for the SIP backend."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "TypeApplication",
                  "expression": {
                    "type": "NameExpression",
                    "name": "Array"
                  },
                  "applications": [
                    {
                      "type": "NameExpression",
                      "name": "call.CustomParameter"
                    }
                  ]
                }
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A promise that resolves when the operation is successful."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Promise"
                },
                "applications": [
                  {
                    "type": "UndefinedLiteral"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Rejects with a BasicError if the operation fails."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "BasicError"
              }
            }
          ],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "async": true,
          "kind": "function",
          "name": "updateAsync",
          "memberof": "sip",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "sip",
              "kind": "namespace"
            },
            {
              "name": "updateAsync",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "sip.updateAsync"
        }
      ]
    },
    "path": [
      {
        "name": "sip",
        "kind": "namespace"
      }
    ],
    "namespace": "sip"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'user' namespace allows access to user information for users within the same domain."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 3,
        "type": null
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 4,
        "type": null,
        "name": "user"
      }
    ],
    "loc": {
      "start": {
        "line": 8,
        "column": 0
      },
      "end": {
        "line": 13,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 38,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "user",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The directory has changed."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "user",
              "lineNumber": 4
            },
            {
              "title": "event",
              "description": "directory:change",
              "lineNumber": 5
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Users' information returned by the\n   operation.",
              "lineNumber": 7,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "user.User"
                  }
                ]
              },
              "name": "params.results"
            }
          ],
          "loc": {
            "start": {
              "line": 36,
              "column": 0
            },
            "end": {
              "line": 45,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 46,
                "column": 0
              },
              "end": {
                "line": 46,
                "column": 50
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/events/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.results",
                  "lineNumber": 7,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Users' information returned by the\noperation."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "user.User"
                      }
                    ]
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "user",
          "kind": "event",
          "name": "directory:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "user",
              "kind": "namespace"
            },
            {
              "name": "directory:change",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "user.event:directory:change"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An error occurred while performing a directory operation."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "memberof",
              "description": "user",
              "lineNumber": 3
            },
            {
              "title": "event",
              "description": "directory:error",
              "lineNumber": 4
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 48,
              "column": 0
            },
            "end": {
              "line": 55,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 56,
                "column": 0
              },
              "end": {
                "line": 56,
                "column": 48
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/events/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 6,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "user",
          "kind": "event",
          "name": "directory:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "user",
              "kind": "namespace"
            },
            {
              "name": "directory:error",
              "kind": "event"
            }
          ],
          "namespace": "user.event:directory:error"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A change has occurred in the users list"
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "user",
              "lineNumber": 4
            },
            {
              "title": "event",
              "description": "users:change",
              "lineNumber": 5
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Users' information returned by the\n   operation.",
              "lineNumber": 7,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "user.User"
                  }
                ]
              },
              "name": "params.results"
            }
          ],
          "loc": {
            "start": {
              "line": 58,
              "column": 0
            },
            "end": {
              "line": 67,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 68,
                "column": 0
              },
              "end": {
                "line": 68,
                "column": 42
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/events/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.results",
                  "lineNumber": 7,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Users' information returned by the\noperation."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "user.User"
                      }
                    ]
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "user",
          "kind": "event",
          "name": "users:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "user",
              "kind": "namespace"
            },
            {
              "name": "users:change",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "user.event:users:change"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An error occurred while retrieving the user information"
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "memberof",
              "description": "user",
              "lineNumber": 4
            },
            {
              "title": "event",
              "description": "users:error",
              "lineNumber": 5
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "params.error The Basic error object.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 70,
              "column": 0
            },
            "end": {
              "line": 78,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 79,
                "column": 0
              },
              "end": {
                "line": 79,
                "column": 40
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/events/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 7,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "params.error The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "user",
          "kind": "event",
          "name": "users:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "user",
              "kind": "namespace"
            },
            {
              "name": "users:error",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "user.event:users:error"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Fetches information about a User."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#usereventuserschange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "users:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent after the operation completes. The User's information will then\nbe available."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Information about an available User can be retrieved using the\n"
                  },
                  {
                    "type": "link",
                    "url": "#userget",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "user.get"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "memberof",
              "description": "user",
              "lineNumber": 12
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 13,
              "name": "fetch"
            },
            {
              "title": "param",
              "description": "The User ID of the user.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "userId"
            }
          ],
          "loc": {
            "start": {
              "line": 10,
              "column": 4
            },
            "end": {
              "line": 25,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 26,
                "column": 4
              },
              "end": {
                "line": 38,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/api/users.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "userId",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The User ID of the user."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "user",
          "kind": "function",
          "name": "fetch",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "user",
              "kind": "namespace"
            },
            {
              "name": "fetch",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "user.fetch"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves information about a User, if available."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "See the "
                  },
                  {
                    "type": "link",
                    "url": "#userfetch",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "user.fetch"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " and "
                  },
                  {
                    "type": "link",
                    "url": "#usersearch",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "user.search"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs for details about\nmaking Users' information available."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 7
            },
            {
              "title": "memberof",
              "description": "user",
              "lineNumber": 8
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 9,
              "name": "get"
            },
            {
              "title": "param",
              "description": "The User ID of the user.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "user.UserID"
              },
              "name": "userId"
            },
            {
              "title": "returns",
              "description": "The User object for the specified user.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "user.User"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 40,
              "column": 4
            },
            "end": {
              "line": 52,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 53,
                "column": 4
              },
              "end": {
                "line": 56,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/api/users.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "userId",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The User ID of the user."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "user.UserID"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The User object for the specified user."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "user.User"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "user",
          "kind": "function",
          "name": "get",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "user",
              "kind": "namespace"
            },
            {
              "name": "get",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "user.get"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Retrieves information about all available Users."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "See the "
                  },
                  {
                    "type": "link",
                    "url": "#userfetch",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "user.fetch"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " and "
                  },
                  {
                    "type": "link",
                    "url": "#usersearch",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "user.search"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs for details about\nmaking Users' information available."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 7
            },
            {
              "title": "memberof",
              "description": "user",
              "lineNumber": 8
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 9,
              "name": "getAll"
            },
            {
              "title": "returns",
              "description": "An array of all the User objects.",
              "lineNumber": 10,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "user.User"
                  }
                ]
              }
            }
          ],
          "loc": {
            "start": {
              "line": 58,
              "column": 4
            },
            "end": {
              "line": 69,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 70,
                "column": 4
              },
              "end": {
                "line": 73,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/api/users.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An array of all the User objects."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "user.User"
                  }
                ]
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "user",
          "kind": "function",
          "name": "getAll",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "user",
              "kind": "namespace"
            },
            {
              "name": "getAll",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "user.getAll"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Searches the domain's directory for Users."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Directory searching only supports one filter. If multiple filters are provided, only one of the filters will be used for the search.\nA search with no filters provided will return all users."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "#usereventdirectorychange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "directory:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nevent after the operation completes. The search results will be\nprovided as part of the event, and will also be available using the\n"
                  },
                  {
                    "type": "link",
                    "url": "#userget",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "user.get"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " and "
                  },
                  {
                    "type": "link",
                    "url": "#usergetall",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "user.getAll"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 11,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 12
            },
            {
              "title": "memberof",
              "description": "user",
              "lineNumber": 13
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 14,
              "name": "search"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 15,
              "name": "limitedSearch"
            },
            {
              "title": "param",
              "description": "The filter options for the search.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "filters"
            },
            {
              "title": "param",
              "description": "Matches the User ID of the user.",
              "lineNumber": 17,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "user.UserID"
                }
              },
              "name": "filters.userId"
            },
            {
              "title": "param",
              "description": "Matches the firstName or lastName.",
              "lineNumber": 18,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "filters.name"
            },
            {
              "title": "param",
              "description": "Matches the firstName.",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "filters.firstName"
            },
            {
              "title": "param",
              "description": "Matches the lastName.",
              "lineNumber": 20,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "filters.lastName"
            },
            {
              "title": "param",
              "description": "Matches the userName.",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "filters.userName"
            },
            {
              "title": "param",
              "description": "Matches the phoneNumber.",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "filters.phoneNumber"
            }
          ],
          "loc": {
            "start": {
              "line": 75,
              "column": 4
            },
            "end": {
              "line": 98,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 126,
                "column": 4
              },
              "end": {
                "line": 137,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/interface/api/users.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "filters",
              "lineNumber": 16,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The filter options for the search."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "filters.userId",
                  "lineNumber": 17,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Matches the User ID of the user."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "user.UserID"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "filters.name",
                  "lineNumber": 18,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Matches the firstName or lastName."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "filters.firstName",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Matches the firstName."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "filters.lastName",
                  "lineNumber": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Matches the lastName."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "filters.userName",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Matches the userName."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "filters.phoneNumber",
                  "lineNumber": 22,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Matches the phoneNumber."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "user",
          "kind": "function",
          "name": "search",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "user",
              "kind": "namespace"
            },
            {
              "name": "search",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "user.search"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The User data object."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 4
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "User"
            },
            {
              "title": "memberof",
              "description": "user",
              "lineNumber": 6
            },
            {
              "title": "property",
              "description": "The User ID of the user.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "user.UserID"
              },
              "name": "userId"
            },
            {
              "title": "property",
              "description": "The email address of the user.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "emailAddress"
            },
            {
              "title": "property",
              "description": "The first name of the user.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "firstName"
            },
            {
              "title": "property",
              "description": "The last name of the user.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "lastName"
            },
            {
              "title": "property",
              "description": "The URL to get the photo of the user.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "photoURL"
            },
            {
              "title": "property",
              "description": "Whether the user is a \"buddy\". Values can be \"true\" or \"false\".",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "buddy"
            }
          ],
          "loc": {
            "start": {
              "line": 15,
              "column": 0
            },
            "end": {
              "line": 28,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 38,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "userId",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The User ID of the user."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "user.UserID"
              }
            },
            {
              "title": "property",
              "name": "emailAddress",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The email address of the user."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "firstName",
              "lineNumber": 9,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The first name of the user."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "lastName",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The last name of the user."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "photoURL",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The URL to get the photo of the user."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "buddy",
              "lineNumber": 12,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Whether the user is a \"buddy\". Values can be \"true\" or \"false\"."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "User",
          "type": {
            "type": "NameExpression",
            "name": "Object"
          },
          "memberof": "user",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "user",
              "kind": "namespace"
            },
            {
              "name": "User",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "user.User"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The ID of a User (e.g. "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "mailto:joe@domain.com",
                    "children": [
                      {
                        "type": "text",
                        "value": "joe@domain.com"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ")"
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 3
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 4,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "UserID"
            },
            {
              "title": "memberof",
              "description": "user",
              "lineNumber": 5
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 6,
              "name": "link_user_id"
            }
          ],
          "loc": {
            "start": {
              "line": 30,
              "column": 0
            },
            "end": {
              "line": 37,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 38,
                "column": 0
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/users/docs.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "typedef",
          "name": "UserID",
          "type": {
            "type": "NameExpression",
            "name": "string"
          },
          "memberof": "user",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "user",
              "kind": "namespace"
            },
            {
              "name": "UserID",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "user.UserID"
        }
      ]
    },
    "path": [
      {
        "name": "user",
        "kind": "namespace"
      }
    ],
    "namespace": "user"
  },
  {
    "description": {
      "type": "root",
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "The 'voicemail' namespace is used to retrieve and view\nvoicemail indicators."
            }
          ]
        },
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "Voicemail functions are all part of this namespace."
            }
          ]
        }
      ]
    },
    "tags": [
      {
        "title": "public",
        "description": null,
        "lineNumber": 6,
        "type": null
      },
      {
        "title": "requires",
        "description": null,
        "lineNumber": 7,
        "name": "voicemail"
      },
      {
        "title": "namespace",
        "description": null,
        "lineNumber": 8,
        "type": null,
        "name": "voicemail"
      }
    ],
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 10,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 11,
          "column": 0
        }
      },
      "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/mwi/docs.js"
    },
    "augments": [],
    "examples": [],
    "implements": [],
    "params": [],
    "properties": [],
    "returns": [],
    "sees": [],
    "throws": [],
    "todos": [],
    "yields": [],
    "access": "public",
    "kind": "namespace",
    "name": "voicemail",
    "members": {
      "global": [],
      "inner": [],
      "instance": [],
      "events": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A voicemail event has been received."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "requires",
              "description": null,
              "lineNumber": 3,
              "name": "voicemail"
            },
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 5
            },
            {
              "title": "memberof",
              "description": "voicemail",
              "lineNumber": 6
            },
            {
              "title": "event",
              "description": "voicemail:change",
              "lineNumber": 7
            },
            {
              "title": "param",
              "description": "An object containing voicemail info.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "Timestamp of the last time voicemail data was checked.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "params.lastUpdated"
            },
            {
              "title": "param",
              "description": "Whether there are new messages.",
              "lineNumber": 10,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "params.newMessagesWaiting"
            },
            {
              "title": "param",
              "description": "The total number of voicemail messages.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "params.totalVoice"
            },
            {
              "title": "param",
              "description": "Number of unheard voicemail messages.",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "params.unheardVoice"
            },
            {
              "title": "param",
              "description": "Object containing individual counts of new, old, urgent voicemails.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.voice"
            },
            {
              "title": "param",
              "description": "Object containing individual counts of new, old, urgent faxes.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.fax"
            },
            {
              "title": "param",
              "description": "Object containing individual counts of new, old, urgent multimedia messages.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params.multimedia"
            }
          ],
          "loc": {
            "start": {
              "line": 2,
              "column": 0
            },
            "end": {
              "line": 18,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 19,
                "column": 0
              },
              "end": {
                "line": 19,
                "column": 44
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/mwi/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "An object containing voicemail info."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.lastUpdated",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Timestamp of the last time voicemail data was checked."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  }
                },
                {
                  "title": "param",
                  "name": "params.newMessagesWaiting",
                  "lineNumber": 10,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether there are new messages."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  }
                },
                {
                  "title": "param",
                  "name": "params.totalVoice",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The total number of voicemail messages."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  }
                },
                {
                  "title": "param",
                  "name": "params.unheardVoice",
                  "lineNumber": 12,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Number of unheard voicemail messages."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "number"
                  }
                },
                {
                  "title": "param",
                  "name": "params.voice",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Object containing individual counts of new, old, urgent voicemails."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                },
                {
                  "title": "param",
                  "name": "params.fax",
                  "lineNumber": 14,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Object containing individual counts of new, old, urgent faxes."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                },
                {
                  "title": "param",
                  "name": "params.multimedia",
                  "lineNumber": 15,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Object containing individual counts of new, old, urgent multimedia messages."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "voicemail",
          "kind": "event",
          "name": "voicemail:change",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "voicemail",
              "kind": "namespace"
            },
            {
              "name": "voicemail:change",
              "kind": "event",
              "scope": "static"
            }
          ],
          "namespace": "voicemail.event:voicemail:change"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "An error has occurred while attempting to retrieve voicemail data."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "requires",
              "description": null,
              "lineNumber": 3,
              "name": "voicemail"
            },
            {
              "title": "public",
              "description": null,
              "lineNumber": 4,
              "type": null
            },
            {
              "title": "memberof",
              "description": "voicemail",
              "lineNumber": 5
            },
            {
              "title": "event",
              "description": "voicemail:error",
              "lineNumber": 6
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The Basic error object.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "api.BasicError"
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 21,
              "column": 0
            },
            "end": {
              "line": 30,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 31,
                "column": 0
              },
              "end": {
                "line": 31,
                "column": 42
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/mwi/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The Basic error object."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "api.BasicError"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "voicemail",
          "kind": "event",
          "name": "voicemail:error",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "voicemail",
              "kind": "namespace"
            },
            {
              "name": "voicemail:error",
              "kind": "event"
            }
          ],
          "namespace": "voicemail.event:voicemail:error"
        }
      ],
      "static": [
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Attempts to retrieve voicemail information from the server."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A "
                  },
                  {
                    "type": "link",
                    "url": "#voicemaileventvoicemailchange",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "voicemail:change"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event is\nemitted upon completion."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 7,
              "name": "voicemail"
            },
            {
              "title": "memberof",
              "description": "voicemail",
              "lineNumber": 8
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 9,
              "name": "fetch"
            }
          ],
          "loc": {
            "start": {
              "line": 16,
              "column": 4
            },
            "end": {
              "line": 26,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 27,
                "column": 4
              },
              "end": {
                "line": 39,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/mwi/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "voicemail",
          "kind": "function",
          "name": "fetch",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "voicemail",
              "kind": "namespace"
            },
            {
              "name": "fetch",
              "kind": "function"
            }
          ],
          "namespace": "voicemailfetch"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Returns voicemail data from the store."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 4,
              "name": "voicemail"
            },
            {
              "title": "memberof",
              "description": "voicemail",
              "lineNumber": 5
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 6,
              "name": "get"
            }
          ],
          "loc": {
            "start": {
              "line": 41,
              "column": 4
            },
            "end": {
              "line": 48,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 49,
                "column": 4
              },
              "end": {
                "line": 52,
                "column": 5
              }
            },
            "file": "/home/jenkins/workspace/jobs_webrtcjs_master/packages/kandy/src/mwi/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "voicemail",
          "kind": "function",
          "name": "get",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "voicemail",
              "kind": "namespace"
            },
            {
              "name": "get",
              "kind": "function"
            }
          ],
          "namespace": "voicemailget"
        }
      ]
    },
    "path": [
      {
        "name": "voicemail",
        "kind": "namespace"
      }
    ],
    "namespace": "voicemail"
  }
]