[
  {
    "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 'kandy'\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": "/var/jenkins_home/workspace/Kandy.js_master/builds/core/index.js"
    },
    "augments": [],
    "examples": [
      {
        "description": "// Instantiate the SDK.\nimport { create } from 'kandy'\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": "/var/jenkins_home/workspace/Kandy.js_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": 3,
              "column": 0
            },
            "end": {
              "line": 42,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 43,
                "column": 0
              },
              "end": {
                "line": 47,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/logs/config.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 CallMe 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.subscription"
            },
            {
              "title": "param",
              "description": "Protocol to be used for subscription requests.",
              "lineNumber": 8,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "authentication.subscription.protocol",
              "default": "'https'"
            },
            {
              "title": "param",
              "description": "Server to be used for subscription requests.",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "authentication.subscription.server"
            },
            {
              "title": "param",
              "description": "Port to be used for subscription requests.",
              "lineNumber": 10,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Number"
                }
              },
              "name": "authentication.subscription.port",
              "default": "443"
            },
            {
              "title": "param",
              "description": "Services to subscribe to for notifications.",
              "lineNumber": 11,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                }
              },
              "name": "authentication.subscription.service"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "authentication.websocket"
            },
            {
              "title": "param",
              "description": "Protocol to be used for websocket notifications.",
              "lineNumber": 13,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "authentication.websocket.protocol",
              "default": "'wss'"
            },
            {
              "title": "param",
              "description": "Server to be used for websocket notifications.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "authentication.websocket.server"
            },
            {
              "title": "param",
              "description": "Port to be used for websocket notifications.",
              "lineNumber": 15,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Number"
                }
              },
              "name": "authentication.websocket.port",
              "default": "443"
            }
          ],
          "loc": {
            "start": {
              "line": 11,
              "column": 0
            },
            "end": {
              "line": 27,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 29,
                "column": 0
              },
              "end": {
                "line": 42,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/auth/callMe/index.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.subscription",
                  "lineNumber": 7,
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "authentication.subscription.protocol",
                      "lineNumber": 8,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Protocol to be used for subscription requests."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "string"
                      },
                      "default": "'https'"
                    },
                    {
                      "title": "param",
                      "name": "authentication.subscription.server",
                      "lineNumber": 9,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Server to be used for subscription requests."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    },
                    {
                      "title": "param",
                      "name": "authentication.subscription.port",
                      "lineNumber": 10,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Port to be used for subscription requests."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "Number"
                      },
                      "default": "443"
                    },
                    {
                      "title": "param",
                      "name": "authentication.subscription.service",
                      "lineNumber": 11,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Services to subscribe to for notifications."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "Array"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "param",
                  "name": "authentication.websocket",
                  "lineNumber": 12,
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "authentication.websocket.protocol",
                      "lineNumber": 13,
                      "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": "authentication.websocket.server",
                      "lineNumber": 14,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "Server to be used for websocket notifications."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    },
                    {
                      "title": "param",
                      "name": "authentication.websocket.port",
                      "lineNumber": 15,
                      "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.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 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 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 to remove \"H264\" codec lines from incoming and outgoing SDP messages.",
              "lineNumber": 27,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "call.removeH264Codecs",
              "default": "true"
            },
            {
              "title": "param",
              "description": "Whether early media should be supported for calls. Not supported on Firefox.",
              "lineNumber": 28,
              "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": 29,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "call.resyncOnConnect",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Whether all Calls will be anchored on the MediaBroker instead of being peer-to-peer. Set to true if the backend is configured for broker only mode.",
              "lineNumber": 30,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "call.mediaBrokerOnly",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Whether to remove a=group attributes to stop media bundling from incoming and outgoing SDP messages.",
              "lineNumber": 31,
              "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": 32,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "call.ringingFeedbackMode",
              "default": "'auto'"
            },
            {
              "title": "param",
              "description": "Time interval, in milliseconds between call audits.",
              "lineNumber": 35,
              "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": 36,
              "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": 37,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "call.normalizeDestination",
              "default": "true"
            }
          ],
          "loc": {
            "start": {
              "line": 23,
              "column": 0
            },
            "end": {
              "line": 61,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 71,
                "column": 0
              },
              "end": {
                "line": 156,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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 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.removeH264Codecs",
                  "lineNumber": 27,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether to remove \"H264\" codec lines from incoming and outgoing SDP messages."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "true"
                },
                {
                  "title": "param",
                  "name": "call.earlyMedia",
                  "lineNumber": 28,
                  "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": 29,
                  "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.mediaBrokerOnly",
                  "lineNumber": 30,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether all Calls will be anchored on the MediaBroker instead of being peer-to-peer. Set to true if the backend is configured for broker only mode."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "call.removeBundling",
                  "lineNumber": 31,
                  "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": 32,
                  "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": 35,
                  "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": 36,
                  "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": 37,
                  "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"
        },
        {
          "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: 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": "Maximum pings sent (without receiving a response) before reporting an error.",
              "lineNumber": 18,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Number"
                }
              },
              "name": "connectivity.maxMissedPings",
              "default": "3"
            },
            {
              "title": "param",
              "description": "Flag to determine whether the SDK should check connectivity.",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Boolean"
                }
              },
              "name": "connectivity.checkConnectivity",
              "default": "true"
            },
            {
              "title": "param",
              "description": "query will send the bearer access token to authenticate the websocket and none will not send it.",
              "lineNumber": 20,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "connectivity.webSocketOAuthMode",
              "default": "query"
            }
          ],
          "loc": {
            "start": {
              "line": 36,
              "column": 0
            },
            "end": {
              "line": 57,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 58,
                "column": 0
              },
              "end": {
                "line": 62,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/connectivity/link/index.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.maxMissedPings",
                  "lineNumber": 18,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Maximum pings sent (without receiving a response) before reporting an error."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Number"
                  },
                  "default": "3"
                },
                {
                  "title": "param",
                  "name": "connectivity.checkConnectivity",
                  "lineNumber": 19,
                  "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": 20,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "query will send the bearer access token to authenticate the websocket and none will not send it."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  },
                  "default": "query"
                }
              ]
            }
          ],
          "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": 19,
              "column": 0
            },
            "end": {
              "line": 33,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 35,
                "column": 0
              },
              "end": {
                "line": 38,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/notifications/link/index.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"
        }
      ],
      "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": "/var/jenkins_home/workspace/Kandy.js_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": "/var/jenkins_home/workspace/Kandy.js_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"
        }
      ],
      "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": 290,
              "column": 4
            },
            "end": {
              "line": 296,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 297,
                "column": 4
              },
              "end": {
                "line": 299,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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 'kandy'\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": 302,
              "column": 4
            },
            "end": {
              "line": 328,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 329,
                "column": 4
              },
              "end": {
                "line": 355,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/factory.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Instantiate the SDK.\nimport { create } from 'kandy'\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": 15,
              "column": 4
            },
            "end": {
              "line": 24,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 25,
                "column": 4
              },
              "end": {
                "line": 28,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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 updating the "
                  },
                  {
                    "type": "link",
                    "url": "#configconfigcall",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.removeH264Codecs"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " configuration will not immediately change the SDP handlers used for a call. If you want to add or remove the\nh264 codec remover sdp handler you should follow this procedure:"
                  }
                ]
              },
              {
                "type": "list",
                "ordered": true,
                "start": 1,
                "spread": false,
                "children": [
                  {
                    "type": "listItem",
                    "spread": false,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Update the config for removeH264Codecs using the "
                          },
                          {
                            "type": "link",
                            "url": "#apiupdateconfig",
                            "title": null,
                            "jsdoc": true,
                            "children": [
                              {
                                "type": "text",
                                "value": "updateConfig"
                              }
                            ]
                          },
                          {
                            "type": "text",
                            "value": " API."
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "listItem",
                    "spread": true,
                    "checked": null,
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Update the sdp handler list using the "
                          },
                          {
                            "type": "link",
                            "url": "#callsetsdphandlers",
                            "title": null,
                            "jsdoc": true,
                            "children": [
                              {
                                "type": "text",
                                "value": "setSdpHandlers"
                              }
                            ]
                          },
                          {
                            "type": "text",
                            "value": " API and provide any client defined SDP handler functions."
                          }
                        ]
                      },
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "NOTE: You can get the currently defined SDP handler functions with the "
                          },
                          {
                            "type": "link",
                            "url": "#apigetconfig",
                            "title": null,
                            "jsdoc": true,
                            "children": [
                              {
                                "type": "text",
                                "value": "getConfig"
                              }
                            ]
                          },
                          {
                            "type": "text",
                            "value": " API."
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "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": 20,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 21
            },
            {
              "title": "memberof",
              "description": "api",
              "lineNumber": 22
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 23,
              "name": "config"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 24,
              "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": 25,
              "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": 26
            }
          ],
          "loc": {
            "start": {
              "line": 30,
              "column": 4
            },
            "end": {
              "line": 71,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 72,
                "column": 4
              },
              "end": {
                "line": 87,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": 25,
              "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": "throws",
              "description": "Invalid event type",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Error"
              }
            },
            {
              "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": 9
            }
          ],
          "loc": {
            "start": {
              "line": 17,
              "column": 2
            },
            "end": {
              "line": 31,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 32,
                "column": 2
              },
              "end": {
                "line": 35,
                "column": 3
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Invalid event type"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Error"
              }
            }
          ],
          "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"
            },
            {
              "title": "throws",
              "description": "Invalid event type",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Error"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 37,
              "column": 2
            },
            "end": {
              "line": 46,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 47,
                "column": 2
              },
              "end": {
                "line": 50,
                "column": 3
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Invalid event type"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Error"
              }
            }
          ],
          "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"
            },
            {
              "title": "throws",
              "description": "Listener not a function",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Error"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 52,
              "column": 2
            },
            "end": {
              "line": 60,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 61,
                "column": 2
              },
              "end": {
                "line": 64,
                "column": 3
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Listener not a function"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Error"
              }
            }
          ],
          "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"
            },
            {
              "title": "throws",
              "description": "Listener not a function",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Error"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 66,
              "column": 2
            },
            "end": {
              "line": 74,
              "column": 5
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 75,
                "column": 2
              },
              "end": {
                "line": 78,
                "column": 3
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Listener not a function"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Error"
              }
            }
          ],
          "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": 20,
              "column": 4
            },
            "end": {
              "line": 33,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 34,
                "column": 4
              },
              "end": {
                "line": 37,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": 296,
              "column": 4
            },
            "end": {
              "line": 306,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 307,
                "column": 4
              },
              "end": {
                "line": 310,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": "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": 27,
                "column": 16
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": 3,
        "column": 0
      },
      "end": {
        "line": 11,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 487,
          "column": 0
        },
        "end": {
          "line": 491,
          "column": 1
        }
      },
      "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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 with the call\ninformation (see the "
                  },
                  {
                    "type": "link",
                    "url": "#callgetbyid",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.getById"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API). This event indicates that\nan operation's information has been changed."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Local call operations will be tracked from start to finish. An operation may\nbe updated as it progresses, based on the status of the operation. The\noperation status may be ongoing or pending, depending if the operation is\nwaiting on activity on the local or remote end of the call, respectively."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Except in the case of slow-start operations, remote operations will only be\ntracked as a \"finish\", to indicate that it occurred."
                  }
                ]
              }
            ]
          },
          "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 call operation causing this event.",
              "lineNumber": 18,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.operation"
            },
            {
              "title": "param",
              "description": "The transition reason for the operation change.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.transition"
            },
            {
              "title": "param",
              "description": "Flag indicating whether the operation was local or not.",
              "lineNumber": 20,
              "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": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "params.previous"
            },
            {
              "title": "param",
              "description": "The operation that was ongoing.",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "params.previous.operation"
            },
            {
              "title": "param",
              "description": "The operation status before this change.",
              "lineNumber": 24,
              "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": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "api.BasicError"
                }
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 27,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 28,
                "column": 0
              },
              "end": {
                "line": 28,
                "column": 46
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.operation",
                  "lineNumber": 18,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The call operation causing this event."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.transition",
                  "lineNumber": 19,
                  "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": 20,
                  "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": 21,
                  "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": 23,
                      "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": 24,
                      "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": 25,
                  "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"
            },
            {
              "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"
            },
            {
              "title": "param",
              "description": "An error object, if the operation was not successful.",
              "lineNumber": 11,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "api.BasicError"
                }
              },
              "name": "params.error"
            }
          ],
          "loc": {
            "start": {
              "line": 30,
              "column": 0
            },
            "end": {
              "line": 42,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 43,
                "column": 0
              },
              "end": {
                "line": 43,
                "column": 40
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/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"
                  }
                },
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 11,
                  "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:start",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "call:start",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:start"
        },
        {
          "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."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 6,
              "type": null
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 7
            },
            {
              "title": "event",
              "description": "call:receive",
              "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"
            },
            {
              "title": "param",
              "description": "An error object, if the operation was not successful.",
              "lineNumber": 11,
              "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, prompt the user to respond.\n    promptUser(client.call.getById(params.callId));\n});",
              "lineNumber": 12
            }
          ],
          "loc": {
            "start": {
              "line": 61,
              "column": 0
            },
            "end": {
              "line": 78,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 79,
                "column": 0
              },
              "end": {
                "line": 79,
                "column": 43
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('call:receive', function(params) {\n    // We have received a call, prompt the user to respond.\n    promptUser(client.call.getById(params.callId));\n});"
            }
          ],
          "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"
                  }
                },
                {
                  "title": "param",
                  "name": "params.error",
                  "lineNumber": 11,
                  "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"
            },
            {
              "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": null,
              "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": 81,
              "column": 0
            },
            "end": {
              "line": 115,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 116,
                "column": 0
              },
              "end": {
                "line": 116,
                "column": 51
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/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,
                  "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"
            },
            {
              "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": 118,
              "column": 0
            },
            "end": {
              "line": 128,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 129,
                "column": 0
              },
              "end": {
                "line": 129,
                "column": 47
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/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"
            },
            {
              "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": 131,
              "column": 0
            },
            "end": {
              "line": 140,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 141,
                "column": 0
              },
              "end": {
                "line": 141,
                "column": 53
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/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"
            },
            {
              "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": 143,
              "column": 0
            },
            "end": {
              "line": 177,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 178,
                "column": 0
              },
              "end": {
                "line": 178,
                "column": 51
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/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"
            },
            {
              "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": 180,
              "column": 0
            },
            "end": {
              "line": 211,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 212,
                "column": 0
              },
              "end": {
                "line": 212,
                "column": 55
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/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"
            },
            {
              "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": "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   // Iterate over each individual statistic inside the RTCPStatsReport Map.\n   params.result.forEach(stat => {\n     ...\n   })\n})",
              "lineNumber": 13
            }
          ],
          "loc": {
            "start": {
              "line": 214,
              "column": 0
            },
            "end": {
              "line": 234,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 235,
                "column": 0
              },
              "end": {
                "line": 235,
                "column": 50
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/eventTypes.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('call:statsReceived', function (params) {\n   // Iterate over each individual statistic inside the RTCPStatsReport Map.\n   params.result.forEach(stat => {\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": "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"
            },
            {
              "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": 237,
              "column": 0
            },
            "end": {
              "line": 266,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 267,
                "column": 0
              },
              "end": {
                "line": 267,
                "column": 55
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/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"
            },
            {
              "name": "call:trackReplaced",
              "kind": "event"
            }
          ],
          "namespace": "call.event:call:trackReplaced"
        },
        {
          "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"
            }
          ],
          "loc": {
            "start": {
              "line": 284,
              "column": 0
            },
            "end": {
              "line": 295,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 296,
                "column": 0
              },
              "end": {
                "line": 296,
                "column": 54
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "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"
            },
            {
              "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 {@link call.mediaConnectionStates} 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": 298,
              "column": 0
            },
            "end": {
              "line": 314,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 315,
                "column": 0
              },
              "end": {
                "line": 315,
                "column": 67
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/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"
            },
            {
              "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": 317,
              "column": 0
            },
            "end": {
              "line": 348,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 349,
                "column": 0
              },
              "end": {
                "line": 349,
                "column": 48
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/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"
            },
            {
              "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 as an anonymous user."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 3,
              "name": "callMe"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 4
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 5,
              "name": "makeAnonymous"
            },
            {
              "title": "param",
              "description": "Full user ID of the call recipient.",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callee"
            },
            {
              "title": "param",
              "description": "Information needed to validate a token anonymous call.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "credentials"
            },
            {
              "title": "param",
              "description": "The realm used to encrypt the tokens.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "credentials.realm"
            },
            {
              "title": "param",
              "description": "The encrypted account token of the account making the call.",
              "lineNumber": 9,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "credentials.accountToken"
            },
            {
              "title": "param",
              "description": "The encrypted SIP address of the account/caller.",
              "lineNumber": 10,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "credentials.fromToken"
            },
            {
              "title": "param",
              "description": "The encrypted SIP address of the callee.",
              "lineNumber": 11,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "credentials.toToken"
            },
            {
              "title": "param",
              "description": "Call options.",
              "lineNumber": 12,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "callOptions"
            },
            {
              "title": "param",
              "description": "The URI of the user making the call.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callOptions.from"
            },
            {
              "title": "param",
              "description": "Whether the call should have audio on start. Currently, audio-less calls are not supported.",
              "lineNumber": 14,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Boolean"
                }
              },
              "name": "callOptions.audio",
              "default": "true"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's audio.",
              "lineNumber": 15,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "callOptions.audioOptions"
            },
            {
              "title": "param",
              "description": "Options for configuring media's bandwidth.",
              "lineNumber": 16,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.BandwidthControls"
                }
              },
              "name": "callOptions.bandwidth"
            },
            {
              "title": "param",
              "description": "ID of the microphone to receive audio from.",
              "lineNumber": 17,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "callOptions.audioOptions.deviceId"
            },
            {
              "title": "param",
              "description": "Whether the call should have video on start.",
              "lineNumber": 18,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Boolean"
                }
              },
              "name": "callOptions.video",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's video.",
              "lineNumber": 19,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "callOptions.videoOptions"
            },
            {
              "title": "param",
              "description": "ID of the camera to receive video from.",
              "lineNumber": 20,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "callOptions.videoOptions.deviceId"
            },
            {
              "title": "param",
              "description": "The height of the video.",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "callOptions.videoOptions.height"
            },
            {
              "title": "param",
              "description": "The width of the video.",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "callOptions.videoOptions.width"
            },
            {
              "title": "param",
              "description": "The frame rate of the video.",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "callOptions.videoOptions.frameRate"
            },
            {
              "title": "param",
              "description": "Whether the call should have screenshare on start.",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Boolean"
                }
              },
              "name": "callOptions.screen",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's screenShare.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "callOptions.screenOptions"
            },
            {
              "title": "param",
              "description": "The height of the screenShare.",
              "lineNumber": 26,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "callOptions.screenOptions.height"
            },
            {
              "title": "param",
              "description": "The width of the screenShare.",
              "lineNumber": 27,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "callOptions.screenOptions.width"
            },
            {
              "title": "param",
              "description": "The frame rate of the screenShare.",
              "lineNumber": 28,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "callOptions.screenOptions.frameRate"
            },
            {
              "title": "param",
              "description": "Custom display name to be provided to the destination. Only used with token-less anonymous calls. Not supported in all environments and may use default display name.",
              "lineNumber": 29,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "callOptions.displayName"
            },
            {
              "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": "callOptions.customParameters"
            },
            {
              "title": "return",
              "description": "Id of the outgoing call.",
              "lineNumber": 31,
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "example",
              "description": "// Make a basic anonymous call.\nlet callee = 'user1@example.com';\nlet callOptions = { ... };\n\nlet callId = client.call.makeAnonymous(callee, {}, callOptions);",
              "lineNumber": 32
            },
            {
              "title": "example",
              "description": "// Make a time-limited token anonymous call.\nlet callee = 'user1@example.com';\nlet account = 'user2@example.com';\nlet callOptions = { ...\n    customParameters: [\n      {\n        \"name\": \"X-GPS\",\n        \"value\": \"42.686032,23.344565\"\n      }\n    ],\n    ...\n  };\n\n// Generate / Retrieve the encrypted tokens.\nconst key = 'abc123...';\nconst credentials = {\n     accountToken: createToken(account, key),\n     fromToken: createToken('sip:' + account, key),\n     toToken: createToken('sip:' + callee, key),\n     realm: 'realmAbc123...'\n};\n\nlet callId = client.call.makeAnonymous(callee, credentials, callOptions);",
              "lineNumber": 38
            }
          ],
          "loc": {
            "start": {
              "line": 54,
              "column": 8
            },
            "end": {
              "line": 116,
              "column": 11
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 126,
                "column": 8
              },
              "end": {
                "line": 149,
                "column": 9
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/callMe.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Make a basic anonymous call.\nlet callee = 'user1@example.com';\nlet callOptions = { ... };\n\nlet callId = client.call.makeAnonymous(callee, {}, callOptions);"
            },
            {
              "description": "// Make a time-limited token anonymous call.\nlet callee = 'user1@example.com';\nlet account = 'user2@example.com';\nlet callOptions = { ...\n    customParameters: [\n      {\n        \"name\": \"X-GPS\",\n        \"value\": \"42.686032,23.344565\"\n      }\n    ],\n    ...\n  };\n\n// Generate / Retrieve the encrypted tokens.\nconst key = 'abc123...';\nconst credentials = {\n     accountToken: createToken(account, key),\n     fromToken: createToken('sip:' + account, key),\n     toToken: createToken('sip:' + callee, key),\n     realm: 'realmAbc123...'\n};\n\nlet callId = client.call.makeAnonymous(callee, credentials, callOptions);"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callee",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Full user ID of the call recipient."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "param",
              "name": "credentials",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Information needed to validate a token anonymous call."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "credentials.realm",
                  "lineNumber": 8,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The realm used to encrypt the tokens."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Object"
                  }
                },
                {
                  "title": "param",
                  "name": "credentials.accountToken",
                  "lineNumber": 9,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The encrypted account token of the account making the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "credentials.fromToken",
                  "lineNumber": 10,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The encrypted SIP address of the account/caller."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "credentials.toToken",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The encrypted SIP address of the callee."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  }
                }
              ]
            },
            {
              "title": "param",
              "name": "callOptions",
              "lineNumber": 12,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Call options."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "callOptions.from",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The URI of the user making the call."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "callOptions.audio",
                  "lineNumber": 14,
                  "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": "true"
                },
                {
                  "title": "param",
                  "name": "callOptions.audioOptions",
                  "lineNumber": 15,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's audio."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "callOptions.audioOptions.deviceId",
                      "lineNumber": 17,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "ID of the microphone to receive audio from."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "call.MediaConstraint"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "param",
                  "name": "callOptions.bandwidth",
                  "lineNumber": 16,
                  "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": "callOptions.video",
                  "lineNumber": 18,
                  "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": "callOptions.videoOptions",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's video."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "callOptions.videoOptions.deviceId",
                      "lineNumber": 20,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "ID of the camera to receive video from."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "call.MediaConstraint"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "callOptions.videoOptions.height",
                      "lineNumber": 21,
                      "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": "param",
                      "name": "callOptions.videoOptions.width",
                      "lineNumber": 22,
                      "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": "param",
                      "name": "callOptions.videoOptions.frameRate",
                      "lineNumber": 23,
                      "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"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "param",
                  "name": "callOptions.screen",
                  "lineNumber": 24,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Whether the call should have screenshare on start."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "Boolean"
                  },
                  "default": "false"
                },
                {
                  "title": "param",
                  "name": "callOptions.screenOptions",
                  "lineNumber": 25,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's screenShare."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "callOptions.screenOptions.height",
                      "lineNumber": 26,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The height of the screenShare."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "call.MediaConstraint"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "callOptions.screenOptions.width",
                      "lineNumber": 27,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The width of the screenShare."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "call.MediaConstraint"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "callOptions.screenOptions.frameRate",
                      "lineNumber": 28,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The frame rate of the screenShare."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "call.MediaConstraint"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "param",
                  "name": "callOptions.displayName",
                  "lineNumber": 29,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Custom display name to be provided to the destination. Only used with token-less anonymous calls. Not supported in all environments and may use default display name."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "callOptions.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": "Id of the outgoing call."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "call",
          "kind": "function",
          "name": "makeAnonymous",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "makeAnonymous",
              "kind": "function"
            }
          ],
          "namespace": "callmakeAnonymous"
        },
        {
          "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"
            }
          ],
          "loc": {
            "start": {
              "line": 42,
              "column": 0
            },
            "end": {
              "line": 72,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
                }
              }
            }
          ],
          "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"
            },
            {
              "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": 93,
              "column": 0
            },
            "end": {
              "line": 127,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "name": "MediaConstraint",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.MediaConstraint"
        },
        {
          "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": 129,
              "column": 0
            },
            "end": {
              "line": 139,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "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": 141,
              "column": 0
            },
            "end": {
              "line": 161,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "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": 163,
              "column": 0
            },
            "end": {
              "line": 175,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "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. The default value is 0 (meaning no candidate prefetching will occur).",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              },
              "name": "iceCandidatePoolSize"
            },
            {
              "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": 14,
              "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": 16,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "bundlePolicy"
            }
          ],
          "loc": {
            "start": {
              "line": 177,
              "column": 0
            },
            "end": {
              "line": 195,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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. The default value is 0 (meaning no candidate prefetching will occur)."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "number"
                }
              }
            },
            {
              "title": "param",
              "name": "iceTransportPolicy",
              "lineNumber": 14,
              "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": 16,
              "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"
            },
            {
              "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": 197,
              "column": 0
            },
            "end": {
              "line": 207,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "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": 209,
              "column": 0
            },
            "end": {
              "line": 230,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "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": 232,
              "column": 0
            },
            "end": {
              "line": 290,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "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": 292,
              "column": 0
            },
            "end": {
              "line": 306,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "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": 308,
              "column": 0
            },
            "end": {
              "line": 319,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "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": 321,
              "column": 0
            },
            "end": {
              "line": 331,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "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": "A list of Track objects that are contained in this Media object.",
              "lineNumber": 10,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.TrackObject"
                  }
                ]
              },
              "name": "tracks"
            }
          ],
          "loc": {
            "start": {
              "line": 333,
              "column": 0
            },
            "end": {
              "line": 344,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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": "tracks",
              "lineNumber": 10,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "A list of Track objects that are contained in this Media object."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.TrackObject"
                  }
                ]
              }
            }
          ],
          "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"
            },
            {
              "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": 346,
              "column": 0
            },
            "end": {
              "line": 367,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "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": 369,
              "column": 0
            },
            "end": {
              "line": 379,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "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": 381,
              "column": 0
            },
            "end": {
              "line": 392,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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"
            },
            {
              "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": "These parameters must be configured on the server prior to making a request, otherwise the request will fail when trying to include the parameters."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "These parameters can be specified with the "
                  },
                  {
                    "type": "link",
                    "url": "call.make",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.make"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " and "
                  },
                  {
                    "type": "link",
                    "url": "call.answer",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.answer"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs.\nThey can also be set after a Call is established using the "
                  },
                  {
                    "type": "link",
                    "url": "#callsetcustomparameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.setCustomParameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API, and 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 headers may be received anytime throughout the duration a call. A remote endpoint may send custom headers when starting a call,\nanswering a call, or during call updates such as hold/unhold and addition/removal of media in the call.\nWhen these custom headers are received, the SDK will emit a "
                  },
                  {
                    "type": "link",
                    "url": "call.event:call:customParameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:customParameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event\nwhich will contain the custom parameters that were received."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Call's custom parameters are stored on the Call's "
                  },
                  {
                    "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. These are the parameters that will be sent to the remote\nendpoint of the Call. Parameters received from a Call are not stored as\npart of the CallObject and are only provided via the "
                  },
                  {
                    "type": "link",
                    "url": "call.event:call:customParameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:customParameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 19,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 20
            },
            {
              "title": "module",
              "description": null,
              "lineNumber": 21,
              "type": null,
              "name": "CustomParameter"
            },
            {
              "title": "typedef",
              "description": null,
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "CustomParameter"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 23
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 24,
              "name": "link_call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 25,
              "name": "callMe"
            },
            {
              "title": "property",
              "description": "The name of the custom parameter",
              "lineNumber": 26,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "name"
            },
            {
              "title": "property",
              "description": "The value of the custom parameter",
              "lineNumber": 27,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "value"
            },
            {
              "title": "example",
              "description": "// Specify custom parameters when making a call.\nclient.call.make(destination, mediaConstraints,\n {\n   customParameters: [\n     {\n       name: 'X-GPS',\n       value: '42.686032,23.344565'\n     }\n   ]\n }\n)",
              "lineNumber": 28
            }
          ],
          "loc": {
            "start": {
              "line": 394,
              "column": 0
            },
            "end": {
              "line": 434,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 487,
                "column": 0
              },
              "end": {
                "line": 491,
                "column": 1
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Specify custom parameters when making a call.\nclient.call.make(destination, mediaConstraints,\n {\n   customParameters: [\n     {\n       name: 'X-GPS',\n       value: '42.686032,23.344565'\n     }\n   ]\n }\n)"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [
            {
              "title": "property",
              "name": "name",
              "lineNumber": 26,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The name of the custom parameter"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "value",
              "lineNumber": 27,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The value of the custom parameter"
                      }
                    ]
                  }
                ]
              },
              "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"
            },
            {
              "name": "CustomParameter",
              "kind": "typedef",
              "scope": "static"
            }
          ],
          "namespace": "call.CustomParameter"
        },
        {
          "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": 394,
              "column": 4
            },
            "end": {
              "line": 419,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 420,
                "column": 4
              },
              "end": {
                "line": 423,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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"
            },
            {
              "name": "hold",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.hold"
        },
        {
          "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": 425,
              "column": 4
            },
            "end": {
              "line": 446,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 447,
                "column": 4
              },
              "end": {
                "line": 450,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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"
            },
            {
              "name": "unhold",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.unhold"
        },
        {
          "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 specified parameters will be saved as part of the call's information throughout the duration of the call.\nAll subsequent call operations will include these custom parameters.\nTherefore, invalid parameters, or parameters not previously configured on the server, will cause subsequent call operations to fail."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Call's custom parameters are a property of the Call's "
                  },
                  {
                    "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 custom parameters set on a call can be sent directly with 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 can be removed from a call's information by setting them as undefined (e.g., "
                  },
                  {
                    "type": "inlineCode",
                    "value": "call.setCustomParameters(callId)"
                  },
                  {
                    "type": "text",
                    "value": ").\nSubsequent call operations will no longer send custom parameters."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "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": "link_call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 20,
              "name": "setCustomParameters"
            },
            {
              "title": "param",
              "description": "The ID of the call.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The custom parameters to set.",
              "lineNumber": 22,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.CustomParameter"
                  }
                ]
              },
              "name": "customParameters"
            }
          ],
          "loc": {
            "start": {
              "line": 452,
              "column": 4
            },
            "end": {
              "line": 475,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 496,
                "column": 4
              },
              "end": {
                "line": 499,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 21,
              "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": 22,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The custom parameters to set."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.CustomParameter"
                  }
                ]
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "kind": "function",
          "name": "setCustomParameters",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "setCustomParameters",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.setCustomParameters"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Send the custom parameters on an ongoing call to the server. The server may either consume the headers or relay them\nto another endpoint, depending on how the server is configured."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Call's custom parameters are a property of the Call's "
                  },
                  {
                    "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": "To change or remove the custom parameters on a call, use the "
                  },
                  {
                    "type": "link",
                    "url": "#callsetcustomparameters",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.setCustomParameters"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 9,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 10
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 11
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 12,
              "name": "link_call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 13,
              "name": "callMe"
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 14,
              "name": "sendCustomParameters"
            },
            {
              "title": "param",
              "description": "The ID of the call being acted on.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            }
          ],
          "loc": {
            "start": {
              "line": 501,
              "column": 4
            },
            "end": {
              "line": 517,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 518,
                "column": 4
              },
              "end": {
                "line": 521,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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 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"
            },
            {
              "name": "sendCustomParameters",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.sendCustomParameters"
        },
        {
          "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": 523,
              "column": 4
            },
            "end": {
              "line": 537,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 538,
                "column": 4
              },
              "end": {
                "line": 541,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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"
            },
            {
              "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": 543,
              "column": 4
            },
            "end": {
              "line": 554,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 555,
                "column": 4
              },
              "end": {
                "line": 558,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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"
            },
            {
              "name": "getById",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.getById"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Ends an ongoing call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The SDK will stop any/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": 560,
              "column": 4
            },
            "end": {
              "line": 583,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 584,
                "column": 4
              },
              "end": {
                "line": 587,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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"
            },
            {
              "name": "end",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.end"
        },
        {
          "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": "Options for configuring the call's audio.",
              "lineNumber": 21,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "media.audioOptions"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's video.",
              "lineNumber": 22,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "media.videoOptions"
            },
            {
              "title": "param",
              "description": "Options for configuring the call's screenShare.",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "media.screenOptions"
            },
            {
              "title": "param",
              "description": "ID of the microphone to receive audio from.",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.audioOptions.deviceId"
            },
            {
              "title": "param",
              "description": "ID of the camera to receive video from.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.videoOptions.deviceId"
            },
            {
              "title": "param",
              "description": "The height of the video.",
              "lineNumber": 26,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.videoOptions.height"
            },
            {
              "title": "param",
              "description": "The width of the video.",
              "lineNumber": 27,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.videoOptions.width"
            },
            {
              "title": "param",
              "description": "The frame rate of the video.",
              "lineNumber": 28,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.videoOptions.frameRate"
            },
            {
              "title": "param",
              "description": "The height of the screenShare.",
              "lineNumber": 29,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.screenOptions.height"
            },
            {
              "title": "param",
              "description": "The width of the screenShare.",
              "lineNumber": 30,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.screenOptions.width"
            },
            {
              "title": "param",
              "description": "The frame rate of the screenShare.",
              "lineNumber": 31,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.screenOptions.frameRate"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 32,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "options"
            },
            {
              "title": "param",
              "description": "Options for configuring media's bandwidth.",
              "lineNumber": 33,
              "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": 34,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.DSCPControls"
                }
              },
              "name": "options.dscpControls"
            }
          ],
          "loc": {
            "start": {
              "line": 589,
              "column": 4
            },
            "end": {
              "line": 624,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 625,
                "column": 4
              },
              "end": {
                "line": 634,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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.audioOptions",
                  "lineNumber": 21,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's audio."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "media.audioOptions.deviceId",
                      "lineNumber": 24,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "ID of the microphone to receive audio from."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "call.MediaConstraint"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "param",
                  "name": "media.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": "Object"
                    }
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "media.videoOptions.deviceId",
                      "lineNumber": 25,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "ID of the camera to receive video from."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "call.MediaConstraint"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "media.videoOptions.height",
                      "lineNumber": 26,
                      "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": "param",
                      "name": "media.videoOptions.width",
                      "lineNumber": 27,
                      "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": "param",
                      "name": "media.videoOptions.frameRate",
                      "lineNumber": 28,
                      "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"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "param",
                  "name": "media.screenOptions",
                  "lineNumber": 23,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the call's screenShare."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "media.screenOptions.height",
                      "lineNumber": 29,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The height of the screenShare."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "call.MediaConstraint"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "media.screenOptions.width",
                      "lineNumber": 30,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The width of the screenShare."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "call.MediaConstraint"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "media.screenOptions.frameRate",
                      "lineNumber": 31,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "The frame rate of the screenShare."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "call.MediaConstraint"
                        }
                      }
                    }
                  ]
                }
              ]
            },
            {
              "title": "param",
              "name": "options",
              "lineNumber": 32,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "options.bandwidth",
                  "lineNumber": 33,
                  "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": 34,
                  "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",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "addMedia",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.addMedia"
        },
        {
          "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": 636,
              "column": 4
            },
            "end": {
              "line": 655,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 656,
                "column": 4
              },
              "end": {
                "line": 659,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "removeMedia",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.removeMedia"
        },
        {
          "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": "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": 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": "Object"
                }
              },
              "name": "videoOptions"
            },
            {
              "title": "param",
              "description": "ID of the camera to receive video from.",
              "lineNumber": 23,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "videoOptions.deviceId"
            },
            {
              "title": "param",
              "description": "The height of the video.",
              "lineNumber": 24,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "videoOptions.height"
            },
            {
              "title": "param",
              "description": "The width of the video.",
              "lineNumber": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "videoOptions.width"
            },
            {
              "title": "param",
              "description": "The frame rate of the video.",
              "lineNumber": 26,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "videoOptions.frameRate"
            },
            {
              "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"
            }
          ],
          "loc": {
            "start": {
              "line": 661,
              "column": 4
            },
            "end": {
              "line": 691,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 692,
                "column": 4
              },
              "end": {
                "line": 701,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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": "Object"
                }
              },
              "properties": [
                {
                  "title": "param",
                  "name": "videoOptions.deviceId",
                  "lineNumber": 23,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "ID of the camera to receive video from."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "call.MediaConstraint"
                    }
                  }
                },
                {
                  "title": "param",
                  "name": "videoOptions.height",
                  "lineNumber": 24,
                  "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": "param",
                  "name": "videoOptions.width",
                  "lineNumber": 25,
                  "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": "param",
                  "name": "videoOptions.frameRate",
                  "lineNumber": 26,
                  "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"
                    }
                  }
                }
              ]
            },
            {
              "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"
                    }
                  }
                }
              ]
            }
          ],
          "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"
            },
            {
              "name": "startVideo",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.startVideo"
        },
        {
          "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": "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": 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": 703,
              "column": 4
            },
            "end": {
              "line": 725,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 726,
                "column": 4
              },
              "end": {
                "line": 729,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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"
            },
            {
              "name": "stopVideo",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.stopVideo"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Adds local screenshare to an ongoing Call, to start sending to the remote\nparticipant."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The latest SDK release (v4.X+) has not yet implemented this API in the\nsame way that it was available in previous releases (v3.X). In place\nof this API, the SDK has a more general API that can be used for this\nsame behaviour."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "link",
                    "url": "#calladdmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.addMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to perform the same behaviour\nas "
                  },
                  {
                    "type": "inlineCode",
                    "value": "startScreenshare"
                  },
                  {
                    "type": "text",
                    "value": ". {@link call.addMedia} is a general-purpose API\nfor adding media to a call, which covers the same functionality as\n"
                  },
                  {
                    "type": "inlineCode",
                    "value": "startScreenshare"
                  },
                  {
                    "type": "text",
                    "value": ". Selecting only screen options when using\n"
                  },
                  {
                    "type": "link",
                    "url": "#calladdmedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.addMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " will perform the same behaviour as using\n"
                  },
                  {
                    "type": "inlineCode",
                    "value": "startScreenshare"
                  },
                  {
                    "type": "text",
                    "value": "."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 16,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 17
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 18,
              "name": "startScreenshare"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 19
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 20,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 21,
              "name": "callMe"
            },
            {
              "title": "example",
              "description": "// Select media options for adding only screenshare.\nconst media = {\n   audio: false,\n   video: false,\n   screen: true,\n   screenOptions: { ... }\n}\n\n// Add the selected media to the call.\nclient.call.addMedia(callId, media)",
              "lineNumber": 22
            }
          ],
          "loc": {
            "start": {
              "line": 731,
              "column": 4
            },
            "end": {
              "line": 764,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 836,
                "column": 4
              },
              "end": {
                "line": 839,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// Select media options for adding only screenshare.\nconst media = {\n   audio: false,\n   video: false,\n   screen: true,\n   screenOptions: { ... }\n}\n\n// Add the selected media to the call.\nclient.call.addMedia(callId, media)"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "function",
          "name": "startScreenshare",
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "startScreenshare",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.startScreenshare"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Removes local screenshare from an ongoing Call, stopping it from being\nsent to the remote participant."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The latest SDK release (v4.X+) has not yet implemented this API in the\nsame way that it was available in previous releases (v3.X). In place\nof this API, the SDK has a more general API that can be used for this\nsame behaviour."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "link",
                    "url": "#callremovemedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.removeMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API can be used to perform the same\nbehaviour as "
                  },
                  {
                    "type": "inlineCode",
                    "value": "stopScreenshare"
                  },
                  {
                    "type": "text",
                    "value": ". {@link call.removeMedia} is a\ngeneral-purpose API for removing media from a call, which covers the\nsame functionality as "
                  },
                  {
                    "type": "inlineCode",
                    "value": "stopScreenshare"
                  },
                  {
                    "type": "text",
                    "value": ". Specifying only the screen\ntrack when using "
                  },
                  {
                    "type": "link",
                    "url": "#callremovemedia",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.removeMedia"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " will perform the same\nbehaviour as using "
                  },
                  {
                    "type": "inlineCode",
                    "value": "stopScreenshare"
                  },
                  {
                    "type": "text",
                    "value": "."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "There is a caveat that if a Call has multiple video tracks (for example,\nboth a video and a screen track), the SDK itself cannot yet\ndifferentiate one from the other. The application will need to know\nwhich track was the screen track in this scenario."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 20,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 21
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 22,
              "name": "stopScreenshare"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 23
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 24,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 25,
              "name": "callMe"
            },
            {
              "title": "example",
              "description": "const call = client.call.getById(callId)\n// Get the ID of any/all video tracks on the call.\nconst videoTracks = call.localTracks.filter(trackId => {\n   const track = call.media.getTrackById(trackId)\n   // Both video and screen tracks have kind of 'video'.\n   return track.kind === 'video'\n})\n\n// Pick out the screen track.\nconst screenTrack = videoTracks[0]\n\n// Remove screen from the call.\nclient.call.removeMedia(callId, [ screenTrack ])",
              "lineNumber": 26
            }
          ],
          "loc": {
            "start": {
              "line": 766,
              "column": 4
            },
            "end": {
              "line": 806,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 836,
                "column": 4
              },
              "end": {
                "line": 839,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "const call = client.call.getById(callId)\n// Get the ID of any/all video tracks on the call.\nconst videoTracks = call.localTracks.filter(trackId => {\n   const track = call.media.getTrackById(trackId)\n   // Both video and screen tracks have kind of 'video'.\n   return track.kind === 'video'\n})\n\n// Pick out the screen track.\nconst screenTrack = videoTracks[0]\n\n// Remove screen from the call.\nclient.call.removeMedia(callId, [ screenTrack ])"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "function",
          "name": "stopScreenshare",
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "stopScreenshare",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.stopScreenshare"
        },
        {
          "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": 808,
              "column": 4
            },
            "end": {
              "line": 835,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 836,
                "column": 4
              },
              "end": {
                "line": 839,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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"
            },
            {
              "name": "sendDTMF",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.sendDTMF"
        },
        {
          "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\nTrack of the Call."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "This API will return a promise which, when resolved, will contain the report of the particular call.\nThe 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": "#calleventcallstatsreceived",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call:statsReceived"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " event, after\nthe operation completes, that has the report."
                  }
                ]
              }
            ]
          },
          "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": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 27,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "The ID of the Call to retrieve the report.",
              "lineNumber": 28,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "ID of a Track being used by the Call. If not\n   provided, RTCStatsReport is generated for the Call itself.",
              "lineNumber": 29,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "trackId"
            },
            {
              "title": "example",
              "description": "client.on('call:statsReceived', function (params) {\n   // Iterate over each individual statistic inside the RTCPStatsReport.\n   params.result.forEach(stats => {\n       // Handle the data on its own or collate with previously gathered stats\n       //    for analysis.\n       ...\n   })\n})\n\n// Get a snapshot of the Call's stats.\n//   This may be done on a regular interval to collect data over time.\nclient.call.getStats(callId)",
              "lineNumber": 31
            }
          ],
          "loc": {
            "start": {
              "line": 841,
              "column": 4
            },
            "end": {
              "line": 885,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 886,
                "column": 4
              },
              "end": {
                "line": 891,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "client.on('call:statsReceived', function (params) {\n   // Iterate over each individual statistic inside the RTCPStatsReport.\n   params.result.forEach(stats => {\n       // Handle the data on its own or collate with previously gathered stats\n       //    for analysis.\n       ...\n   })\n})\n\n// Get a snapshot of the Call's stats.\n//   This may be done on a regular interval to collect data over time.\nclient.call.getStats(callId)"
            }
          ],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "callId",
              "lineNumber": 28,
              "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": 29,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "ID of a 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": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "name": "getStats",
          "kind": "function",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "getStats",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.getStats"
        },
        {
          "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": 21,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 22
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 23
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 24,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 25,
              "name": "callMe"
            },
            {
              "title": "param",
              "description": "The ID of the call to replace the track of.",
              "lineNumber": 26,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "callId"
            },
            {
              "title": "param",
              "description": "The ID of the track to replace.",
              "lineNumber": 27,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "trackId"
            },
            {
              "title": "param",
              "description": "The media options.",
              "lineNumber": 28,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "media",
              "default": "{}"
            },
            {
              "title": "param",
              "description": "Whether to create an audio track.",
              "lineNumber": 29,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.audio",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the audio track.",
              "lineNumber": 30,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "media.audioOptions"
            },
            {
              "title": "param",
              "description": "ID of the microphone to receive audio from.",
              "lineNumber": 31,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.audioOptions.deviceId"
            },
            {
              "title": "param",
              "description": "Whether to create a video track.",
              "lineNumber": 32,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "boolean"
                }
              },
              "name": "media.video",
              "default": "false"
            },
            {
              "title": "param",
              "description": "Options for configuring the video track.",
              "lineNumber": 33,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "Object"
                }
              },
              "name": "media.videoOptions"
            },
            {
              "title": "param",
              "description": "ID of the camera to receive video from.",
              "lineNumber": 34,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.videoOptions.deviceId"
            },
            {
              "title": "param",
              "description": "The height of the video.",
              "lineNumber": 35,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.videoOptions.height"
            },
            {
              "title": "param",
              "description": "The width of the video.",
              "lineNumber": 36,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.videoOptions.width"
            },
            {
              "title": "param",
              "description": "The frame rate of the video.",
              "lineNumber": 37,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "call.MediaConstraint"
                }
              },
              "name": "media.videoOptions.frameRate"
            },
            {
              "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": 38
            },
            {
              "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": 55
            }
          ],
          "loc": {
            "start": {
              "line": 1138,
              "column": 4
            },
            "end": {
              "line": 1207,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1208,
                "column": 4
              },
              "end": {
                "line": 1217,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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": 26,
              "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": 27,
              "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": 28,
              "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": 29,
                  "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": 30,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the audio track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "media.audioOptions.deviceId",
                      "lineNumber": 31,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "ID of the microphone to receive audio from."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "call.MediaConstraint"
                        }
                      }
                    }
                  ]
                },
                {
                  "title": "param",
                  "name": "media.video",
                  "lineNumber": 32,
                  "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": 33,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Options for configuring the video track."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Object"
                    }
                  },
                  "properties": [
                    {
                      "title": "param",
                      "name": "media.videoOptions.deviceId",
                      "lineNumber": 34,
                      "description": {
                        "type": "root",
                        "children": [
                          {
                            "type": "paragraph",
                            "children": [
                              {
                                "type": "text",
                                "value": "ID of the camera to receive video from."
                              }
                            ]
                          }
                        ]
                      },
                      "type": {
                        "type": "OptionalType",
                        "expression": {
                          "type": "NameExpression",
                          "name": "call.MediaConstraint"
                        }
                      }
                    },
                    {
                      "title": "param",
                      "name": "media.videoOptions.height",
                      "lineNumber": 35,
                      "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": "param",
                      "name": "media.videoOptions.width",
                      "lineNumber": 36,
                      "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": "param",
                      "name": "media.videoOptions.frameRate",
                      "lineNumber": 37,
                      "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"
                        }
                      }
                    }
                  ]
                }
              ]
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "name": "replaceTrack",
          "kind": "function",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "replaceTrack",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.replaceTrack"
        },
        {
          "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": ".\nFirefox browser does not currently support this method. Therefore, this API will not work on Firefox."
                  }
                ]
              }
            ]
          },
          "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 kind of media, i.e., 'audio' or 'video', to get the list of available codecs of.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "kind"
            }
          ],
          "loc": {
            "start": {
              "line": 1219,
              "column": 4
            },
            "end": {
              "line": 1235,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1236,
                "column": 4
              },
              "end": {
                "line": 1246,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "kind",
              "lineNumber": 15,
              "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": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "name": "getAvailableCodecs",
          "kind": "function",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "getAvailableCodecs",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.getAvailableCodecs"
        },
        {
          "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": "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 list of SDP handler functions to modify SDP.",
              "lineNumber": 15,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "call.SdpHandlerFunction"
                  }
                ]
              },
              "name": "sdpHandlers"
            }
          ],
          "loc": {
            "start": {
              "line": 1248,
              "column": 4
            },
            "end": {
              "line": 1264,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1265,
                "column": 4
              },
              "end": {
                "line": 1273,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "sdpHandlers",
              "lineNumber": 15,
              "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": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "memberof": "call",
          "name": "setSdpHandlers",
          "kind": "function",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "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": 1300,
              "column": 4
            },
            "end": {
              "line": 1344,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1345,
                "column": 4
              },
              "end": {
                "line": 1345,
                "column": 23
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "states",
              "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": 1347,
              "column": 4
            },
            "end": {
              "line": 1426,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1427,
                "column": 4
              },
              "end": {
                "line": 1427,
                "column": 55
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "mediaConnectionStates",
              "scope": "static"
            }
          ],
          "namespace": "call.mediaConnectionStates"
        },
        {
          "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{@link call.event:call:mediaConnectionChange call:mediaConnectionChange}\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": 1429,
              "column": 4
            },
            "end": {
              "line": 1473,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1474,
                "column": 4
              },
              "end": {
                "line": 1477,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.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"
            },
            {
              "name": "restartMedia",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.restartMedia"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The "
                  },
                  {
                    "type": "inlineCode",
                    "value": "setDefaultDevices"
                  },
                  {
                    "type": "text",
                    "value": " API from previous SDK releases (3.X) has been\ndeprecated in the latest releases (4.X+). The SDK no longer keeps\ntrack of \"default devices\" on behalf of the application."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The devices used for a call can be selected as part of the APIs for\nstarting the call. Microphone and/or camera can be chosen in the\n"
                  },
                  {
                    "type": "link",
                    "url": "call.make",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.make"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " and "
                  },
                  {
                    "type": "link",
                    "url": "call.answer",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.answer"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " APIs, and speaker can be\nchosen when the audio track is rendered with the\n"
                  },
                  {
                    "type": "link",
                    "url": "#mediarendertracks",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.renderTracks"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 11
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 12,
              "name": "setDefaultDevices"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 13
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 14,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 15,
              "name": "callMe"
            }
          ],
          "loc": {
            "start": {
              "line": 1479,
              "column": 4
            },
            "end": {
              "line": 1495,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1474,
                "column": 4
              },
              "end": {
                "line": 1477,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "function",
          "name": "setDefaultDevices",
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "setDefaultDevices",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.setDefaultDevices"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Changes the camera and/or microphone used for a Call's media input."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The latest SDK release (v4.X+) has not yet implemented this API in the\nsame way that it was available in previous releases (v3.X). In place\nof this API, the SDK has a more general API that can be used for this\nsame behaviour."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The same behaviour as the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "changeInputDevices"
                  },
                  {
                    "type": "text",
                    "value": " API can be implemented\nusing the general-purpose "
                  },
                  {
                    "type": "link",
                    "url": "#callreplacetrack",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "call.replaceTrack"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " API. This API can\nbe used to replace an existing media track with a new track of the\nsame type, allowing an application to change certain aspects of the\nmedia, such as input device."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 13,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 14
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 15,
              "name": "changeInputDevices"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 16
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 17,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 18,
              "name": "callMe"
            },
            {
              "title": "example",
              "description": "const call = client.call.getById(callId)\n// Get the ID of the Call's video track.\nconst videoTrack = call.localTracks.find(trackId => {\n   const track = client.media.getTrackById(trackId)\n   return track.kind === 'video'\n})\n\n// Select the new video options.\nconst media = {\n   video: true,\n   videoOptions: {\n       deviceId: 'cameraId'\n   }\n}\n\n// Change the call's camera by replacing the video track.\nclient.call.replaceTrack(callId, videoTrack, media)",
              "lineNumber": 19
            }
          ],
          "loc": {
            "start": {
              "line": 1497,
              "column": 4
            },
            "end": {
              "line": 1534,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1474,
                "column": 4
              },
              "end": {
                "line": 1477,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "const call = client.call.getById(callId)\n// Get the ID of the Call's video track.\nconst videoTrack = call.localTracks.find(trackId => {\n   const track = client.media.getTrackById(trackId)\n   return track.kind === 'video'\n})\n\n// Select the new video options.\nconst media = {\n   video: true,\n   videoOptions: {\n       deviceId: 'cameraId'\n   }\n}\n\n// Change the call's camera by replacing the video track.\nclient.call.replaceTrack(callId, videoTrack, media)"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "function",
          "name": "changeInputDevices",
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "changeInputDevices",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.changeInputDevices"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Changes the speaker used for a Call's audio output. Supported on\nbrowser's that support HTMLMediaElement.setSinkId()."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The latest SDK release (v4.X+) has not yet implemented this API in the\nsame way that it was available in previous releases (v3.X). In place\nof this API, the SDK has a more general API that can be used for this\nsame behaviour."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "The same behaviour as the "
                  },
                  {
                    "type": "inlineCode",
                    "value": "changeSpeaker"
                  },
                  {
                    "type": "text",
                    "value": " API can be implemented by\nre-rendering the Call's audio track.  A speaker can be selected when\nrendering an audio track, so changing a speaker can be simulated\nby unrendering the track with "
                  },
                  {
                    "type": "link",
                    "url": "#mediaremovetracks",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.removeTracks"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ", then\nre-rendering it with a new speaker with "
                  },
                  {
                    "type": "link",
                    "url": "#mediarendertracks",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "media.renderTracks"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 14,
              "type": null
            },
            {
              "title": "static",
              "description": null,
              "lineNumber": 15
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 16,
              "name": "changeSpeaker"
            },
            {
              "title": "memberof",
              "description": "call",
              "lineNumber": 17
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 18,
              "name": "call"
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 19,
              "name": "callMe"
            },
            {
              "title": "example",
              "description": "const call = client.call.getById(callId)\n// Get the ID of the Call's audio track.\nconst audioTrack = call.localTracks.find(trackId => {\n   const track = client.media.getTrackById(trackId)\n   return track.kind === 'audio'\n})\n\n// Where the audio track was previously rendered.\nconst audioContainer = ...\n\n// Unrender the audio track we want to change speaker for.\nclient.media.removeTrack([ audioTrack ], audioContainer)\n// Re-render the audio track with a new speaker.\nclient.media.renderTrack([ audioTrack ], audioContainer, {\n   speakerId: 'speakerId'\n})",
              "lineNumber": 20
            }
          ],
          "loc": {
            "start": {
              "line": 1536,
              "column": 4
            },
            "end": {
              "line": 1573,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 1474,
                "column": 4
              },
              "end": {
                "line": 1477,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/call.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "const call = client.call.getById(callId)\n// Get the ID of the Call's audio track.\nconst audioTrack = call.localTracks.find(trackId => {\n   const track = client.media.getTrackById(trackId)\n   return track.kind === 'audio'\n})\n\n// Where the audio track was previously rendered.\nconst audioContainer = ...\n\n// Unrender the audio track we want to change speaker for.\nclient.media.removeTrack([ audioTrack ], audioContainer)\n// Re-render the audio track with a new speaker.\nclient.media.renderTrack([ audioTrack ], audioContainer, {\n   speakerId: 'speakerId'\n})"
            }
          ],
          "implements": [],
          "params": [],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "scope": "static",
          "kind": "function",
          "name": "changeSpeaker",
          "memberof": "call",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "call"
            },
            {
              "name": "changeSpeaker",
              "kind": "function",
              "scope": "static"
            }
          ],
          "namespace": "call.changeSpeaker"
        }
      ]
    },
    "path": [
      {
        "name": "call",
        "kind": "namespace"
      }
    ],
    "namespace": "call"
  },
  {
    "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": 4,
        "column": 0
      },
      "end": {
        "line": 10,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 44,
          "column": 0
        },
        "end": {
          "line": 44,
          "column": 70
        }
      },
      "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/connectivity/interface/api.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."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 3,
              "type": null
            },
            {
              "title": "memberof",
              "description": "connection",
              "lineNumber": 4
            },
            {
              "title": "event",
              "description": "ws:change",
              "lineNumber": 5
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "The platform",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.platform"
            }
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 9,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 10,
                "column": 0
              },
              "end": {
                "line": 10,
                "column": 36
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/connectivity/interface/eventTypes.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 6,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.platform",
                  "lineNumber": 7,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The platform"
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "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": "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": "Information about how the websocket is being used.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "method"
            },
            {
              "title": "property",
              "description": "How the websocket is staying connected.",
              "lineNumber": 12,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "method.type"
            },
            {
              "title": "property",
              "description": "Who is responsible for keeping the connection alive.",
              "lineNumber": 13,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "method.responsibleParty"
            },
            {
              "title": "property",
              "description": "The SDK platform being used.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "platform"
            },
            {
              "title": "property",
              "description": "How often the client will ping the server to test for websocket connectivity.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "pingInterval"
            },
            {
              "title": "property",
              "description": "How many times the SDK will try to reconnect a disconnected websocket.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "reconnectLimit"
            },
            {
              "title": "property",
              "description": "How long the SDK will wait before retrying websocket reconnection.",
              "lineNumber": 17,
              "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": 18,
              "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": 19,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "reconnectTimeLimit"
            },
            {
              "title": "property",
              "description": "Indicates if the SDK should automatically try reconnecting a disconnected websocket.",
              "lineNumber": 20,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "autoReconnect"
            },
            {
              "title": "property",
              "description": "How many missed pings before the SDK stops trying to reconnect a disconnected websocket.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "maxMissedPings"
            },
            {
              "title": "property",
              "description": "The mode used for authenticating with the server.",
              "lineNumber": 22,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "webSocketOAuthMode"
            },
            {
              "title": "property",
              "description": "Information required to connect a websocket to the server.",
              "lineNumber": 23,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "wsInfo"
            },
            {
              "title": "property",
              "description": "The protocol to use to connect a websocket.",
              "lineNumber": 24,
              "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": 25,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "wsInfo.server"
            },
            {
              "title": "property",
              "description": "The port of the server to connect to.",
              "lineNumber": 26,
              "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": 27,
              "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": 28,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "wsInfo.params"
            },
            {
              "title": "property",
              "description": "The date and time that the last known contact with the server was.",
              "lineNumber": 29,
              "type": {
                "type": "NameExpression",
                "name": "number"
              },
              "name": "lastContact"
            }
          ],
          "loc": {
            "start": {
              "line": 12,
              "column": 0
            },
            "end": {
              "line": 42,
              "column": 3
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 44,
                "column": 0
              },
              "end": {
                "line": 44,
                "column": 70
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/connectivity/interface/api.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": "method",
              "lineNumber": 11,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Information about how the websocket is being used."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "property",
                  "name": "method.type",
                  "lineNumber": 12,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "How the websocket is staying connected."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                },
                {
                  "title": "property",
                  "name": "method.responsibleParty",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Who is responsible for keeping the connection alive."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "OptionalType",
                    "expression": {
                      "type": "NameExpression",
                      "name": "string"
                    }
                  }
                }
              ]
            },
            {
              "title": "property",
              "name": "platform",
              "lineNumber": 14,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The SDK platform being used."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            },
            {
              "title": "property",
              "name": "pingInterval",
              "lineNumber": 15,
              "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": 16,
              "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": 17,
              "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": 18,
              "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": 19,
              "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": 20,
              "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": "maxMissedPings",
              "lineNumber": 21,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "How many missed pings before the SDK stops trying to reconnect a disconnected websocket."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            },
            {
              "title": "property",
              "name": "webSocketOAuthMode",
              "lineNumber": 22,
              "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": 23,
              "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": 24,
                  "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": 25,
                  "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": 26,
                  "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": 27,
                  "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": 28,
                  "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"
                    }
                  }
                }
              ]
            },
            {
              "title": "property",
              "name": "lastContact",
              "lineNumber": 29,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The date and time that the last known contact with the server was."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "number"
              }
            }
          ],
          "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"
        },
        {
          "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": "param",
              "description": "Backend platform for which to request the websocket's state.",
              "lineNumber": 6,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "platform",
              "default": "'link'"
            },
            {
              "title": "return",
              "description": "Details about the current websocket connection, including state and configuration.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "connection.WSConnectionObject"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 56,
              "column": 4
            },
            "end": {
              "line": 64,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 65,
                "column": 4
              },
              "end": {
                "line": 68,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/connectivity/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "platform",
              "lineNumber": 6,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Backend platform for which to request the websocket's state."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "default": "'link'"
            }
          ],
          "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."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 2,
              "type": null
            },
            {
              "title": "memberof",
              "description": "connection",
              "lineNumber": 3
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 4,
              "name": "enableConnectivityChecking"
            },
            {
              "title": "param",
              "description": "Enable connectivity checking.",
              "lineNumber": 5,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "enable"
            }
          ],
          "loc": {
            "start": {
              "line": 70,
              "column": 4
            },
            "end": {
              "line": 76,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 77,
                "column": 4
              },
              "end": {
                "line": 80,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/connectivity/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "enable",
              "lineNumber": 5,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Enable connectivity checking."
                      }
                    ]
                  }
                ]
              },
              "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": "Triggers a reset in the connection to the WebSocket being used for notifications.\nThis can be used in scenarios where a network issue (undetectable by the SDK)\nis detected by an application."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "If there is no WebSocket currently connected, this function has no effect.\nCalling this function will trigger all the normal WebSocket and connectivity lifecycle\nevents as well as trigger re-connection processing that follows the configuration of the SDK.\nCalling this function always has the potential of causing some events being lost by the\nSDK and preventing proper operation."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 10,
              "type": null
            },
            {
              "title": "memberof",
              "description": "connection",
              "lineNumber": 11
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 12,
              "name": "resetConnection"
            }
          ],
          "loc": {
            "start": {
              "line": 82,
              "column": 4
            },
            "end": {
              "line": 95,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 96,
                "column": 4
              },
              "end": {
                "line": 109,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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"
        }
      ]
    },
    "path": [
      {
        "name": "connection",
        "kind": "namespace"
      }
    ],
    "namespace": "connection"
  },
  {
    "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": 6,
        "column": 0
      },
      "end": {
        "line": 34,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 36,
          "column": 0
        },
        "end": {
          "line": 181,
          "column": 1
        }
      },
      "file": "/var/jenkins_home/workspace/Kandy.js_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": 40,
              "column": 4
            },
            "end": {
              "line": 73,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 74,
                "column": 4
              },
              "end": {
                "line": 80,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": "/var/jenkins_home/workspace/Kandy.js_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": "/var/jenkins_home/workspace/Kandy.js_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": 74,
        "column": 0
      },
      "end": {
        "line": 91,
        "column": 3
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 487,
          "column": 0
        },
        "end": {
          "line": 491,
          "column": 1
        }
      },
      "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/call/interfaceNew/api/index.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": "/var/jenkins_home/workspace/Kandy.js_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": "/var/jenkins_home/workspace/Kandy.js_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": "/var/jenkins_home/workspace/Kandy.js_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": "/var/jenkins_home/workspace/Kandy.js_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 predominantely\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": "/var/jenkins_home/workspace/Kandy.js_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": "/var/jenkins_home/workspace/Kandy.js_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": "/var/jenkins_home/workspace/Kandy.js_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": "/var/jenkins_home/workspace/Kandy.js_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": 18,
              "column": 4
            },
            "end": {
              "line": 29,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 30,
                "column": 4
              },
              "end": {
                "line": 33,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": 35,
              "column": 4
            },
            "end": {
              "line": 43,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 44,
                "column": 4
              },
              "end": {
                "line": 47,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": 49,
              "column": 4
            },
            "end": {
              "line": 57,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 58,
                "column": 4
              },
              "end": {
                "line": 61,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": "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": 63,
              "column": 4
            },
            "end": {
              "line": 111,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 112,
                "column": 4
              },
              "end": {
                "line": 119,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": "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:newTrack', function (params) {\n   const track = client.media.getTrackById(params.trackId)\n   const container = params.local ? localContainer : remoteContainer\n\n   // Render the Call's new track when it first becomes available.\n   client.media.renderTracks([ track.trackId ], container)\n})",
              "lineNumber": 15
            }
          ],
          "loc": {
            "start": {
              "line": 120,
              "column": 4
            },
            "end": {
              "line": 144,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 145,
                "column": 4
              },
              "end": {
                "line": 153,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/webrtc/interface/api/media.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "// When a Call receives a new track, render it.\nclient.on('call:newTrack', function (params) {\n   const track = client.media.getTrackById(params.trackId)\n   const container = params.local ? localContainer : remoteContainer\n\n   // Render the Call's new track when it first becomes available.\n   client.media.renderTracks([ track.trackId ], container)\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": "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": 155,
              "column": 4
            },
            "end": {
              "line": 168,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 169,
                "column": 4
              },
              "end": {
                "line": 172,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": "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": 174,
              "column": 4
            },
            "end": {
              "line": 196,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 197,
                "column": 4
              },
              "end": {
                "line": 200,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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": "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": 202,
              "column": 4
            },
            "end": {
              "line": 216,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 217,
                "column": 4
              },
              "end": {
                "line": 220,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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"
        }
      ]
    },
    "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": 10,
          "column": 0
        },
        "end": {
          "line": 10,
          "column": 36
        }
      },
      "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/notifications/interface/api.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": "/var/jenkins_home/workspace/Kandy.js_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": "/var/jenkins_home/workspace/Kandy.js_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": "requires",
              "description": null,
              "lineNumber": 4,
              "name": "externalNotifications"
            },
            {
              "title": "memberof",
              "description": "notification",
              "lineNumber": 5
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 6,
              "name": "process"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "notification"
            },
            {
              "title": "param",
              "description": "The channel that the notification came from.",
              "lineNumber": 8,
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              },
              "name": "channel"
            }
          ],
          "loc": {
            "start": {
              "line": 27,
              "column": 4
            },
            "end": {
              "line": 36,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 37,
                "column": 4
              },
              "end": {
                "line": 40,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/notifications/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "notification",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              }
            },
            {
              "title": "param",
              "name": "channel",
              "lineNumber": 8,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The channel that the notification came from."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "OptionalType",
                "expression": {
                  "type": "NameExpression",
                  "name": "string"
                }
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "notification",
          "kind": "function",
          "name": "process",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "notification",
              "kind": "namespace"
            },
            {
              "name": "process",
              "kind": "function"
            }
          ],
          "namespace": "notificationprocess"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Registers with Apple push notification service. Once registration is successful, the application will be able to receive\nstandard and/or voip push notifications. It can then send these notifications to the SDK with "
                  },
                  {
                    "type": "link",
                    "url": "api.notifications.process",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "api.notifications.process"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nin order for the SDK to process them."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 6,
              "name": "push"
            },
            {
              "title": "memberof",
              "description": "notification",
              "lineNumber": 7
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 8,
              "name": "registerApplePush"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "Array of services for which we wish to receive notifications.",
              "lineNumber": 10,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "params.services"
            },
            {
              "title": "param",
              "description": "The voip device token used for voip push on iOS.\n                                         This token is required if registering for call service notifications on iOS.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.voipDeviceToken"
            },
            {
              "title": "param",
              "description": "The standardDevice token used for standard push on iOS .\n                                             This token is required when registering for non-call service notifications.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.standardDeviceToken"
            },
            {
              "title": "param",
              "description": "The bundleId to identify the application receiving the push notification.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.bundleId"
            },
            {
              "title": "param",
              "description": "Unique identifier for a client device.",
              "lineNumber": 16,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.clientCorrelator"
            },
            {
              "title": "param",
              "description": "The realm used by the push registration service to identify and\n                               establish a connection with the service gateway.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.realm"
            },
            {
              "title": "param",
              "description": "If true, push notification will be sent to production.\n                                       If false, push notification will be sent to sandbox.",
              "lineNumber": 19,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "params.isProduction"
            },
            {
              "title": "return",
              "description": "When successful,  the information of the registration.\n                  Promise will reject with error object otherwise.",
              "lineNumber": 21,
              "type": {
                "type": "NameExpression",
                "name": "Promise"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 42,
              "column": 4
            },
            "end": {
              "line": 65,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 66,
                "column": 4
              },
              "end": {
                "line": 94,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/notifications/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.services",
                  "lineNumber": 10,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Array of services for which we wish to receive notifications."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                },
                {
                  "title": "param",
                  "name": "params.voipDeviceToken",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The voip device token used for voip push on iOS.\nThis token is required if registering for call service notifications on iOS."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.standardDeviceToken",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The standardDevice token used for standard push on iOS .\nThis token is required when registering for non-call service notifications."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.bundleId",
                  "lineNumber": 15,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The bundleId to identify the application receiving the push notification."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.clientCorrelator",
                  "lineNumber": 16,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Unique identifier for a client device."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.realm",
                  "lineNumber": 17,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The realm used by the push registration service to identify and\nestablish a connection with the service gateway."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.isProduction",
                  "lineNumber": 19,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "If true, push notification will be sent to production.\nIf false, push notification will be sent to sandbox."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "boolean"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "When successful,  the information of the registration.\nPromise will reject with error object otherwise."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Promise"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "notification",
          "kind": "function",
          "name": "registerApplePush",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "notification",
              "kind": "namespace"
            },
            {
              "name": "registerApplePush",
              "kind": "function"
            }
          ],
          "namespace": "notificationregisterApplePush"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Registers with Google push notification service. Once registration is successful, the application will be able to receive\nstandard and/or voip push notifications. It can then send these notifications to the SDK with "
                  },
                  {
                    "type": "link",
                    "url": "api.notifications.process",
                    "title": null,
                    "jsdoc": true,
                    "children": [
                      {
                        "type": "text",
                        "value": "api.notifications.process"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": "\nin order for the SDK to process them."
                  }
                ]
              }
            ]
          },
          "tags": [
            {
              "title": "public",
              "description": null,
              "lineNumber": 5,
              "type": null
            },
            {
              "title": "requires",
              "description": null,
              "lineNumber": 6,
              "name": "push"
            },
            {
              "title": "memberof",
              "description": "notification",
              "lineNumber": 7
            },
            {
              "title": "method",
              "description": null,
              "lineNumber": 8,
              "name": "registerAndroidPush"
            },
            {
              "title": "param",
              "description": null,
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "name": "params"
            },
            {
              "title": "param",
              "description": "Array of services to register for.",
              "lineNumber": 10,
              "type": {
                "type": "TypeApplication",
                "expression": {
                  "type": "NameExpression",
                  "name": "Array"
                },
                "applications": [
                  {
                    "type": "NameExpression",
                    "name": "string"
                  }
                ]
              },
              "name": "params.services"
            },
            {
              "title": "param",
              "description": "The device token used for standard push on Android. This token is required\n                                     when registering for all related services notifications.",
              "lineNumber": 11,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.deviceToken"
            },
            {
              "title": "param",
              "description": "The bundleId to identify the application receiving the push notification.",
              "lineNumber": 13,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.bundleId"
            },
            {
              "title": "param",
              "description": "Unique identifier for a client device.",
              "lineNumber": 14,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.clientCorrelator"
            },
            {
              "title": "param",
              "description": "The realm used by the push registration service to identify\n                               and establish a connection with the service gateway.",
              "lineNumber": 15,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "params.realm"
            },
            {
              "title": "return",
              "description": "When successful,  the information of the registration.\n                  Promise will reject with error object otherwise.",
              "lineNumber": 17,
              "type": {
                "type": "NameExpression",
                "name": "Promise"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 96,
              "column": 4
            },
            "end": {
              "line": 115,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 116,
                "column": 4
              },
              "end": {
                "line": 133,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/notifications/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "params",
              "lineNumber": 9,
              "type": {
                "type": "NameExpression",
                "name": "Object"
              },
              "properties": [
                {
                  "title": "param",
                  "name": "params.services",
                  "lineNumber": 10,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Array of services to register for."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "TypeApplication",
                    "expression": {
                      "type": "NameExpression",
                      "name": "Array"
                    },
                    "applications": [
                      {
                        "type": "NameExpression",
                        "name": "string"
                      }
                    ]
                  }
                },
                {
                  "title": "param",
                  "name": "params.deviceToken",
                  "lineNumber": 11,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The device token used for standard push on Android. This token is required\nwhen registering for all related services notifications."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.bundleId",
                  "lineNumber": 13,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The bundleId to identify the application receiving the push notification."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.clientCorrelator",
                  "lineNumber": 14,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "Unique identifier for a client device."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                },
                {
                  "title": "param",
                  "name": "params.realm",
                  "lineNumber": 15,
                  "description": {
                    "type": "root",
                    "children": [
                      {
                        "type": "paragraph",
                        "children": [
                          {
                            "type": "text",
                            "value": "The realm used by the push registration service to identify\nand establish a connection with the service gateway."
                          }
                        ]
                      }
                    ]
                  },
                  "type": {
                    "type": "NameExpression",
                    "name": "string"
                  }
                }
              ]
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "When successful,  the information of the registration.\nPromise will reject with error object otherwise."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Promise"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "notification",
          "kind": "function",
          "name": "registerAndroidPush",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "notification",
              "kind": "namespace"
            },
            {
              "name": "registerAndroidPush",
              "kind": "function"
            }
          ],
          "namespace": "notificationregisterAndroidPush"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Unregister Apple 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": "method",
              "description": null,
              "lineNumber": 6,
              "name": "unregisterApplePush"
            },
            {
              "title": "param",
              "description": "The data returned from the push registration",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "registrationInfo"
            },
            {
              "title": "return",
              "description": "When successful, the promise will resolve with undefined.\n                  Promise will reject with error object otherwise.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Promise"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 135,
              "column": 4
            },
            "end": {
              "line": 145,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 146,
                "column": 4
              },
              "end": {
                "line": 152,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/notifications/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "registrationInfo",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The data returned from the push registration"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "When successful, the promise will resolve with undefined.\nPromise will reject with error object otherwise."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Promise"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "notification",
          "kind": "function",
          "name": "unregisterApplePush",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "notification",
              "kind": "namespace"
            },
            {
              "name": "unregisterApplePush",
              "kind": "function"
            }
          ],
          "namespace": "notificationunregisterApplePush"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Unregister Android 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": "method",
              "description": null,
              "lineNumber": 6,
              "name": "unregisterAndroidPush"
            },
            {
              "title": "param",
              "description": "The data returned from the push registration",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "string"
              },
              "name": "registrationInfo"
            },
            {
              "title": "return",
              "description": "When successful, the promise will resolve with undefined.\n                  Promise will reject with error object otherwise.",
              "lineNumber": 8,
              "type": {
                "type": "NameExpression",
                "name": "Promise"
              }
            }
          ],
          "loc": {
            "start": {
              "line": 154,
              "column": 4
            },
            "end": {
              "line": 164,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 165,
                "column": 4
              },
              "end": {
                "line": 171,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/notifications/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "registrationInfo",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "The data returned from the push registration"
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "string"
              }
            }
          ],
          "properties": [],
          "returns": [
            {
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "When successful, the promise will resolve with undefined.\nPromise will reject with error object otherwise."
                      }
                    ]
                  }
                ]
              },
              "title": "returns",
              "type": {
                "type": "NameExpression",
                "name": "Promise"
              }
            }
          ],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "notification",
          "kind": "function",
          "name": "unregisterAndroidPush",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "notification",
              "kind": "namespace"
            },
            {
              "name": "unregisterAndroidPush",
              "kind": "function"
            }
          ],
          "namespace": "notificationunregisterAndroidPush"
        },
        {
          "description": {
            "type": "root",
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Enables, or disables, the processing of websocket 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": "method",
              "description": null,
              "lineNumber": 6,
              "name": "enableWebsocket"
            },
            {
              "title": "param",
              "description": "Whether the websocket channel should be enabled.",
              "lineNumber": 7,
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              },
              "name": "enable"
            }
          ],
          "loc": {
            "start": {
              "line": 173,
              "column": 4
            },
            "end": {
              "line": 181,
              "column": 7
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 182,
                "column": 4
              },
              "end": {
                "line": 189,
                "column": 5
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/notifications/interface/api.js"
          },
          "augments": [],
          "examples": [],
          "implements": [],
          "params": [
            {
              "title": "param",
              "name": "enable",
              "lineNumber": 7,
              "description": {
                "type": "root",
                "children": [
                  {
                    "type": "paragraph",
                    "children": [
                      {
                        "type": "text",
                        "value": "Whether the websocket channel should be enabled."
                      }
                    ]
                  }
                ]
              },
              "type": {
                "type": "NameExpression",
                "name": "boolean"
              }
            }
          ],
          "properties": [],
          "returns": [],
          "sees": [],
          "throws": [],
          "todos": [],
          "yields": [],
          "access": "public",
          "memberof": "notification",
          "kind": "function",
          "name": "enableWebsocket",
          "members": {
            "global": [],
            "inner": [],
            "instance": [],
            "events": [],
            "static": []
          },
          "path": [
            {
              "name": "notification",
              "kind": "namespace"
            },
            {
              "name": "enableWebsocket",
              "kind": "function"
            }
          ],
          "namespace": "notificationenableWebsocket"
        }
      ]
    },
    "path": [
      {
        "name": "notification",
        "kind": "namespace"
      }
    ],
    "namespace": "notification"
  },
  {
    "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": 20,
        "column": 6
      },
      "end": {
        "line": 25,
        "column": 9
      }
    },
    "context": {
      "loc": {
        "start": {
          "line": 55,
          "column": 6
        },
        "end": {
          "line": 65,
          "column": 7
        }
      },
      "file": "/var/jenkins_home/workspace/Kandy.js_master/packages/kandy/src/request/interface/api.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": 27,
              "column": 6
            },
            "end": {
              "line": 54,
              "column": 9
            }
          },
          "context": {
            "loc": {
              "start": {
                "line": 55,
                "column": 6
              },
              "end": {
                "line": 65,
                "column": 7
              }
            },
            "file": "/var/jenkins_home/workspace/Kandy.js_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 'kandy';\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": "/var/jenkins_home/workspace/Kandy.js_master/builds/core/index.js"
    },
    "augments": [],
    "examples": [
      {
        "description": "import { create, sdpHandlers } from 'kandy';\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": "/var/jenkins_home/workspace/Kandy.js_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 'kandy';\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: ['profile-level-id=4d0032', 'packetization-mode=1']\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": "/var/jenkins_home/workspace/Kandy.js_master/builds/core/index.js"
          },
          "augments": [],
          "examples": [
            {
              "description": "import { create, sdpHandlers } from 'kandy';\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: ['profile-level-id=4d0032', 'packetization-mode=1']\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"
  }
]