{
  "swagger": "2.0",
  "schemes": [
    "https"
  ],
  "host": "management.azure.com",
  "info": {
    "description": "Azure Bot Service is a platform for creating smart conversational agents.",
    "title": "Azure Bot Service",
    "version": "2017-12-01",
    "x-apisguru-categories": [
      "cloud"
    ],
    "x-logo": {
      "url": "https://api.apis.guru/v2/cache/logo/https_assets.onestore.ms_cdnfiles_onestorerolling-1606-01000_shell_v3_images_logo_microsoft.png"
    },
    "x-origin": [
      {
        "format": "swagger",
        "url": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/botservice/resource-manager/Microsoft.BotService/preview/2017-12-01/botservice.json",
        "version": "2.0"
      }
    ],
    "x-preferred": false,
    "x-providerName": "azure.com",
    "x-serviceName": "botservice",
    "x-tags": [
      "Azure",
      "Microsoft"
    ]
  },
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "securityDefinitions": {
    "azure_auth": {
      "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
      "description": "Azure Active Directory OAuth2 Flow",
      "flow": "implicit",
      "scopes": {
        "user_impersonation": "impersonate your user account"
      },
      "type": "oauth2"
    }
  },
  "parameters": {
    "apiVersionParameter": {
      "description": "Version of the API to be used with the client request. Current version is 2017-12-01",
      "in": "query",
      "name": "api-version",
      "required": true,
      "type": "string"
    },
    "channelNameParameter": {
      "description": "The name of the Channel resource.",
      "enum": [
        "FacebookChannel",
        "EmailChannel",
        "KikChannel",
        "TelegramChannel",
        "SlackChannel",
        "MsTeamsChannel",
        "SkypeChannel",
        "WebChatChannel",
        "DirectLineChannel",
        "SmsChannel"
      ],
      "in": "path",
      "name": "channelName",
      "required": true,
      "type": "string",
      "x-ms-enum": {
        "modelAsString": false,
        "name": "channelName",
        "values": [
          {
            "value": "FacebookChannel"
          },
          {
            "value": "EmailChannel"
          },
          {
            "value": "KikChannel"
          },
          {
            "value": "TelegramChannel"
          },
          {
            "value": "SlackChannel"
          },
          {
            "value": "MsTeamsChannel"
          },
          {
            "value": "SkypeChannel"
          },
          {
            "value": "WebChatChannel"
          },
          {
            "value": "DirectLineChannel"
          },
          {
            "value": "SmsChannel"
          }
        ]
      },
      "x-ms-parameter-location": "method"
    },
    "connectionNameParameter": {
      "description": "The name of the Bot Service Connection Setting resource",
      "in": "path",
      "maxLength": 64,
      "minLength": 2,
      "name": "connectionName",
      "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "resourceGroupNameParameter": {
      "description": "The name of the Bot resource group in the user subscription.",
      "in": "path",
      "maxLength": 64,
      "minLength": 2,
      "name": "resourceGroupName",
      "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "resourceNameParameter": {
      "description": "The name of the Bot resource.",
      "in": "path",
      "maxLength": 64,
      "minLength": 2,
      "name": "resourceName",
      "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "subscriptionIdParameter": {
      "description": "Azure Subscription ID.",
      "in": "path",
      "name": "subscriptionId",
      "required": true,
      "type": "string"
    }
  },
  "paths": {
    "/providers/Microsoft.BotService/botServices/checkNameAvailability": {
      "get": {
        "description": "Check whether a bot name is available.",
        "operationId": "Bots_GetCheckNameAvailability",
        "parameters": [
          {
            "description": "The request body parameters to provide for the check name availability request",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CheckNameAvailabilityRequestBody"
            }
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The resource provider should return 200 (OK) to indicate that the operation completed successfully. For other errors (e.g. internal errors) use the appropriate HTTP error code.\nThe nextLink field is expected to point to the URL the client should use to fetch the next page (per server side paging). This matches the OData guidelines for paged responses. If a resource provider does not support paging, it should return the same body but leave nextLink empty for future compatibility.\nFor a detailed explanation of each field in the response body, please refer to the request body description in the PUT resource section. ",
            "schema": {
              "$ref": "#/definitions/CheckNameAvailabilityResponseBody"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Bot"
        ],
        "x-ms-examples": {
          "List Bots by Subscription": {
            "parameters": {
              "api-version": "2017-01-01",
              "parameters": {
                "name": "testbotname",
                "type": "string"
              }
            },
            "responses": {
              "200": {
                "body": {
                  "message": "custom message from server",
                  "valid": true
                }
              }
            }
          }
        }
      }
    },
    "/providers/Microsoft.BotService/operations": {
      "get": {
        "deprecated": false,
        "description": "Lists all the available BotService operations.",
        "operationId": "Operations_List",
        "parameters": [
          {
            "$ref": "#/parameters/apiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "schema": {
              "$ref": "#/definitions/OperationEntityListResult"
            }
          }
        },
        "tags": [
          "Operations"
        ],
        "x-ms-examples": {
          "Get Operations": {
            "parameters": {
              "api-version": "2017-04-18"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "display": {
                        "description": "Read Bot Service",
                        "operation": "Read Bot Service",
                        "provider": "Microsoft Bot Service",
                        "resource": "Bot Service"
                      },
                      "name": "Microsoft.BotService/botService/read",
                      "origin": "user,system"
                    },
                    {
                      "display": {
                        "description": "Writes Bot Service",
                        "operation": "Write Bot Service",
                        "provider": "Microsoft Bot Service",
                        "resource": "Bot Service"
                      },
                      "name": "Microsoft.BotService/botService/write",
                      "origin": "user,system"
                    },
                    {
                      "display": {
                        "description": "Deletes Bot Service",
                        "operation": "Delete Bot Service",
                        "provider": "Microsoft Bot Service",
                        "resource": "Bot Service"
                      },
                      "name": "Microsoft.BotService/botService/delete",
                      "origin": "user,system"
                    },
                    {
                      "display": {
                        "description": "Check bot name availability",
                        "operation": "Check bot name availability",
                        "provider": "Microsoft Bot Service",
                        "resource": "Bot Service name availability"
                      },
                      "name": "Microsoft.BotService/botService/botName/read",
                      "origin": "user,system"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.BotService/botServices": {
      "get": {
        "description": "Returns all the resources of a particular type belonging to a subscription.",
        "operationId": "Bots_List",
        "parameters": [
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The resource provider should return 200 (OK) to indicate that the operation completed successfully. For other errors (e.g. internal errors) use the appropriate HTTP error code.\nThe nextLink field is expected to point to the URL the client should use to fetch the next page (per server side paging). This matches the OData guidelines for paged responses. If a resource provider does not support paging, it should return the same body but leave nextLink empty for future compatibility.\nFor a detailed explanation of each field in the response body, please refer to the request body description in the PUT resource section. ",
            "schema": {
              "$ref": "#/definitions/BotResponseList"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Bot"
        ],
        "x-ms-examples": {
          "List Bots by Subscription": {
            "parameters": {
              "api-version": "2017-01-01",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "etag": "etag1",
                      "id": "someid",
                      "kind": "sdk",
                      "location": "West US",
                      "name": "samplename",
                      "properties": {
                        "configuredChannels": [
                          "facebook",
                          "groupme"
                        ],
                        "description": "The description of the bot",
                        "developerAppInsightKey": "appinsightskey",
                        "developerAppInsightsApplicationId": "appinsightsappid",
                        "displayName": "The Name of the bot",
                        "enabledChannels": [
                          "facebook"
                        ],
                        "endpoint": "http://mybot.coffee",
                        "endpointVersion": "version",
                        "iconUrl": "http://myicon",
                        "luisAppIds": [
                          "luisappid1",
                          "luisappid2"
                        ],
                        "msaAppId": "msaappid"
                      },
                      "tags": {
                        "tag1": "value1",
                        "tag2": "value2"
                      },
                      "type": "sampletype"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.BotService/listAuthServiceProviders": {
      "post": {
        "description": "Lists the available Service Providers for creating Connection Settings",
        "operationId": "BotConnection_ListServiceProviders",
        "parameters": [
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "If resource is retrieved successfully, the service should return 200 (OK).",
            "schema": {
              "$ref": "#/definitions/ServiceProviderResponseList"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "ListServiceProviders"
        ],
        "x-ms-examples": {
          "List Auth Service Providers": {
            "parameters": {
              "api-version": "2017-01-01",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "properties": {
                        "devPortalUrl": "sampleDevPortalUrl",
                        "displayName": "sample display name",
                        "iconUrl": "sampleIconUrl",
                        "id": "sampleId",
                        "parameters": [
                          {
                            "default": "sampleDefaultValue",
                            "description": "sampleDescription",
                            "displayName": "sampleDisplayName",
                            "helpUrl": "sampleHelpUrl",
                            "name": "sampleParameterName",
                            "type": "sampleParameterType"
                          }
                        ],
                        "serviceProviderName": "sampleServiceProvider"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices": {
      "get": {
        "description": "Returns all the resources of a particular type belonging to a resource group",
        "operationId": "Bots_ListByResourceGroup",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The resource provider should return 200 (OK) to indicate that the operation completed successfully. For other errors (e.g. internal errors) use the appropriate HTTP error code.\nThe nextLink field is expected to point to the URL the client should use to fetch the next page (per server side paging). This matches the OData guidelines for paged responses here. If a resource provider does not support paging, it should return the same body (JSON object with \"value\" property) but omit nextLink entirely (or set to null, *not* empty string) for future compatibility.\nThe nextLink should be implemented using following query parameters:\n· skipToken: opaque token that allows the resource provider to skip resources already enumerated. This value is defined and returned by the RP after first request via nextLink.\n· top: the optional client query parameter which defines the maximum number of records to be returned by the server.\nImplementation details:\n· NextLink may include all the query parameters (specifically OData $filter) used by the client in the first query. \n· Server may return less records than requested with nextLink. Returning zero records with NextLink is an acceptable response. \nClients must fetch records until the nextLink is not returned back / null. Clients should never rely on number of returned records to determinate if pagination is completed.",
            "schema": {
              "$ref": "#/definitions/BotResponseList"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed. If the resource group does not exist, 404 (NotFound) will be returned.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Bot"
        ],
        "x-ms-examples": {
          "List Bots by Resource Group": {
            "parameters": {
              "api-version": "2017-01-01",
              "resourceGroupName": "OneResourceGroupName",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "etag": "etag1",
                      "id": "someid",
                      "kind": "sdk",
                      "location": "West US",
                      "name": "samplename",
                      "properties": {
                        "configuredChannels": [
                          "facebook",
                          "groupme"
                        ],
                        "description": "The description of the bot",
                        "developerAppInsightKey": "appinsightskey",
                        "developerAppInsightsApplicationId": "appinsightsappid",
                        "displayName": "The Name of the bot",
                        "enabledChannels": [
                          "facebook"
                        ],
                        "endpoint": "http://mybot.coffee",
                        "endpointVersion": "version",
                        "iconUrl": "http://myicon",
                        "luisAppIds": [
                          "luisappid1",
                          "luisappid2"
                        ],
                        "msaAppId": "msaappid"
                      },
                      "tags": {
                        "tag1": "value1",
                        "tag2": "value2"
                      },
                      "type": "sampletype"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}": {
      "delete": {
        "description": "Deletes a Bot Service from the resource group. ",
        "operationId": "Bots_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "A 200 (OK) should be returned if the object exists and was deleted successfully;"
          },
          "204": {
            "description": "a 204 (NoContent) should be used if the resource does not exist and the request is well formed."
          },
          "default": {
            "description": "Error response describing why the operation failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Bot"
        ],
        "x-ms-examples": {
          "Delete Bot": {
            "parameters": {
              "api-version": "2017-01-01",
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {},
              "204": {}
            }
          }
        }
      },
      "get": {
        "description": "Returns a BotService specified by the parameters.",
        "operationId": "Bots_Get",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The resource provider should return 200 (OK) to indicate that the operation completed successfully. ",
            "schema": {
              "$ref": "#/definitions/Bot"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed. If the resource group *or* resource does not exist, 404 (NotFound) should be returned.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Bot"
        ],
        "x-ms-examples": {
          "Get Bot": {
            "parameters": {
              "api-version": "2017-01-01",
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "etag": "etag1",
                  "id": "someid",
                  "kind": "sdk",
                  "location": "West US",
                  "name": "samplename",
                  "properties": {
                    "configuredChannels": [
                      "facebook",
                      "groupme"
                    ],
                    "description": "The description of the bot",
                    "developerAppInsightKey": "appinsightskey",
                    "developerAppInsightsApplicationId": "appinsightsappid",
                    "displayName": "The Name of the bot",
                    "enabledChannels": [
                      "facebook"
                    ],
                    "endpoint": "http://mybot.coffee",
                    "endpointVersion": "version",
                    "iconUrl": "http://myicon",
                    "luisAppIds": [
                      "luisappid1",
                      "luisappid2"
                    ],
                    "msaAppId": "msaappid"
                  },
                  "tags": {
                    "tag1": "value1",
                    "tag2": "value2"
                  },
                  "type": "sampletype"
                }
              }
            }
          }
        }
      },
      "patch": {
        "description": "Updates a Bot Service",
        "operationId": "Bots_Update",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "description": "The parameters to provide for the created bot.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Bot"
            },
            "x-ms-client-flatten": true
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The resource provider should return 200 (OK) to indicate that the operation completed successfully. ",
            "schema": {
              "$ref": "#/definitions/Bot"
            }
          },
          "201": {
            "description": "If resource is updated successfully, the service should return 201 (Created). Execution to continue asynchronously.",
            "schema": {
              "$ref": "#/definitions/Bot"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed. If the resource group *or* resource does not exist, 404 (NotFound) should be returned.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Bot"
        ],
        "x-ms-examples": {
          "Update Bot": {
            "parameters": {
              "api-version": "2017-01-01",
              "parameters": {
                "etag": "etag1",
                "id": "someid",
                "kind": "sdk",
                "location": "West US",
                "name": "samplename",
                "properties": {
                  "description": "The description of the bot",
                  "developerAppInsightKey": "appinsightskey",
                  "developerAppInsightsApiKey": "appinsightsapikey",
                  "developerAppInsightsApplicationId": "appinsightsappid",
                  "displayName": "The Name of the bot",
                  "endpoint": "http://mybot.coffee",
                  "iconUrl": "http://myicon",
                  "luisAppIds": [
                    "luisappid1",
                    "luisappid2"
                  ],
                  "luisKey": "luiskey",
                  "msaAppId": "msaappid"
                },
                "sku": {
                  "name": "S1"
                },
                "tags": {
                  "tag1": "value1",
                  "tag2": "value2"
                },
                "type": "sampletype"
              },
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "etag": "etag1",
                  "id": "someid",
                  "kind": "sdk",
                  "location": "West US",
                  "name": "samplename",
                  "properties": {
                    "configuredChannels": [
                      "facebook",
                      "groupme"
                    ],
                    "description": "The description of the bot",
                    "developerAppInsightKey": "appinsightskey",
                    "developerAppInsightsApplicationId": "appinsightsappid",
                    "displayName": "The Name of the bot",
                    "enabledChannels": [
                      "facebook"
                    ],
                    "endpoint": "http://mybot.coffee",
                    "endpointVersion": "version",
                    "iconUrl": "http://myicon",
                    "luisAppIds": [
                      "luisappid1",
                      "luisappid2"
                    ],
                    "msaAppId": "msaappid"
                  },
                  "tags": {
                    "tag1": "value1",
                    "tag2": "value2"
                  },
                  "type": "sampletype"
                }
              },
              "201": {
                "body": {
                  "etag": "etag1",
                  "id": "someid",
                  "kind": "sdk",
                  "location": "West US",
                  "name": "samplename",
                  "properties": {
                    "configuredChannels": [
                      "facebook",
                      "groupme"
                    ],
                    "description": "The description of the bot",
                    "developerAppInsightKey": "appinsightskey",
                    "developerAppInsightsApplicationId": "appinsightsappid",
                    "displayName": "The Name of the bot",
                    "enabledChannels": [
                      "facebook"
                    ],
                    "endpoint": "http://mybot.coffee",
                    "endpointVersion": "version",
                    "iconUrl": "http://myicon",
                    "luisAppIds": [
                      "luisappid1",
                      "luisappid2"
                    ],
                    "msaAppId": "msaappid"
                  },
                  "tags": {
                    "tag1": "value1",
                    "tag2": "value2"
                  },
                  "type": "sampletype"
                }
              }
            }
          }
        }
      },
      "put": {
        "description": "Creates a Bot Service. Bot Service is a resource group wide resource type.",
        "operationId": "Bots_Create",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "description": "The parameters to provide for the created bot.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Bot"
            }
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "If resource is created successfully or already existed, the service should return 200 (OK).",
            "schema": {
              "$ref": "#/definitions/Bot"
            }
          },
          "201": {
            "description": "If resource is created successfully, the service should return 201 (Created). Execution to continue asynchronously.",
            "schema": {
              "$ref": "#/definitions/Bot"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Bot"
        ],
        "x-ms-examples": {
          "Create Bot": {
            "parameters": {
              "api-version": "2017-01-01",
              "parameters": {
                "etag": "etag1",
                "id": "someid",
                "kind": "sdk",
                "location": "West US",
                "name": "samplename",
                "properties": {
                  "description": "The description of the bot",
                  "developerAppInsightKey": "appinsightskey",
                  "developerAppInsightsApiKey": "appinsightsapikey",
                  "developerAppInsightsApplicationId": "appinsightsappid",
                  "displayName": "The Name of the bot",
                  "endpoint": "http://mybot.coffee",
                  "iconUrl": "http://myicon",
                  "luisAppIds": [
                    "luisappid1",
                    "luisappid2"
                  ],
                  "luisKey": "luiskey",
                  "msaAppId": "exampleappid"
                },
                "sku": {
                  "name": "S1"
                },
                "tags": {
                  "tag1": "value1",
                  "tag2": "value2"
                },
                "type": "sampletype"
              },
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "etag": "etag1",
                  "id": "someid",
                  "kind": "sdk",
                  "location": "West US",
                  "name": "samplename",
                  "properties": {
                    "configuredChannels": [
                      "facebook",
                      "groupme"
                    ],
                    "description": "The description of the bot",
                    "developerAppInsightKey": "appinsightskey",
                    "developerAppInsightsApplicationId": "appinsightsappid",
                    "displayName": "The Name of the bot",
                    "enabledChannels": [
                      "facebook"
                    ],
                    "endpoint": "http://mybot.coffee",
                    "endpointVersion": "version",
                    "iconUrl": "http://myicon",
                    "luisAppIds": [
                      "luisappid1",
                      "luisappid2"
                    ],
                    "msaAppId": "msaappid"
                  },
                  "tags": {
                    "tag1": "value1",
                    "tag2": "value2"
                  },
                  "type": "sampletype"
                }
              },
              "201": {
                "body": {
                  "id": "someid",
                  "kind": "sdk",
                  "location": "West US",
                  "name": "samplename",
                  "properties": {
                    "configuredChannels": [
                      "facebook",
                      "groupme"
                    ],
                    "description": "The description of the bot",
                    "developerAppInsightsApplicationId": "appinsightsappid",
                    "displayName": "The Name of the bot",
                    "enabledChannels": [
                      "facebook"
                    ],
                    "endpoint": "http://mybot.coffee",
                    "endpointVersion": "version",
                    "iconUrl": "http://myicon",
                    "luisAppIds": [
                      "luisappid1",
                      "luisappid2"
                    ],
                    "msaAppId": "msaappid"
                  },
                  "tags": {
                    "tag1": "value1",
                    "tag2": "value2"
                  },
                  "type": "sampletype"
                }
              }
            }
          }
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/Connections/{connectionName}": {
      "delete": {
        "description": "Deletes a Connection Setting registration for a Bot Service",
        "operationId": "BotConnection_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "$ref": "#/parameters/connectionNameParameter"
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "A 200 (OK) should be returned if the object exists and was deleted successfully;"
          },
          "204": {
            "description": "a 204 (NoContent) should be used if the resource does not exist and the request is well formed."
          },
          "default": {
            "description": "Error response describing why the operation failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "BotConnection"
        ],
        "x-ms-examples": {
          "Update Connection Setting": {
            "parameters": {
              "api-version": "2017-01-01",
              "connectionName": "sampleConnection",
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {},
              "204": {}
            }
          }
        }
      },
      "get": {
        "description": "Get a Connection Setting registration for a Bot Service",
        "operationId": "BotConnection_Get",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "$ref": "#/parameters/connectionNameParameter"
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The resource provider should return 200 (OK) to indicate that the operation completed successfully. ",
            "schema": {
              "$ref": "#/definitions/ConnectionSetting"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed. If the resource group *or* resource does not exist, 404 (NotFound) should be returned.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "BotConnection"
        ],
        "x-ms-examples": {
          "Update Connection Setting": {
            "parameters": {
              "api-version": "2017-01-01",
              "connectionName": "sampleConnection",
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "etag": "etag1",
                  "id": "someid",
                  "location": "global",
                  "name": "The Name of the Connection Setting",
                  "properties": {
                    "clientId": "sampleclientid",
                    "clientSecret": "samplesecret",
                    "parameters": [
                      {
                        "key": "key1",
                        "value": "value1"
                      },
                      {
                        "key": "key2",
                        "value": "value2"
                      }
                    ],
                    "scopes": "samplescope",
                    "serviceProviderDisplayName": "serviceProviderDisplayName",
                    "serviceProviderId": "serviceproviderid"
                  }
                }
              }
            }
          }
        }
      },
      "patch": {
        "description": "Updates a Connection Setting registration for a Bot Service",
        "operationId": "BotConnection_Update",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "$ref": "#/parameters/connectionNameParameter"
          },
          {
            "description": "The parameters to provide for updating the Connection Setting.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConnectionSetting"
            }
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "If resource is created successfully or already existed, the service should return 200 (OK).",
            "schema": {
              "$ref": "#/definitions/ConnectionSetting"
            }
          },
          "201": {
            "description": "If resource is created successfully, the service should return 201 (Created). Execution to continue asynchronously.",
            "schema": {
              "$ref": "#/definitions/ConnectionSetting"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "BotConnection"
        ],
        "x-ms-examples": {
          "Update Connection Setting": {
            "parameters": {
              "api-version": "2017-01-01",
              "connectionName": "sampleConnection",
              "parameters": {
                "etag": "etag1",
                "id": "someid",
                "location": "global",
                "name": "The Name of the Connection Setting",
                "properties": {
                  "clientId": "sampleclientid",
                  "clientSecret": "samplesecret",
                  "parameters": [
                    {
                      "key": "key1",
                      "value": "value1"
                    },
                    {
                      "key": "key2",
                      "value": "value2"
                    }
                  ],
                  "scopes": "samplescope",
                  "serviceProviderDisplayName": "serviceProviderDisplayName",
                  "serviceProviderId": "serviceproviderid"
                }
              },
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "someid",
                  "location": "global",
                  "name": "The Name of the Connection Setting",
                  "properties": {
                    "clientId": "sampleclientid",
                    "clientSecret": "samplesecret",
                    "parameters": [
                      {
                        "key": "key1",
                        "value": "value1"
                      },
                      {
                        "key": "key2",
                        "value": "value2"
                      }
                    ],
                    "scopes": "samplescope",
                    "serviceProviderDisplayName": "serviceProviderDisplayName",
                    "serviceProviderId": "serviceproviderid"
                  }
                }
              },
              "201": {
                "body": {
                  "etag": "etag1",
                  "id": "someid",
                  "location": "global",
                  "name": "The Name of the Connection Setting",
                  "properties": {
                    "clientId": "sampleclientid",
                    "clientSecret": "samplesecret",
                    "parameters": [
                      {
                        "key": "key1",
                        "value": "value1"
                      },
                      {
                        "key": "key2",
                        "value": "value2"
                      }
                    ],
                    "scopes": "samplescope",
                    "serviceProviderDisplayName": "serviceProviderDisplayName",
                    "serviceProviderId": "serviceproviderid"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "description": "Register a new Auth Connection for a Bot Service",
        "operationId": "BotConnection_Create",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "$ref": "#/parameters/connectionNameParameter"
          },
          {
            "description": "The parameters to provide for creating the Connection Setting.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConnectionSetting"
            }
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "If resource is created successfully or already existed, the service should return 200 (OK).",
            "schema": {
              "$ref": "#/definitions/ConnectionSetting"
            }
          },
          "201": {
            "description": "If resource is created successfully, the service should return 201 (Created). Execution to continue asynchronously.",
            "schema": {
              "$ref": "#/definitions/ConnectionSetting"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "BotConnection"
        ],
        "x-ms-examples": {
          "Create Connection Setting": {
            "parameters": {
              "api-version": "2017-01-01",
              "connectionName": "sampleConnection",
              "parameters": {
                "etag": "etag1",
                "id": "someid",
                "location": "West US",
                "name": "samplename",
                "properties": {
                  "clientId": "sampleclientid",
                  "clientSecret": "samplesecret",
                  "parameters": [
                    {
                      "key": "key1",
                      "value": "value1"
                    },
                    {
                      "key": "key2",
                      "value": "value2"
                    }
                  ],
                  "scopes": "samplescope",
                  "serviceProviderId": "serviceproviderid"
                },
                "type": "sampletype"
              },
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "etag": "etag1",
                  "id": "someid",
                  "location": "global",
                  "name": "The Name of the Connection Setting",
                  "properties": {
                    "clientId": "sampleclientid",
                    "clientSecret": "samplesecret",
                    "parameters": [
                      {
                        "key": "key1",
                        "value": "value1"
                      },
                      {
                        "key": "key2",
                        "value": "value2"
                      }
                    ],
                    "scopes": "samplescope",
                    "serviceProviderDisplayName": "serviceProviderDisplayName",
                    "serviceProviderId": "serviceproviderid"
                  }
                }
              },
              "201": {
                "body": {
                  "etag": "etag1",
                  "id": "someid",
                  "location": "global",
                  "name": "The Name of the Connection Setting",
                  "properties": {
                    "clientId": "sampleclientid",
                    "clientSecret": "samplesecret",
                    "parameters": [
                      {
                        "key": "key1",
                        "value": "value1"
                      },
                      {
                        "key": "key2",
                        "value": "value2"
                      }
                    ],
                    "scopes": "samplescope",
                    "serviceProviderDisplayName": "serviceProviderDisplayName",
                    "serviceProviderId": "serviceproviderid"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/Connections/{connectionName}/listWithSecrets": {
      "post": {
        "description": "Get a Connection Setting registration for a Bot Service",
        "operationId": "BotConnection_ListWithSecrets",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "$ref": "#/parameters/connectionNameParameter"
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The resource provider should return 200 (OK) to indicate that the operation completed successfully. ",
            "schema": {
              "$ref": "#/definitions/ConnectionSetting"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed. If the resource group *or* resource does not exist, 404 (NotFound) should be returned.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "BotConnection"
        ],
        "x-ms-examples": {
          "Update Connection Setting": {
            "parameters": {
              "api-version": "2017-01-01",
              "connectionName": "sampleConnection",
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "etag": "etag1",
                  "id": "someid",
                  "location": "global",
                  "name": "The Name of the Connection Setting",
                  "properties": {
                    "clientId": "sampleclientid",
                    "clientSecret": "samplesecret",
                    "parameters": [
                      {
                        "key": "key1",
                        "value": "value1"
                      },
                      {
                        "key": "key2",
                        "value": "value2"
                      }
                    ],
                    "scopes": "samplescope",
                    "serviceProviderDisplayName": "serviceProviderDisplayName",
                    "serviceProviderId": "serviceproviderid"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/channels": {
      "get": {
        "description": "Returns all the Channel registrations of a particular BotService resource",
        "operationId": "Channels_ListByResourceGroup",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The resource provider should return 200 (OK) to indicate that the operation completed successfully. For other errors (e.g. internal errors) use the appropriate HTTP error code.\nThe nextLink field is expected to point to the URL the client should use to fetch the next page (per server side paging). This matches the OData guidelines for paged responses here. If a resource provider does not support paging, it should return the same body (JSON object with \"value\" property) but omit nextLink entirely (or set to null, *not* empty string) for future compatibility.\nThe nextLink should be implemented using following query parameters:\n· skipToken: opaque token that allows the resource provider to skip resources already enumerated. This value is defined and returned by the RP after first request via nextLink.\n· top: the optional client query parameter which defines the maximum number of records to be returned by the server.\nImplementation details:\n· NextLink may include all the query parameters (specifically OData $filter) used by the client in the first query. \n· Server may return less records than requested with nextLink. Returning zero records with NextLink is an acceptable response. \nClients must fetch records until the nextLink is not returned back / null. Clients should never rely on number of returned records to determinate if pagination is completed.",
            "schema": {
              "$ref": "#/definitions/ChannelResponseList"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed. If the resource group does not exist, 404 (NotFound) will be returned.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Channel"
        ],
        "x-ms-examples": {
          "List Bots by Resource Group": {
            "parameters": {
              "api-version": "2017-01-01",
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "location": "global",
                      "properties": {
                        "channelName": "EmailChannel",
                        "properties": {
                          "emailAddress": "a@b.com",
                          "isEnabled": true,
                          "password": "pwd"
                        }
                      }
                    },
                    {
                      "location": "global",
                      "properties": {
                        "channelName": "FacebookChannel",
                        "properties": {
                          "appId": "id",
                          "appSecret": "secret",
                          "callbackUrl": "appid",
                          "isEnabled": true,
                          "pages": [
                            {
                              "accessToken": "token",
                              "id": "id"
                            }
                          ],
                          "verifyToken": "othertoken"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/channels/{channelName}": {
      "delete": {
        "description": "Deletes a Channel registration from a Bot Service",
        "operationId": "Channels_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "description": "The name of the Bot resource.",
            "in": "path",
            "maxLength": 64,
            "minLength": 2,
            "name": "channelName",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "A 200 (OK) should be returned if the object exists and was deleted successfully;"
          },
          "204": {
            "description": "a 204 (NoContent) should be used if the resource does not exist and the request is well formed."
          },
          "default": {
            "description": "Error response describing why the operation failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Channel"
        ],
        "x-ms-examples": {
          "Delete Bot": {
            "parameters": {
              "api-version": "2017-01-01",
              "channelName": "EmailChannel",
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {},
              "204": {}
            }
          }
        }
      },
      "get": {
        "description": "Returns a BotService Channel registration specified by the parameters.",
        "operationId": "Channels_Get",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "description": "The name of the Bot resource.",
            "in": "path",
            "maxLength": 64,
            "minLength": 2,
            "name": "channelName",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The resource provider should return 200 (OK) to indicate that the operation completed successfully. ",
            "schema": {
              "$ref": "#/definitions/BotChannel"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed. If the resource group *or* resource does not exist, 404 (NotFound) should be returned.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Channel"
        ],
        "x-ms-examples": {
          "Get Bot": {
            "parameters": {
              "api-version": "2017-01-01",
              "channelName": "EmailChannel",
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "location": "global",
                  "properties": {
                    "channelName": "EmailChannel",
                    "properties": {
                      "emailAddress": "a@b.com",
                      "isEnabled": true,
                      "password": "pwd"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "patch": {
        "description": "Updates a Channel registration for a Bot Service",
        "operationId": "Channels_Update",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "$ref": "#/parameters/channelNameParameter"
          },
          {
            "description": "The parameters to provide for the created bot.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BotChannel"
            },
            "x-ms-client-flatten": true
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The resource provider should return 200 (OK) to indicate that the operation completed successfully. ",
            "schema": {
              "$ref": "#/definitions/BotChannel"
            }
          },
          "201": {
            "description": "If resource is updated successfully, the service should return 201 (Created). Execution to continue asynchronously.",
            "schema": {
              "$ref": "#/definitions/BotChannel"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed. If the resource group *or* resource does not exist, 404 (NotFound) should be returned.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Channel"
        ],
        "x-ms-examples": {
          "Update Bot": {
            "parameters": {
              "api-version": "2017-01-01",
              "channelName": "EmailChannel",
              "parameters": {
                "location": "global",
                "properties": {
                  "channelName": "EmailChannel",
                  "properties": {
                    "emailAddress": "a@b.com",
                    "isEnabled": true,
                    "password": "pwd"
                  }
                }
              },
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "location": "global",
                  "properties": {
                    "channelName": "EmailChannel",
                    "properties": {
                      "emailAddress": "a@b.com",
                      "isEnabled": true,
                      "password": "pwd"
                    }
                  }
                }
              },
              "201": {
                "body": {
                  "location": "global",
                  "properties": {
                    "channelName": "EmailChannel",
                    "properties": {
                      "emailAddress": "a@b.com",
                      "isEnabled": true,
                      "password": "pwd"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "description": "Creates a Channel registration for a Bot Service",
        "operationId": "Channels_Create",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "$ref": "#/parameters/channelNameParameter"
          },
          {
            "description": "The parameters to provide for the created bot.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BotChannel"
            }
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "If resource is created successfully or already existed, the service should return 200 (OK).",
            "schema": {
              "$ref": "#/definitions/BotChannel"
            }
          },
          "201": {
            "description": "If resource is created successfully, the service should return 201 (Created). Execution to continue asynchronously.",
            "schema": {
              "$ref": "#/definitions/BotChannel"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Channel"
        ],
        "x-ms-examples": {
          "Create Bot": {
            "parameters": {
              "api-version": "2017-01-01",
              "channelName": "EmailChannel",
              "parameters": {
                "location": "global",
                "properties": {
                  "channelName": "EmailChannel",
                  "properties": {
                    "emailAddress": "a@b.com",
                    "isEnabled": true,
                    "password": "pwd"
                  }
                }
              },
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "location": "global",
                  "properties": {
                    "channelName": "EmailChannel",
                    "properties": {
                      "emailAddress": "a@b.com",
                      "isEnabled": true,
                      "password": "pwd"
                    }
                  }
                }
              },
              "201": {
                "body": {
                  "location": "global",
                  "properties": {
                    "channelName": "EmailChannel",
                    "properties": {
                      "emailAddress": "a@b.com",
                      "isEnabled": true,
                      "password": "pwd"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/channels/{channelName}/listChannelWithKeys": {
      "post": {
        "description": "Lists a Channel registration for a Bot Service including secrets",
        "operationId": "Channels_ListWithKeys",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "$ref": "#/parameters/channelNameParameter"
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "If resource is retrieved successfully, the service should return 200 (OK).",
            "schema": {
              "$ref": "#/definitions/BotChannel"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "Channel"
        ],
        "x-ms-examples": {
          "List Channel": {
            "parameters": {
              "api-version": "2017-01-01",
              "channelName": "EmailChannel",
              "parameters": {
                "location": "global"
              },
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "location": "global",
                  "properties": {
                    "channelName": "EmailChannel",
                    "properties": {
                      "emailAddress": "a@b.com",
                      "isEnabled": true,
                      "password": "pwd"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/connections": {
      "get": {
        "description": "Returns all the Connection Settings registered to a particular BotService resource",
        "operationId": "BotConnection_ListByBotService",
        "parameters": [
          {
            "$ref": "#/parameters/resourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/resourceNameParameter"
          },
          {
            "$ref": "#/parameters/subscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/apiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The resource provider should return 200 (OK) to indicate that the operation completed successfully. For other errors (e.g. internal errors) use the appropriate HTTP error code.\nThe nextLink field is expected to point to the URL the client should use to fetch the next page (per server side paging). This matches the OData guidelines for paged responses here. If a resource provider does not support paging, it should return the same body (JSON object with \"value\" property) but omit nextLink entirely (or set to null, *not* empty string) for future compatibility.\nThe nextLink should be implemented using following query parameters:\n· skipToken: opaque token that allows the resource provider to skip resources already enumerated. This value is defined and returned by the RP after first request via nextLink.\n· top: the optional client query parameter which defines the maximum number of records to be returned by the server.\nImplementation details:\n· NextLink may include all the query parameters (specifically OData $filter) used by the client in the first query. \n· Server may return less records than requested with nextLink. Returning zero records with NextLink is an acceptable response. \nClients must fetch records until the nextLink is not returned back / null. Clients should never rely on number of returned records to determinate if pagination is completed.",
            "schema": {
              "$ref": "#/definitions/ConnectionSettingResponseList"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed. If the resource group does not exist, 404 (NotFound) will be returned.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "tags": [
          "BotConnection"
        ],
        "x-ms-examples": {
          "List Connection Settings": {
            "parameters": {
              "api-version": "2017-01-01",
              "resourceGroupName": "OneResourceGroupName",
              "resourceName": "samplebotname",
              "subscriptionId": "subscription-id"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "name": "The Name of the Connection Setting",
                      "properties": {
                        "clientId": "sampleclientid",
                        "clientSecret": "samplesecret",
                        "parameters": [
                          {
                            "key": "key1",
                            "value": "value1"
                          },
                          {
                            "key": "key2",
                            "value": "value2"
                          }
                        ],
                        "scopes": "samplescope",
                        "serviceProviderId": "serviceproviderid"
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    }
  },
  "definitions": {
    "Bot": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        }
      ],
      "description": "Bot resource definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/BotProperties",
          "description": "The set of properties specific to bot resource"
        }
      },
      "type": "object"
    },
    "BotChannel": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        }
      ],
      "description": "Bot channel resource definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/Channel",
          "description": "The set of properties specific to bot channel resource"
        }
      },
      "type": "object"
    },
    "BotProperties": {
      "description": "The parameters to provide for the Bot.",
      "properties": {
        "configuredChannels": {
          "description": "Collection of channels for which the bot is configured",
          "items": {
            "type": "string"
          },
          "readOnly": true,
          "type": "array"
        },
        "description": {
          "description": "The description of the bot",
          "type": "string"
        },
        "developerAppInsightKey": {
          "description": "The Application Insights key",
          "type": "string"
        },
        "developerAppInsightsApiKey": {
          "description": "The Application Insights Api Key",
          "type": "string"
        },
        "developerAppInsightsApplicationId": {
          "description": "The Application Insights App Id",
          "type": "string"
        },
        "displayName": {
          "description": "The Name of the bot",
          "type": "string"
        },
        "enabledChannels": {
          "description": "Collection of channels for which the bot is enabled",
          "items": {
            "type": "string"
          },
          "readOnly": true,
          "type": "array"
        },
        "endpoint": {
          "description": "The bot's endpoint",
          "type": "string"
        },
        "endpointVersion": {
          "description": "The bot's endpoint version",
          "readOnly": true,
          "type": "string"
        },
        "iconUrl": {
          "description": "The Icon Url of the bot",
          "type": "string"
        },
        "luisAppIds": {
          "description": "Collection of LUIS App Ids",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "luisKey": {
          "description": "The LUIS Key",
          "type": "string"
        },
        "msaAppId": {
          "description": "Microsoft App Id for the bot",
          "type": "string"
        }
      },
      "required": [
        "displayName",
        "endpoint",
        "msaAppId"
      ]
    },
    "BotResponseList": {
      "description": "The list of  bot service operation response.",
      "properties": {
        "nextLink": {
          "description": "The link used to get the next page of bot service resources.",
          "type": "string"
        },
        "value": {
          "description": "Gets the list of bot service results and their properties.",
          "items": {
            "$ref": "#/definitions/Bot"
          },
          "readOnly": true,
          "type": "array"
        }
      }
    },
    "Channel": {
      "description": "Channel definition",
      "discriminator": "channelName",
      "properties": {
        "channelName": {
          "description": "The channel name",
          "type": "string"
        }
      },
      "required": [
        "channelName"
      ],
      "type": "object"
    },
    "ChannelResponseList": {
      "description": "The list of bot service channel operation response.",
      "properties": {
        "nextLink": {
          "description": "The link used to get the next page of bot service channel resources.",
          "type": "string"
        },
        "value": {
          "description": "Gets the list of bot service channel results and their properties.",
          "items": {
            "$ref": "#/definitions/BotChannel"
          },
          "readOnly": true,
          "type": "array"
        }
      }
    },
    "CheckNameAvailabilityRequestBody": {
      "description": "The request body for a request to Bot Service Management to check availability of a bot name.",
      "properties": {
        "name": {
          "description": "the name of the bot for which availability needs to be checked.",
          "type": "string"
        },
        "type": {
          "description": "the type of the bot for which availability needs to be checked",
          "type": "string"
        }
      },
      "type": "object"
    },
    "CheckNameAvailabilityResponseBody": {
      "description": "The response body returned for a request to Bot Service Management to check availability of a bot name.",
      "properties": {
        "message": {
          "description": "additional message from the bot management api showing why a bot name is not available",
          "type": "string"
        },
        "valid": {
          "description": "indicates if the bot name is valid.",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "ConnectionItemName": {
      "description": "The display name of a connection Item Setting registered with the Bot",
      "properties": {
        "name": {
          "description": "Connection Item name that has been added in the API",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "ConnectionSetting": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        }
      ],
      "description": "Bot channel resource definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/ConnectionSettingProperties",
          "description": "The set of properties specific to bot channel resource"
        }
      },
      "type": "object"
    },
    "ConnectionSettingParameter": {
      "description": "Extra Parameter in a Connection Setting Properties to indicate service provider specific properties",
      "properties": {
        "key": {
          "description": "Key for the Connection Setting Parameter.",
          "type": "string"
        },
        "value": {
          "description": "Value associated with the Connection Setting Parameter.",
          "type": "string"
        }
      }
    },
    "ConnectionSettingProperties": {
      "description": "Properties for a Connection Setting Item",
      "properties": {
        "clientId": {
          "description": "Client Id associated with the Connection Setting.",
          "type": "string"
        },
        "clientSecret": {
          "description": "Client Secret associated with the Connection Setting",
          "type": "string"
        },
        "parameters": {
          "description": "Service Provider Parameters associated with the Connection Setting",
          "items": {
            "$ref": "#/definitions/ConnectionSettingParameter"
          },
          "type": "array"
        },
        "scopes": {
          "description": "Scopes associated with the Connection Setting",
          "type": "string"
        },
        "serviceProviderDisplayName": {
          "description": "Service Provider Display Name associated with the Connection Setting",
          "type": "string"
        },
        "serviceProviderId": {
          "description": "Service Provider Id associated with the Connection Setting",
          "type": "string"
        },
        "settingId": {
          "description": "Setting Id set by the service for the Connection Setting.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "ConnectionSettingResponseList": {
      "description": "The list of bot service connection settings response.",
      "properties": {
        "nextLink": {
          "description": "The link used to get the next page of bot service connection setting resources.",
          "type": "string"
        },
        "value": {
          "description": "Gets the list of bot service connection settings and their properties.",
          "items": {
            "$ref": "#/definitions/ConnectionSetting"
          },
          "readOnly": true,
          "type": "array"
        }
      }
    },
    "DirectLineChannel": {
      "allOf": [
        {
          "$ref": "#/definitions/Channel"
        }
      ],
      "description": "Direct Line channel definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/DirectLineChannelProperties",
          "description": "The set of properties specific to Direct Line channel resource"
        }
      },
      "type": "object",
      "x-ms-discriminator-value": "DirectLineChannel"
    },
    "DirectLineChannelProperties": {
      "description": "The parameters to provide for the Direct Line channel.",
      "properties": {
        "sites": {
          "description": "The list of Direct Line sites",
          "items": {
            "$ref": "#/definitions/DirectLineSite"
          },
          "type": "array"
        }
      }
    },
    "DirectLineSite": {
      "description": "A site for the Direct Line channel",
      "properties": {
        "isEnabled": {
          "description": "Whether this site is enabled for DirectLine channel",
          "type": "boolean"
        },
        "isV1Enabled": {
          "description": "Whether this site is enabled for Bot Framework V1 protocol",
          "type": "boolean"
        },
        "isV3Enabled": {
          "description": "Whether this site is enabled for Bot Framework V1 protocol",
          "type": "boolean"
        },
        "key": {
          "description": "Primary key. Value only returned through POST to the action Channel List API, otherwise empty.",
          "readOnly": true,
          "type": "string",
          "x-ms-mutability": [
            "read"
          ]
        },
        "key2": {
          "description": "Secondary key. Value only returned through POST to the action Channel List API, otherwise empty.",
          "readOnly": true,
          "type": "string",
          "x-ms-mutability": [
            "read"
          ]
        },
        "siteId": {
          "description": "Site Id",
          "readOnly": true,
          "type": "string",
          "x-ms-mutability": [
            "read"
          ]
        },
        "siteName": {
          "description": "Site name",
          "type": "string"
        }
      },
      "required": [
        "isV1Enabled",
        "isV3Enabled",
        "isEnabled",
        "siteName"
      ]
    },
    "EmailChannel": {
      "allOf": [
        {
          "$ref": "#/definitions/Channel"
        }
      ],
      "description": "Email channel definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/EmailChannelProperties",
          "description": "The set of properties specific to email channel resource"
        }
      },
      "type": "object",
      "x-ms-discriminator-value": "EmailChannel"
    },
    "EmailChannelProperties": {
      "description": "The parameters to provide for the Email channel.",
      "properties": {
        "emailAddress": {
          "description": "The email address",
          "type": "string"
        },
        "isEnabled": {
          "description": "Whether this channel is enabled for the bot",
          "type": "boolean"
        },
        "password": {
          "description": "The password for the email address. Value only returned through POST to the action Channel List API, otherwise empty.",
          "type": "string"
        }
      },
      "required": [
        "emailAddress",
        "password",
        "isEnabled"
      ]
    },
    "Error": {
      "description": "Bot Service error object.",
      "properties": {
        "error": {
          "$ref": "#/definitions/ErrorBody",
          "description": "The error body."
        }
      }
    },
    "ErrorBody": {
      "description": "Bot Service error body.",
      "properties": {
        "code": {
          "description": "error code",
          "type": "string"
        },
        "message": {
          "description": "error message",
          "type": "string"
        }
      },
      "required": [
        "code",
        "message"
      ]
    },
    "FacebookChannel": {
      "allOf": [
        {
          "$ref": "#/definitions/Channel"
        }
      ],
      "description": "Facebook channel definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/FacebookChannelProperties",
          "description": "The set of properties specific to bot facebook channel"
        }
      },
      "type": "object",
      "x-ms-discriminator-value": "FacebookChannel"
    },
    "FacebookChannelProperties": {
      "description": "The parameters to provide for the Facebook channel.",
      "properties": {
        "appId": {
          "description": "Facebook application id",
          "type": "string"
        },
        "appSecret": {
          "description": "Facebook application secret. Value only returned through POST to the action Channel List API, otherwise empty.",
          "type": "string"
        },
        "callbackUrl": {
          "description": "Callback Url",
          "readOnly": true,
          "type": "string"
        },
        "isEnabled": {
          "description": "Whether this channel is enabled for the bot",
          "type": "boolean"
        },
        "pages": {
          "description": "The list of Facebook pages",
          "items": {
            "$ref": "#/definitions/FacebookPage"
          },
          "type": "array"
        },
        "verifyToken": {
          "description": "Verify token. Value only returned through POST to the action Channel List API, otherwise empty.",
          "readOnly": true,
          "type": "string"
        }
      },
      "required": [
        "appId",
        "appSecret",
        "isEnabled"
      ]
    },
    "FacebookPage": {
      "description": "A Facebook page for Facebook channel registration",
      "properties": {
        "accessToken": {
          "description": "Facebook application access token. Value only returned through POST to the action Channel List API, otherwise empty.",
          "type": "string"
        },
        "id": {
          "description": "Page id",
          "type": "string"
        }
      },
      "required": [
        "id",
        "accessToken"
      ]
    },
    "KikChannel": {
      "allOf": [
        {
          "$ref": "#/definitions/Channel"
        }
      ],
      "description": "Kik channel definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/KikChannelProperties",
          "description": "The set of properties specific to Kik channel resource"
        }
      },
      "type": "object",
      "x-ms-discriminator-value": "KikChannel"
    },
    "KikChannelProperties": {
      "description": "The parameters to provide for the Kik channel.",
      "properties": {
        "apiKey": {
          "description": "Kik API key. Value only returned through POST to the action Channel List API, otherwise empty.",
          "type": "string"
        },
        "isEnabled": {
          "description": "Whether this channel is enabled for the bot",
          "type": "boolean"
        },
        "isValidated": {
          "description": "Whether this channel is validated for the bot",
          "type": "boolean"
        },
        "userName": {
          "description": "The Kik user name",
          "type": "string"
        }
      },
      "required": [
        "userName",
        "apiKey",
        "isEnabled"
      ]
    },
    "Kind": {
      "description": "Indicates the type of bot service",
      "enum": [
        "sdk",
        "designer",
        "bot",
        "function"
      ],
      "type": "string",
      "x-ms-enum": {
        "modelAsString": true,
        "name": "Kind"
      }
    },
    "MsTeamsChannel": {
      "allOf": [
        {
          "$ref": "#/definitions/Channel"
        }
      ],
      "description": "Microsoft Teams channel definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/MsTeamsChannelProperties",
          "description": "The set of properties specific to Microsoft Teams channel resource"
        }
      },
      "type": "object",
      "x-ms-discriminator-value": "MsTeamsChannel"
    },
    "MsTeamsChannelProperties": {
      "description": "The parameters to provide for the Microsoft Teams channel.",
      "properties": {
        "callMode": {
          "description": "Enable messaging for Microsoft Teams channel",
          "type": "string"
        },
        "enableCalling": {
          "description": "Enable calling for Microsoft Teams channel",
          "type": "boolean"
        },
        "enableMediaCards": {
          "description": "Enable media cards for Microsoft Teams channel",
          "type": "boolean"
        },
        "enableMessaging": {
          "description": "Enable messaging for Microsoft Teams channel",
          "type": "boolean"
        },
        "enableVideo": {
          "description": "Enable video for Microsoft Teams channel",
          "type": "boolean"
        },
        "isEnabled": {
          "description": "Whether this channel is enabled for the bot",
          "type": "boolean"
        }
      },
      "required": [
        "isEnabled"
      ]
    },
    "OperationDisplayInfo": {
      "description": "The operation supported by Bot Service Management.",
      "properties": {
        "description": {
          "description": "The description of the operation.",
          "type": "string"
        },
        "operation": {
          "description": "The action that users can perform, based on their permission level.",
          "type": "string"
        },
        "provider": {
          "description": "Service provider: Microsoft Bot Service.",
          "type": "string"
        },
        "resource": {
          "description": "Resource on which the operation is performed.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "OperationEntity": {
      "description": "The operations supported by Bot Service Management.",
      "properties": {
        "display": {
          "$ref": "#/definitions/OperationDisplayInfo",
          "description": "The operation supported by Bot Service Management."
        },
        "name": {
          "description": "Operation name: {provider}/{resource}/{operation}.",
          "type": "string"
        },
        "origin": {
          "description": "The origin of the operation.",
          "type": "string"
        },
        "properties": {
          "description": "Additional properties.",
          "type": "object"
        }
      },
      "type": "object"
    },
    "OperationEntityListResult": {
      "description": "The list of bot service operation response.",
      "properties": {
        "nextLink": {
          "description": "The link used to get the next page of operations.",
          "type": "string"
        },
        "value": {
          "description": "The list of operations.",
          "items": {
            "$ref": "#/definitions/OperationEntity"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "Resource": {
      "description": "Azure resource",
      "properties": {
        "etag": {
          "description": "Entity Tag",
          "type": "string"
        },
        "id": {
          "description": "Specifies the resource ID.",
          "readOnly": true,
          "type": "string"
        },
        "kind": {
          "$ref": "#/definitions/Kind",
          "description": "Required. Gets or sets the Kind of the resource."
        },
        "location": {
          "description": "Specifies the location of the resource.",
          "type": "string"
        },
        "name": {
          "description": "Specifies the name of the resource.",
          "readOnly": true,
          "type": "string"
        },
        "sku": {
          "$ref": "#/definitions/Sku",
          "description": "Gets or sets the SKU of the resource."
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Contains resource tags defined as key/value pairs.",
          "type": "object"
        },
        "type": {
          "description": "Specifies the type of the resource.",
          "readOnly": true,
          "type": "string"
        }
      },
      "x-ms-azure-resource": true
    },
    "ServiceProvider": {
      "description": "Service Provider Definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/ServiceProviderProperties",
          "description": "The Properties of a Service Provider Object"
        }
      },
      "type": "object"
    },
    "ServiceProviderParameter": {
      "description": "Extra Parameters specific to each Service Provider",
      "properties": {
        "default": {
          "description": "Default Name for the Service Provider",
          "readOnly": true,
          "type": "string"
        },
        "description": {
          "description": "Description of the Service Provider",
          "readOnly": true,
          "type": "string"
        },
        "displayName": {
          "description": "Display Name of the Service Provider",
          "readOnly": true,
          "type": "string"
        },
        "helpUrl": {
          "description": "Help Url for the  Service Provider",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "Name of the Service Provider",
          "readOnly": true,
          "type": "string"
        },
        "type": {
          "description": "Type of the Service Provider",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "ServiceProviderProperties": {
      "description": "The Object used to describe a Service Provider supported by Bot Service",
      "properties": {
        "devPortalUrl": {
          "description": "Display Name of the Service Provider",
          "readOnly": true,
          "type": "string"
        },
        "displayName": {
          "description": "Display Name of the Service Provider",
          "readOnly": true,
          "type": "string"
        },
        "iconUrl": {
          "description": "Display Name of the Service Provider",
          "readOnly": true,
          "type": "string"
        },
        "id": {
          "description": "Id for Service Provider",
          "readOnly": true,
          "type": "string"
        },
        "parameters": {
          "description": "The list of parameters for the Service Provider",
          "items": {
            "$ref": "#/definitions/ServiceProviderParameter"
          },
          "type": "array"
        },
        "serviceProviderName": {
          "description": "Display Name of the Service Provider",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "ServiceProviderResponseList": {
      "description": "The list of bot service providers response.",
      "properties": {
        "nextLink": {
          "description": "The link used to get the next page of bot service providers.",
          "type": "string"
        },
        "value": {
          "description": "Gets the list of bot service providers and their properties.",
          "items": {
            "$ref": "#/definitions/ServiceProvider"
          },
          "readOnly": true,
          "type": "array"
        }
      }
    },
    "Sku": {
      "description": "The SKU of the cognitive services account.",
      "properties": {
        "name": {
          "$ref": "#/definitions/SkuName",
          "description": "The sku name"
        },
        "tier": {
          "description": "Gets the sku tier. This is based on the SKU name.",
          "enum": [
            "Free",
            "Standard"
          ],
          "readOnly": true,
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "SkuTier"
          }
        }
      },
      "required": [
        "name"
      ]
    },
    "SkuName": {
      "description": "The name of SKU.",
      "enum": [
        "F0",
        "S1"
      ],
      "type": "string",
      "x-ms-enum": {
        "modelAsString": true,
        "name": "SkuName"
      }
    },
    "SkypeChannel": {
      "allOf": [
        {
          "$ref": "#/definitions/Channel"
        }
      ],
      "description": "Skype channel definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/SkypeChannelProperties",
          "description": "The set of properties specific to Skype channel resource"
        }
      },
      "type": "object",
      "x-ms-discriminator-value": "SkypeChannel"
    },
    "SkypeChannelProperties": {
      "description": "The parameters to provide for the Microsoft Teams channel.",
      "properties": {
        "callingWebHook": {
          "description": "Calling web hook for Skype channel",
          "type": "string"
        },
        "enableCalling": {
          "description": "Enable calling for Skype channel",
          "type": "boolean"
        },
        "enableGroups": {
          "description": "Enable groups for Skype channel",
          "type": "boolean"
        },
        "enableMediaCards": {
          "description": "Enable media cards for Skype channel",
          "type": "boolean"
        },
        "enableMessaging": {
          "description": "Enable messaging for Skype channel",
          "type": "boolean"
        },
        "enableScreenSharing": {
          "description": "Enable screen sharing for Skype channel",
          "type": "boolean"
        },
        "enableVideo": {
          "description": "Enable video for Skype channel",
          "type": "boolean"
        },
        "groupsMode": {
          "description": "Group mode for Skype channel",
          "type": "string"
        },
        "isEnabled": {
          "description": "Whether this channel is enabled for the bot",
          "type": "boolean"
        }
      },
      "required": [
        "isEnabled"
      ]
    },
    "SlackChannel": {
      "allOf": [
        {
          "$ref": "#/definitions/Channel"
        }
      ],
      "description": "Slack channel definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/SlackChannelProperties",
          "description": "The set of properties specific to Slack channel resource"
        }
      },
      "type": "object",
      "x-ms-discriminator-value": "SlackChannel"
    },
    "SlackChannelProperties": {
      "description": "The parameters to provide for the Slack channel.",
      "properties": {
        "clientId": {
          "description": "The Slack client id",
          "type": "string"
        },
        "clientSecret": {
          "description": "The Slack client secret. Value only returned through POST to the action Channel List API, otherwise empty.",
          "type": "string"
        },
        "isEnabled": {
          "description": "Whether this channel is enabled for the bot",
          "type": "boolean"
        },
        "isValidated": {
          "description": "Whether this channel is validated for the bot",
          "readOnly": true,
          "type": "boolean"
        },
        "landingPageUrl": {
          "description": "The Slack landing page Url",
          "type": "string"
        },
        "lastSubmissionId": {
          "description": "The Sms auth token",
          "readOnly": true,
          "type": "string"
        },
        "redirectAction": {
          "description": "The Slack redirect action",
          "readOnly": true,
          "type": "string"
        },
        "registerBeforeOAuthFlow": {
          "description": "Whether to register the settings before OAuth validation is performed. Recommended to True.",
          "readOnly": true,
          "type": "boolean"
        },
        "verificationToken": {
          "description": "The Slack verification token. Value only returned through POST to the action Channel List API, otherwise empty.",
          "type": "string"
        }
      },
      "required": [
        "clientId",
        "clientSecret",
        "verificationToken",
        "isEnabled"
      ]
    },
    "SmsChannel": {
      "allOf": [
        {
          "$ref": "#/definitions/Channel"
        }
      ],
      "description": "Sms channel definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/SmsChannelProperties",
          "description": "The set of properties specific to Sms channel resource"
        }
      },
      "type": "object",
      "x-ms-discriminator-value": "SmsChannel"
    },
    "SmsChannelProperties": {
      "description": "The parameters to provide for the Sms channel.",
      "properties": {
        "accountSID": {
          "description": "The Sms account SID. Value only returned through POST to the action Channel List API, otherwise empty.",
          "type": "string"
        },
        "authToken": {
          "description": "The Sms auth token. Value only returned through POST to the action Channel List API, otherwise empty.",
          "type": "string"
        },
        "isEnabled": {
          "description": "Whether this channel is enabled for the bot",
          "type": "boolean"
        },
        "isValidated": {
          "description": "Whether this channel is validated for the bot",
          "type": "boolean"
        },
        "phone": {
          "description": "The Sms phone",
          "type": "string"
        }
      },
      "required": [
        "phone",
        "accountSID",
        "authToken",
        "isEnabled"
      ]
    },
    "TelegramChannel": {
      "allOf": [
        {
          "$ref": "#/definitions/Channel"
        }
      ],
      "description": "Telegram channel definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/TelegramChannelProperties",
          "description": "The set of properties specific to Telegram channel resource"
        }
      },
      "type": "object",
      "x-ms-discriminator-value": "TelegramChannel"
    },
    "TelegramChannelProperties": {
      "description": "The parameters to provide for the Telegram channel.",
      "properties": {
        "accessToken": {
          "description": "The Telegram access token. Value only returned through POST to the action Channel List API, otherwise empty.",
          "type": "string"
        },
        "isEnabled": {
          "description": "Whether this channel is enabled for the bot",
          "type": "boolean"
        },
        "isValidated": {
          "description": "Whether this channel is validated for the bot",
          "type": "boolean"
        }
      },
      "required": [
        "accessToken",
        "isEnabled"
      ]
    },
    "WebChatChannel": {
      "allOf": [
        {
          "$ref": "#/definitions/Channel"
        }
      ],
      "description": "Web Chat channel definition",
      "properties": {
        "properties": {
          "$ref": "#/definitions/WebChatChannelProperties",
          "description": "The set of properties specific to Web Chat channel resource"
        }
      },
      "type": "object",
      "x-ms-discriminator-value": "WebChatChannel"
    },
    "WebChatChannelProperties": {
      "description": "The parameters to provide for the Web Chat channel.",
      "properties": {
        "sites": {
          "description": "The list of Web Chat sites",
          "items": {
            "$ref": "#/definitions/WebChatSite"
          },
          "type": "array"
        },
        "webChatEmbedCode": {
          "description": "Web chat control embed code",
          "readOnly": true,
          "type": "string",
          "x-ms-mutability": [
            "read"
          ]
        }
      }
    },
    "WebChatSite": {
      "description": "A site for the Webchat channel",
      "properties": {
        "enablePreview": {
          "description": "Whether this site is enabled for preview versions of Webchat",
          "type": "boolean"
        },
        "isEnabled": {
          "description": "Whether this site is enabled for DirectLine channel",
          "type": "boolean"
        },
        "key": {
          "description": "Primary key. Value only returned through POST to the action Channel List API, otherwise empty.",
          "readOnly": true,
          "type": "string",
          "x-ms-mutability": [
            "read"
          ]
        },
        "key2": {
          "description": "Secondary key. Value only returned through POST to the action Channel List API, otherwise empty.",
          "readOnly": true,
          "type": "string",
          "x-ms-mutability": [
            "read"
          ]
        },
        "siteId": {
          "description": "Site Id",
          "readOnly": true,
          "type": "string",
          "x-ms-mutability": [
            "read"
          ]
        },
        "siteName": {
          "description": "Site name",
          "type": "string"
        }
      },
      "required": [
        "siteName",
        "isEnabled",
        "enablePreview"
      ]
    }
  }
}