diff --git a/doc/sphinx/azhelpgen/doc_source_map.json b/doc/sphinx/azhelpgen/doc_source_map.json index 775f0f15aca..9911040d3eb 100644 --- a/doc/sphinx/azhelpgen/doc_source_map.json +++ b/doc/sphinx/azhelpgen/doc_source_map.json @@ -15,6 +15,7 @@ "batchai": "src/command_modules/azure-cli-batchai/azure/cli/command_modules/batchai/_help.py", "backup": "src/command_modules/azure-cli-backup/azure/cli/command_modules/backup/_help.py", "billing": "src/command_modules/azure-cli-billing/azure/cli/command_modules/billing/_help.py", + "botservice": "src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_help.py", "cdn": "src/command_modules/azure-cli-cdn/azure/cli/command_modules/cdn/_help.py", "cloud": "src/command_modules/azure-cli-cloud/azure/cli/command_modules/cloud/_help.py", "consumption": "src/command_modules/azure-cli-consumption/azure/cli/command_modules/consumption/_help.py", diff --git a/src/azure-cli-core/azure/cli/core/commands/__init__.py b/src/azure-cli-core/azure/cli/core/commands/__init__.py index b63cb59800e..308ab4a6e52 100644 --- a/src/azure-cli-core/azure/cli/core/commands/__init__.py +++ b/src/azure-cli-core/azure/cli/core/commands/__init__.py @@ -840,7 +840,6 @@ def generic_update_command(self, name, child_collection_prop_name=None, child_collection_key='name', child_arg_name='item_name', custom_func_name=None, custom_func_type=None, **kwargs): from azure.cli.core.commands.arm import _cli_generic_update_command - self._check_stale() merged_kwargs = _merge_kwargs(kwargs, self.group_kwargs, CLI_COMMAND_KWARGS) # don't inherit deprecation info from command group diff --git a/src/command_modules/azure-cli-botservice/HISTORY.rst b/src/command_modules/azure-cli-botservice/HISTORY.rst new file mode 100644 index 00000000000..f0062013ccc --- /dev/null +++ b/src/command_modules/azure-cli-botservice/HISTORY.rst @@ -0,0 +1,8 @@ +.. :changelog: + +Release History +=============== + +0.1.0 ++++++ +* Initial Bot Service CLI Release \ No newline at end of file diff --git a/src/command_modules/azure-cli-botservice/MANIFEST.in b/src/command_modules/azure-cli-botservice/MANIFEST.in new file mode 100644 index 00000000000..b1d9c3fce33 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/MANIFEST.in @@ -0,0 +1,3 @@ +include *.rst +include azure\cli\command_modules\botservice\functionapp.template.json +include azure\cli\command_modules\botservice\webapp.template.json diff --git a/src/command_modules/azure-cli-botservice/README.rst b/src/command_modules/azure-cli-botservice/README.rst new file mode 100644 index 00000000000..4bebf4bd39a --- /dev/null +++ b/src/command_modules/azure-cli-botservice/README.rst @@ -0,0 +1,7 @@ +Microsoft Azure CLI 'bot service' Command Module +======================================================= + +This package is for the 'bot service' module. +i.e. 'az botservice' + + diff --git a/src/command_modules/azure-cli-botservice/azure/.vscode/tags b/src/command_modules/azure-cli-botservice/azure/.vscode/tags new file mode 100644 index 00000000000..31de7ca85a2 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/.vscode/tags @@ -0,0 +1,625 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.8 // +AuthSettingTests ../cli\command_modules\botservice\tests\latest\test_authsetting_commands.py /^class AuthSettingTests(ScenarioTest):$/;" kind:class line:4 +AzCommandsLoader ../cli\command_modules\botservice\__init__.py /^from azure.cli.core import AzCommandsLoader$/;" kind:namespace line:6 +AzureBotService ../cli\command_modules\botservice\_client_factory.py /^ from azure.cli.command_modules.botservice.botservice import AzureBotService$/;" kind:namespace line:9 +AzureBotService ../cli\command_modules\botservice\botservice\__init__.py /^from .azure_bot_service import AzureBotService$/;" kind:namespace line:12 +AzureBotService ../cli\command_modules\botservice\botservice\azure_bot_service.py /^class AzureBotService(object):$/;" kind:class line:55 +AzureBotServiceConfiguration ../cli\command_modules\botservice\botservice\azure_bot_service.py /^class AzureBotServiceConfiguration(AzureConfiguration):$/;" kind:class line:23 +AzureConfiguration ../cli\command_modules\botservice\botservice\azure_bot_service.py /^from msrestazure import AzureConfiguration$/;" kind:namespace line:14 +Bot ../cli\command_modules\botservice\botservice\models\__init__.py /^from .bot import Bot$/;" kind:namespace line:15 +Bot ../cli\command_modules\botservice\botservice\models\bot.py /^class Bot(Resource):$/;" kind:class line:15 +Bot ../cli\command_modules\botservice\custom.py /^from azure.cli.command_modules.botservice.botservice.models import Bot, BotProperties, sku$/;" kind:namespace line:20 +BotChannel ../cli\command_modules\botservice\botservice\models\__init__.py /^from .bot_channel import BotChannel$/;" kind:namespace line:17 +BotChannel ../cli\command_modules\botservice\botservice\models\bot_channel.py /^class BotChannel(Resource):$/;" kind:class line:15 +BotChannel ../cli\command_modules\botservice\channel_operations.py /^from azure.cli.command_modules.botservice.botservice.models import BotChannel$/;" kind:namespace line:6 +BotChannelPaged ../cli\command_modules\botservice\botservice\models\__init__.py /^from .bot_channel_paged import BotChannelPaged$/;" kind:namespace line:56 +BotChannelPaged ../cli\command_modules\botservice\botservice\models\bot_channel_paged.py /^class BotChannelPaged(Paged):$/;" kind:class line:15 +BotConnectionOperations ../cli\command_modules\botservice\botservice\azure_bot_service.py /^from .operations.bot_connection_operations import BotConnectionOperations$/;" kind:namespace line:19 +BotConnectionOperations ../cli\command_modules\botservice\botservice\operations\__init__.py /^from .bot_connection_operations import BotConnectionOperations$/;" kind:namespace line:15 +BotConnectionOperations ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^class BotConnectionOperations(object):$/;" kind:class line:18 +BotPaged ../cli\command_modules\botservice\botservice\models\__init__.py /^from .bot_paged import BotPaged$/;" kind:namespace line:55 +BotPaged ../cli\command_modules\botservice\botservice\models\bot_paged.py /^class BotPaged(Paged):$/;" kind:class line:15 +BotProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .bot_properties import BotProperties$/;" kind:namespace line:14 +BotProperties ../cli\command_modules\botservice\botservice\models\bot_properties.py /^class BotProperties(Model):$/;" kind:class line:15 +BotProperties ../cli\command_modules\botservice\custom.py /^from azure.cli.command_modules.botservice.botservice.models import Bot, BotProperties, sku$/;" kind:namespace line:20 +BotServiceCommandsLoader ../cli\command_modules\botservice\__init__.py /^class BotServiceCommandsLoader(AzCommandsLoader):$/;" kind:class line:11 +BotTests ../cli\command_modules\botservice\tests\latest\test_bot_commands.py /^class BotTests(ScenarioTest):$/;" kind:class line:4 +BotsOperations ../cli\command_modules\botservice\botservice\azure_bot_service.py /^from .operations.bots_operations import BotsOperations$/;" kind:namespace line:16 +BotsOperations ../cli\command_modules\botservice\botservice\operations\__init__.py /^from .bots_operations import BotsOperations$/;" kind:namespace line:12 +BotsOperations ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^class BotsOperations(object):$/;" kind:class line:18 +CLIArgumentType ../cli\command_modules\botservice\_params.py /^from knack.arguments import CLIArgumentType$/;" kind:namespace line:6 +CLIError ../cli\command_modules\botservice\_exception_handler.py /^from knack.util import CLIError$/;" kind:namespace line:6 +CLIError ../cli\command_modules\botservice\_webutils.py /^from knack.util import CLIError$/;" kind:namespace line:9 +CLIError ../cli\command_modules\botservice\custom.py /^from knack.util import CLIError$/;" kind:namespace line:11 +COMMAND_LOADER_CLS ../cli\command_modules\botservice\__init__.py /^COMMAND_LOADER_CLS = BotServiceCommandsLoader$/;" kind:variable line:32 +Channel ../cli\command_modules\botservice\botservice\models\__init__.py /^from .channel import Channel$/;" kind:namespace line:16 +Channel ../cli\command_modules\botservice\botservice\models\channel.py /^class Channel(Model):$/;" kind:class line:15 +Channel ../cli\command_modules\botservice\botservice\models\direct_line_channel.py /^from .channel import Channel$/;" kind:namespace line:12 +Channel ../cli\command_modules\botservice\botservice\models\email_channel.py /^from .channel import Channel$/;" kind:namespace line:12 +Channel ../cli\command_modules\botservice\botservice\models\facebook_channel.py /^from .channel import Channel$/;" kind:namespace line:12 +Channel ../cli\command_modules\botservice\botservice\models\kik_channel.py /^from .channel import Channel$/;" kind:namespace line:12 +Channel ../cli\command_modules\botservice\botservice\models\ms_teams_channel.py /^from .channel import Channel$/;" kind:namespace line:12 +Channel ../cli\command_modules\botservice\botservice\models\skype_channel.py /^from .channel import Channel$/;" kind:namespace line:12 +Channel ../cli\command_modules\botservice\botservice\models\slack_channel.py /^from .channel import Channel$/;" kind:namespace line:12 +Channel ../cli\command_modules\botservice\botservice\models\sms_channel.py /^from .channel import Channel$/;" kind:namespace line:12 +Channel ../cli\command_modules\botservice\botservice\models\telegram_channel.py /^from .channel import Channel$/;" kind:namespace line:12 +Channel ../cli\command_modules\botservice\botservice\models\web_chat_channel.py /^from .channel import Channel$/;" kind:namespace line:12 +ChannelName ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^class ChannelName(Enum):$/;" kind:class line:35 +ChannelOperations ../cli\command_modules\botservice\channel_operations.py /^class ChannelOperations(object): # pylint: disable=too-few-public-methods$/;" kind:class line:166 +ChannelsOperations ../cli\command_modules\botservice\botservice\azure_bot_service.py /^from .operations.channels_operations import ChannelsOperations$/;" kind:namespace line:17 +ChannelsOperations ../cli\command_modules\botservice\botservice\operations\__init__.py /^from .channels_operations import ChannelsOperations$/;" kind:namespace line:13 +ChannelsOperations ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^class ChannelsOperations(object):$/;" kind:class line:18 +CheckNameAvailabilityRequestBody ../cli\command_modules\botservice\botservice\models\__init__.py /^from .check_name_availability_request_body import CheckNameAvailabilityRequestBody$/;" kind:namespace line:53 +CheckNameAvailabilityRequestBody ../cli\command_modules\botservice\botservice\models\check_name_availability_request_body.py /^class CheckNameAvailabilityRequestBody(Model):$/;" kind:class line:15 +CheckNameAvailabilityResponseBody ../cli\command_modules\botservice\botservice\models\__init__.py /^from .check_name_availability_response_body import CheckNameAvailabilityResponseBody$/;" kind:namespace line:54 +CheckNameAvailabilityResponseBody ../cli\command_modules\botservice\botservice\models\check_name_availability_response_body.py /^class CheckNameAvailabilityResponseBody(Model):$/;" kind:class line:15 +CliCommandType ../cli\command_modules\botservice\__init__.py /^ from azure.cli.core.commands import CliCommandType$/;" kind:namespace line:14 +CliCommandType ../cli\command_modules\botservice\commands.py /^from azure.cli.core.commands import CliCommandType$/;" kind:namespace line:6 +ClientRawResponse ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^from msrest.pipeline import ClientRawResponse$/;" kind:namespace line:13 +ClientRawResponse ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^from msrest.pipeline import ClientRawResponse$/;" kind:namespace line:13 +ClientRawResponse ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^from msrest.pipeline import ClientRawResponse$/;" kind:namespace line:13 +ClientRawResponse ../cli\command_modules\botservice\botservice\operations\operations.py /^from msrest.pipeline import ClientRawResponse$/;" kind:namespace line:13 +ClientRequestError ../cli\command_modules\botservice\_exception_handler.py /^ from msrest.exceptions import ClientRequestError # pylint: disable=import-error$/;" kind:namespace line:12 +CloudError ../cli\command_modules\botservice\_exception_handler.py /^ from msrestazure.azure_exceptions import CloudError$/;" kind:namespace line:11 +CloudError ../cli\command_modules\botservice\botservice\operations\operations.py /^from msrestazure.azure_exceptions import CloudError$/;" kind:namespace line:14 +ConnectionItemName ../cli\command_modules\botservice\botservice\models\__init__.py /^from .connection_item_name import ConnectionItemName$/;" kind:namespace line:41 +ConnectionItemName ../cli\command_modules\botservice\botservice\models\connection_item_name.py /^class ConnectionItemName(Model):$/;" kind:class line:15 +ConnectionSetting ../cli\command_modules\botservice\botservice\models\__init__.py /^from .connection_setting import ConnectionSetting$/;" kind:namespace line:44 +ConnectionSetting ../cli\command_modules\botservice\botservice\models\connection_setting.py /^class ConnectionSetting(Resource):$/;" kind:class line:15 +ConnectionSetting ../cli\command_modules\botservice\custom.py /^ from azure.cli.command_modules.botservice.botservice.models import ConnectionSetting, ConnectionSettingProperties, ConnectionSettingParameter$/;" kind:namespace line:188 +ConnectionSettingPaged ../cli\command_modules\botservice\botservice\models\__init__.py /^from .connection_setting_paged import ConnectionSettingPaged$/;" kind:namespace line:58 +ConnectionSettingPaged ../cli\command_modules\botservice\botservice\models\connection_setting_paged.py /^class ConnectionSettingPaged(Paged):$/;" kind:class line:15 +ConnectionSettingParameter ../cli\command_modules\botservice\botservice\models\__init__.py /^from .connection_setting_parameter import ConnectionSettingParameter$/;" kind:namespace line:42 +ConnectionSettingParameter ../cli\command_modules\botservice\botservice\models\connection_setting_parameter.py /^class ConnectionSettingParameter(Model):$/;" kind:class line:15 +ConnectionSettingParameter ../cli\command_modules\botservice\custom.py /^ from azure.cli.command_modules.botservice.botservice.models import ConnectionSetting, ConnectionSettingProperties, ConnectionSettingParameter$/;" kind:namespace line:188 +ConnectionSettingProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .connection_setting_properties import ConnectionSettingProperties$/;" kind:namespace line:43 +ConnectionSettingProperties ../cli\command_modules\botservice\botservice\models\connection_setting_properties.py /^class ConnectionSettingProperties(Model):$/;" kind:class line:15 +ConnectionSettingProperties ../cli\command_modules\botservice\custom.py /^ from azure.cli.command_modules.botservice.botservice.models import ConnectionSetting, ConnectionSettingProperties, ConnectionSettingParameter$/;" kind:namespace line:188 +Deserializer ../cli\command_modules\botservice\botservice\azure_bot_service.py /^from msrest import Serializer, Deserializer$/;" kind:namespace line:13 +DirectLineChannel ../cli\command_modules\botservice\botservice\models\__init__.py /^from .direct_line_channel import DirectLineChannel$/;" kind:namespace line:34 +DirectLineChannel ../cli\command_modules\botservice\botservice\models\direct_line_channel.py /^class DirectLineChannel(Channel):$/;" kind:class line:15 +DirectLineChannel ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import DirectLineChannel, DirectLineChannelProperties, DirectLineSite$/;" kind:namespace line:111 +DirectLineChannelProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .direct_line_channel_properties import DirectLineChannelProperties$/;" kind:namespace line:33 +DirectLineChannelProperties ../cli\command_modules\botservice\botservice\models\direct_line_channel_properties.py /^class DirectLineChannelProperties(Model):$/;" kind:class line:15 +DirectLineChannelProperties ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import DirectLineChannel, DirectLineChannelProperties, DirectLineSite$/;" kind:namespace line:111 +DirectLineSite ../cli\command_modules\botservice\botservice\models\__init__.py /^from .direct_line_site import DirectLineSite$/;" kind:namespace line:32 +DirectLineSite ../cli\command_modules\botservice\botservice\models\direct_line_site.py /^class DirectLineSite(Model):$/;" kind:class line:15 +DirectLineSite ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import DirectLineChannel, DirectLineChannelProperties, DirectLineSite$/;" kind:namespace line:111 +EmailChannel ../cli\command_modules\botservice\botservice\models\__init__.py /^from .email_channel import EmailChannel$/;" kind:namespace line:22 +EmailChannel ../cli\command_modules\botservice\botservice\models\email_channel.py /^class EmailChannel(Channel):$/;" kind:class line:15 +EmailChannel ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import EmailChannel, EmailChannelProperties$/;" kind:namespace line:35 +EmailChannelProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .email_channel_properties import EmailChannelProperties$/;" kind:namespace line:21 +EmailChannelProperties ../cli\command_modules\botservice\botservice\models\email_channel_properties.py /^class EmailChannelProperties(Model):$/;" kind:class line:15 +EmailChannelProperties ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import EmailChannel, EmailChannelProperties$/;" kind:namespace line:35 +Enum ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^from enum import Enum$/;" kind:namespace line:12 +Error ../cli\command_modules\botservice\botservice\models\__init__.py /^from .error import Error, ErrorException$/;" kind:namespace line:50 +Error ../cli\command_modules\botservice\botservice\models\error.py /^class Error(Model):$/;" kind:class line:16 +ErrorBody ../cli\command_modules\botservice\botservice\models\__init__.py /^from .error_body import ErrorBody$/;" kind:namespace line:49 +ErrorBody ../cli\command_modules\botservice\botservice\models\error_body.py /^class ErrorBody(Model):$/;" kind:class line:15 +ErrorException ../cli\command_modules\botservice\_exception_handler.py /^ from azure.cli.command_modules.botservice.botservice.models import ErrorException$/;" kind:namespace line:10 +ErrorException ../cli\command_modules\botservice\botservice\models\__init__.py /^from .error import Error, ErrorException$/;" kind:namespace line:50 +ErrorException ../cli\command_modules\botservice\botservice\models\error.py /^class ErrorException(HttpOperationError):$/;" kind:class line:31 +FacebookChannel ../cli\command_modules\botservice\botservice\models\__init__.py /^from .facebook_channel import FacebookChannel$/;" kind:namespace line:20 +FacebookChannel ../cli\command_modules\botservice\botservice\models\facebook_channel.py /^class FacebookChannel(Channel):$/;" kind:class line:15 +FacebookChannel ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import FacebookChannel, FacebookChannelProperties, FacebookPage$/;" kind:namespace line:22 +FacebookChannelProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .facebook_channel_properties import FacebookChannelProperties$/;" kind:namespace line:19 +FacebookChannelProperties ../cli\command_modules\botservice\botservice\models\facebook_channel_properties.py /^class FacebookChannelProperties(Model):$/;" kind:class line:15 +FacebookChannelProperties ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import FacebookChannel, FacebookChannelProperties, FacebookPage$/;" kind:namespace line:22 +FacebookPage ../cli\command_modules\botservice\botservice\models\__init__.py /^from .facebook_page import FacebookPage$/;" kind:namespace line:18 +FacebookPage ../cli\command_modules\botservice\botservice\models\facebook_page.py /^class FacebookPage(Model):$/;" kind:class line:15 +FacebookPage ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import FacebookChannel, FacebookChannelProperties, FacebookPage$/;" kind:namespace line:22 +HostType ../cli\command_modules\botservice\_webutils.py /^ from azure.mgmt.web.models import HostType$/;" kind:namespace line:93 +HttpOperationError ../cli\command_modules\botservice\botservice\models\error.py /^from msrest.exceptions import HttpOperationError$/;" kind:namespace line:13 +KikChannel ../cli\command_modules\botservice\botservice\models\__init__.py /^from .kik_channel import KikChannel$/;" kind:namespace line:28 +KikChannel ../cli\command_modules\botservice\botservice\models\kik_channel.py /^class KikChannel(Channel):$/;" kind:class line:15 +KikChannel ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import KikChannel, KikChannelProperties$/;" kind:namespace line:81 +KikChannelProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .kik_channel_properties import KikChannelProperties$/;" kind:namespace line:27 +KikChannelProperties ../cli\command_modules\botservice\botservice\models\kik_channel_properties.py /^class KikChannelProperties(Model):$/;" kind:class line:15 +KikChannelProperties ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import KikChannel, KikChannelProperties$/;" kind:namespace line:81 +Kind ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^class Kind(Enum):$/;" kind:class line:27 +Model ../cli\command_modules\botservice\botservice\models\bot_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\channel.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\check_name_availability_request_body.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\check_name_availability_response_body.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\connection_item_name.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\connection_setting_parameter.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\connection_setting_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\direct_line_channel_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\direct_line_site.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\email_channel_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\error.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\error_body.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\facebook_channel_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\facebook_page.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\kik_channel_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\ms_teams_channel_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\operation_display_info.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\operation_entity.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\resource.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\service_provider.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\service_provider_parameter.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\service_provider_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\service_provider_response_list.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\sku.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\skype_channel_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\slack_channel_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\sms_channel_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\telegram_channel_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\web_chat_channel_properties.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +Model ../cli\command_modules\botservice\botservice\models\web_chat_site.py /^from msrest.serialization import Model$/;" kind:namespace line:12 +MsTeamsChannel ../cli\command_modules\botservice\botservice\models\__init__.py /^from .ms_teams_channel import MsTeamsChannel$/;" kind:namespace line:24 +MsTeamsChannel ../cli\command_modules\botservice\botservice\models\ms_teams_channel.py /^class MsTeamsChannel(Channel):$/;" kind:class line:15 +MsTeamsChannel ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import MsTeamsChannel, MsTeamsChannelProperties$/;" kind:namespace line:48 +MsTeamsChannelProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .ms_teams_channel_properties import MsTeamsChannelProperties$/;" kind:namespace line:23 +MsTeamsChannelProperties ../cli\command_modules\botservice\botservice\models\ms_teams_channel_properties.py /^class MsTeamsChannelProperties(Model):$/;" kind:class line:15 +MsTeamsChannelProperties ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import MsTeamsChannel, MsTeamsChannelProperties$/;" kind:namespace line:48 +OperationDisplayInfo ../cli\command_modules\botservice\botservice\models\__init__.py /^from .operation_display_info import OperationDisplayInfo$/;" kind:namespace line:51 +OperationDisplayInfo ../cli\command_modules\botservice\botservice\models\operation_display_info.py /^class OperationDisplayInfo(Model):$/;" kind:class line:15 +OperationEntity ../cli\command_modules\botservice\botservice\models\__init__.py /^from .operation_entity import OperationEntity$/;" kind:namespace line:52 +OperationEntity ../cli\command_modules\botservice\botservice\models\operation_entity.py /^class OperationEntity(Model):$/;" kind:class line:15 +OperationEntityPaged ../cli\command_modules\botservice\botservice\models\__init__.py /^from .operation_entity_paged import OperationEntityPaged$/;" kind:namespace line:57 +OperationEntityPaged ../cli\command_modules\botservice\botservice\models\operation_entity_paged.py /^class OperationEntityPaged(Paged):$/;" kind:class line:15 +Operations ../cli\command_modules\botservice\botservice\azure_bot_service.py /^from .operations.operations import Operations$/;" kind:namespace line:18 +Operations ../cli\command_modules\botservice\botservice\operations\__init__.py /^from .operations import Operations$/;" kind:namespace line:14 +Operations ../cli\command_modules\botservice\botservice\operations\operations.py /^class Operations(object):$/;" kind:class line:19 +Paged ../cli\command_modules\botservice\botservice\models\bot_channel_paged.py /^from msrest.paging import Paged$/;" kind:namespace line:12 +Paged ../cli\command_modules\botservice\botservice\models\bot_paged.py /^from msrest.paging import Paged$/;" kind:namespace line:12 +Paged ../cli\command_modules\botservice\botservice\models\connection_setting_paged.py /^from msrest.paging import Paged$/;" kind:namespace line:12 +Paged ../cli\command_modules\botservice\botservice\models\operation_entity_paged.py /^from msrest.paging import Paged$/;" kind:namespace line:12 +Profile ../cli\command_modules\botservice\custom.py /^from azure.cli.core._profile import Profile$/;" kind:namespace line:13 +Resource ../cli\command_modules\botservice\botservice\models\__init__.py /^from .resource import Resource$/;" kind:namespace line:13 +Resource ../cli\command_modules\botservice\botservice\models\bot.py /^from .resource import Resource$/;" kind:namespace line:12 +Resource ../cli\command_modules\botservice\botservice\models\bot_channel.py /^from .resource import Resource$/;" kind:namespace line:12 +Resource ../cli\command_modules\botservice\botservice\models\connection_setting.py /^from .resource import Resource$/;" kind:namespace line:12 +Resource ../cli\command_modules\botservice\botservice\models\resource.py /^class Resource(Model):$/;" kind:class line:15 +ResourceGroupPreparer ../cli\command_modules\botservice\tests\latest\test_authsetting_commands.py /^from azure.cli.testsdk import ScenarioTest, ResourceGroupPreparer$/;" kind:namespace line:1 +ResourceGroupPreparer ../cli\command_modules\botservice\tests\latest\test_bot_commands.py /^from azure.cli.testsdk import ScenarioTest, ResourceGroupPreparer$/;" kind:namespace line:1 +ResourceType ../cli\command_modules\botservice\_webutils.py /^from azure.cli.core.profiles import ResourceType, get_sdk$/;" kind:namespace line:6 +ScenarioTest ../cli\command_modules\botservice\tests\latest\test_authsetting_commands.py /^from azure.cli.testsdk import ScenarioTest, ResourceGroupPreparer$/;" kind:namespace line:1 +ScenarioTest ../cli\command_modules\botservice\tests\latest\test_bot_commands.py /^from azure.cli.testsdk import ScenarioTest, ResourceGroupPreparer$/;" kind:namespace line:1 +Serializer ../cli\command_modules\botservice\botservice\azure_bot_service.py /^from msrest import Serializer, Deserializer$/;" kind:namespace line:13 +ServiceClient ../cli\command_modules\botservice\botservice\azure_bot_service.py /^from msrest.service_client import ServiceClient$/;" kind:namespace line:12 +ServiceProvider ../cli\command_modules\botservice\botservice\models\__init__.py /^from .service_provider import ServiceProvider$/;" kind:namespace line:47 +ServiceProvider ../cli\command_modules\botservice\botservice\models\service_provider.py /^class ServiceProvider(Model):$/;" kind:class line:15 +ServiceProviderParameter ../cli\command_modules\botservice\botservice\models\__init__.py /^from .service_provider_parameter import ServiceProviderParameter$/;" kind:namespace line:45 +ServiceProviderParameter ../cli\command_modules\botservice\botservice\models\service_provider_parameter.py /^class ServiceProviderParameter(Model):$/;" kind:class line:15 +ServiceProviderProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .service_provider_properties import ServiceProviderProperties$/;" kind:namespace line:46 +ServiceProviderProperties ../cli\command_modules\botservice\botservice\models\service_provider_properties.py /^class ServiceProviderProperties(Model):$/;" kind:class line:15 +ServiceProviderResponseList ../cli\command_modules\botservice\botservice\models\__init__.py /^from .service_provider_response_list import ServiceProviderResponseList$/;" kind:namespace line:48 +ServiceProviderResponseList ../cli\command_modules\botservice\botservice\models\service_provider_response_list.py /^class ServiceProviderResponseList(Model):$/;" kind:class line:15 +Sku ../cli\command_modules\botservice\botservice\models\__init__.py /^from .sku import Sku$/;" kind:namespace line:12 +Sku ../cli\command_modules\botservice\botservice\models\sku.py /^class Sku(Model):$/;" kind:class line:15 +SkuName ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^class SkuName(Enum):$/;" kind:class line:15 +SkuTier ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^class SkuTier(Enum):$/;" kind:class line:21 +SkypeChannel ../cli\command_modules\botservice\botservice\models\__init__.py /^from .skype_channel import SkypeChannel$/;" kind:namespace line:26 +SkypeChannel ../cli\command_modules\botservice\botservice\models\skype_channel.py /^class SkypeChannel(Channel):$/;" kind:class line:15 +SkypeChannel ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import SkypeChannel, SkypeChannelProperties$/;" kind:namespace line:64 +SkypeChannelProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .skype_channel_properties import SkypeChannelProperties$/;" kind:namespace line:25 +SkypeChannelProperties ../cli\command_modules\botservice\botservice\models\skype_channel_properties.py /^class SkypeChannelProperties(Model):$/;" kind:class line:15 +SkypeChannelProperties ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import SkypeChannel, SkypeChannelProperties$/;" kind:namespace line:64 +SlackChannel ../cli\command_modules\botservice\botservice\models\__init__.py /^from .slack_channel import SlackChannel$/;" kind:namespace line:40 +SlackChannel ../cli\command_modules\botservice\botservice\models\slack_channel.py /^class SlackChannel(Channel):$/;" kind:class line:15 +SlackChannel ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import SlackChannel, SlackChannelProperties$/;" kind:namespace line:153 +SlackChannelProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .slack_channel_properties import SlackChannelProperties$/;" kind:namespace line:39 +SlackChannelProperties ../cli\command_modules\botservice\botservice\models\slack_channel_properties.py /^class SlackChannelProperties(Model):$/;" kind:class line:15 +SlackChannelProperties ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import SlackChannel, SlackChannelProperties$/;" kind:namespace line:153 +SmsChannel ../cli\command_modules\botservice\botservice\models\__init__.py /^from .sms_channel import SmsChannel$/;" kind:namespace line:38 +SmsChannel ../cli\command_modules\botservice\botservice\models\sms_channel.py /^class SmsChannel(Channel):$/;" kind:class line:15 +SmsChannel ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import SmsChannel, SmsChannelProperties$/;" kind:namespace line:138 +SmsChannelProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .sms_channel_properties import SmsChannelProperties$/;" kind:namespace line:37 +SmsChannelProperties ../cli\command_modules\botservice\botservice\models\sms_channel_properties.py /^class SmsChannelProperties(Model):$/;" kind:class line:15 +SmsChannelProperties ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import SmsChannel, SmsChannelProperties$/;" kind:namespace line:138 +TelegramChannel ../cli\command_modules\botservice\botservice\models\__init__.py /^from .telegram_channel import TelegramChannel$/;" kind:namespace line:36 +TelegramChannel ../cli\command_modules\botservice\botservice\models\telegram_channel.py /^class TelegramChannel(Channel):$/;" kind:class line:15 +TelegramChannel ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import TelegramChannel, TelegramChannelProperties$/;" kind:namespace line:126 +TelegramChannelProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .telegram_channel_properties import TelegramChannelProperties$/;" kind:namespace line:35 +TelegramChannelProperties ../cli\command_modules\botservice\botservice\models\telegram_channel_properties.py /^class TelegramChannelProperties(Model):$/;" kind:class line:15 +TelegramChannelProperties ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import TelegramChannel, TelegramChannelProperties$/;" kind:namespace line:126 +VERSION ../cli\command_modules\botservice\botservice\__init__.py /^from .version import VERSION$/;" kind:namespace line:13 +VERSION ../cli\command_modules\botservice\botservice\azure_bot_service.py /^from .version import VERSION$/;" kind:namespace line:15 +VERSION ../cli\command_modules\botservice\botservice\version.py /^VERSION = "0.1.0"$/;" kind:variable line:12 +WebChatChannel ../cli\command_modules\botservice\botservice\models\__init__.py /^from .web_chat_channel import WebChatChannel$/;" kind:namespace line:31 +WebChatChannel ../cli\command_modules\botservice\botservice\models\web_chat_channel.py /^class WebChatChannel(Channel):$/;" kind:class line:15 +WebChatChannel ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import WebChatChannel, WebChatChannelProperties, WebChatSite$/;" kind:namespace line:96 +WebChatChannelProperties ../cli\command_modules\botservice\botservice\models\__init__.py /^from .web_chat_channel_properties import WebChatChannelProperties$/;" kind:namespace line:30 +WebChatChannelProperties ../cli\command_modules\botservice\botservice\models\web_chat_channel_properties.py /^class WebChatChannelProperties(Model):$/;" kind:class line:15 +WebChatChannelProperties ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import WebChatChannel, WebChatChannelProperties, WebChatSite$/;" kind:namespace line:96 +WebChatSite ../cli\command_modules\botservice\botservice\models\__init__.py /^from .web_chat_site import WebChatSite$/;" kind:namespace line:29 +WebChatSite ../cli\command_modules\botservice\botservice\models\web_chat_site.py /^class WebChatSite(Model):$/;" kind:class line:15 +WebChatSite ../cli\command_modules\botservice\channel_operations.py /^ from azure.cli.command_modules.botservice.botservice.models import WebChatChannel, WebChatChannelProperties, WebChatSite$/;" kind:namespace line:96 +WebSiteManagementClient ../cli\command_modules\botservice\_webutils.py /^ from azure.mgmt.web import WebSiteManagementClient$/;" kind:namespace line:53 +__all__ ../cli\command_modules\botservice\botservice\__init__.py /^__all__ = ['AzureBotService']$/;" kind:variable line:15 +__all__ ../cli\command_modules\botservice\botservice\models\__init__.py /^__all__ = [$/;" kind:variable line:66 +__all__ ../cli\command_modules\botservice\botservice\operations\__init__.py /^__all__ = [$/;" kind:variable line:17 +__init__ ../cli\command_modules\botservice\__init__.py /^ def __init__(self, cli_ctx=None):$/;" kind:member line:13 +__init__ ../cli\command_modules\botservice\botservice\azure_bot_service.py /^ def __init__($/;" kind:member line:36 +__init__ ../cli\command_modules\botservice\botservice\azure_bot_service.py /^ def __init__($/;" kind:member line:78 +__init__ ../cli\command_modules\botservice\botservice\models\bot.py /^ def __init__(self, location=None, tags=None, sku=None, kind=None, etag=None, properties=None):$/;" kind:member line:60 +__init__ ../cli\command_modules\botservice\botservice\models\bot_channel.py /^ def __init__(self, location=None, tags=None, sku=None, kind=None, etag=None, properties=None):$/;" kind:member line:60 +__init__ ../cli\command_modules\botservice\botservice\models\bot_channel_paged.py /^ def __init__(self, *args, **kwargs):$/;" kind:member line:25 +__init__ ../cli\command_modules\botservice\botservice\models\bot_paged.py /^ def __init__(self, *args, **kwargs):$/;" kind:member line:25 +__init__ ../cli\command_modules\botservice\botservice\models\bot_properties.py /^ def __init__(self, display_name, endpoint, msa_app_id, description=None, icon_url=None, developer_app_insight_key=None, developer_app_insights_api_key=None, developer_app_insights_application_id=None, luis_app_ids=None, luis_key=None):$/;" kind:member line:77 +__init__ ../cli\command_modules\botservice\botservice\models\channel.py /^ def __init__(self):$/;" kind:member line:39 +__init__ ../cli\command_modules\botservice\botservice\models\check_name_availability_request_body.py /^ def __init__(self, name=None, type=None):$/;" kind:member line:32 +__init__ ../cli\command_modules\botservice\botservice\models\check_name_availability_response_body.py /^ def __init__(self, valid=None, message=None):$/;" kind:member line:31 +__init__ ../cli\command_modules\botservice\botservice\models\connection_item_name.py /^ def __init__(self):$/;" kind:member line:33 +__init__ ../cli\command_modules\botservice\botservice\models\connection_setting.py /^ def __init__(self, location=None, tags=None, sku=None, kind=None, etag=None, properties=None):$/;" kind:member line:61 +__init__ ../cli\command_modules\botservice\botservice\models\connection_setting_paged.py /^ def __init__(self, *args, **kwargs):$/;" kind:member line:25 +__init__ ../cli\command_modules\botservice\botservice\models\connection_setting_parameter.py /^ def __init__(self, key=None, value=None):$/;" kind:member line:30 +__init__ ../cli\command_modules\botservice\botservice\models\connection_setting_properties.py /^ def __init__(self, client_id=None, client_secret=None, scopes=None, service_provider_id=None, service_provider_display_name=None, parameters=None):$/;" kind:member line:56 +__init__ ../cli\command_modules\botservice\botservice\models\direct_line_channel.py /^ def __init__(self, properties=None):$/;" kind:member line:35 +__init__ ../cli\command_modules\botservice\botservice\models\direct_line_channel_properties.py /^ def __init__(self, sites=None):$/;" kind:member line:26 +__init__ ../cli\command_modules\botservice\botservice\models\direct_line_site.py /^ def __init__(self, site_name, is_enabled, is_v1_enabled, is_v3_enabled):$/;" kind:member line:61 +__init__ ../cli\command_modules\botservice\botservice\models\email_channel.py /^ def __init__(self, properties=None):$/;" kind:member line:34 +__init__ ../cli\command_modules\botservice\botservice\models\email_channel_properties.py /^ def __init__(self, email_address, password, is_enabled):$/;" kind:member line:39 +__init__ ../cli\command_modules\botservice\botservice\models\error.py /^ def __init__(self, deserialize, response, *args):$/;" kind:member line:38 +__init__ ../cli\command_modules\botservice\botservice\models\error.py /^ def __init__(self, error=None):$/;" kind:member line:27 +__init__ ../cli\command_modules\botservice\botservice\models\error_body.py /^ def __init__(self, code, message):$/;" kind:member line:34 +__init__ ../cli\command_modules\botservice\botservice\models\facebook_channel.py /^ def __init__(self, properties=None):$/;" kind:member line:33 +__init__ ../cli\command_modules\botservice\botservice\models\facebook_channel_properties.py /^ def __init__(self, app_id, app_secret, is_enabled, pages=None):$/;" kind:member line:54 +__init__ ../cli\command_modules\botservice\botservice\models\facebook_page.py /^ def __init__(self, id, access_token):$/;" kind:member line:35 +__init__ ../cli\command_modules\botservice\botservice\models\kik_channel.py /^ def __init__(self, properties=None):$/;" kind:member line:33 +__init__ ../cli\command_modules\botservice\botservice\models\kik_channel_properties.py /^ def __init__(self, user_name, api_key, is_enabled, is_validated=None):$/;" kind:member line:42 +__init__ ../cli\command_modules\botservice\botservice\models\ms_teams_channel.py /^ def __init__(self, properties=None):$/;" kind:member line:34 +__init__ ../cli\command_modules\botservice\botservice\models\ms_teams_channel_properties.py /^ def __init__(self, is_enabled, enable_messaging=None, enable_media_cards=None, enable_video=None, enable_calling=None, call_mode=None):$/;" kind:member line:45 +__init__ ../cli\command_modules\botservice\botservice\models\operation_display_info.py /^ def __init__(self, description=None, operation=None, provider=None, resource=None):$/;" kind:member line:36 +__init__ ../cli\command_modules\botservice\botservice\models\operation_entity.py /^ def __init__(self, name=None, display=None, origin=None, properties=None):$/;" kind:member line:35 +__init__ ../cli\command_modules\botservice\botservice\models\operation_entity_paged.py /^ def __init__(self, *args, **kwargs):$/;" kind:member line:25 +__init__ ../cli\command_modules\botservice\botservice\models\resource.py /^ def __init__(self, location=None, tags=None, sku=None, kind=None, etag=None):$/;" kind:member line:57 +__init__ ../cli\command_modules\botservice\botservice\models\service_provider.py /^ def __init__(self, properties=None):$/;" kind:member line:26 +__init__ ../cli\command_modules\botservice\botservice\models\service_provider_parameter.py /^ def __init__(self):$/;" kind:member line:53 +__init__ ../cli\command_modules\botservice\botservice\models\service_provider_properties.py /^ def __init__(self, parameters=None):$/;" kind:member line:53 +__init__ ../cli\command_modules\botservice\botservice\models\service_provider_response_list.py /^ def __init__(self, next_link=None):$/;" kind:member line:38 +__init__ ../cli\command_modules\botservice\botservice\models\sku.py /^ def __init__(self, name):$/;" kind:member line:38 +__init__ ../cli\command_modules\botservice\botservice\models\skype_channel.py /^ def __init__(self, properties=None):$/;" kind:member line:34 +__init__ ../cli\command_modules\botservice\botservice\models\skype_channel_properties.py /^ def __init__(self, is_enabled, enable_messaging=None, enable_media_cards=None, enable_video=None, enable_calling=None, enable_screen_sharing=None, enable_groups=None, groups_mode=None, calling_web_hook=None):$/;" kind:member line:54 +__init__ ../cli\command_modules\botservice\botservice\models\slack_channel.py /^ def __init__(self, properties=None):$/;" kind:member line:34 +__init__ ../cli\command_modules\botservice\botservice\models\slack_channel_properties.py /^ def __init__(self, client_id, client_secret, verification_token, is_enabled, landing_page_url=None):$/;" kind:member line:67 +__init__ ../cli\command_modules\botservice\botservice\models\sms_channel.py /^ def __init__(self, properties=None):$/;" kind:member line:33 +__init__ ../cli\command_modules\botservice\botservice\models\sms_channel_properties.py /^ def __init__(self, phone, account_sid, auth_token, is_enabled, is_validated=None):$/;" kind:member line:47 +__init__ ../cli\command_modules\botservice\botservice\models\telegram_channel.py /^ def __init__(self, properties=None):$/;" kind:member line:34 +__init__ ../cli\command_modules\botservice\botservice\models\telegram_channel_properties.py /^ def __init__(self, access_token, is_enabled, is_validated=None):$/;" kind:member line:38 +__init__ ../cli\command_modules\botservice\botservice\models\web_chat_channel.py /^ def __init__(self, properties=None):$/;" kind:member line:34 +__init__ ../cli\command_modules\botservice\botservice\models\web_chat_channel_properties.py /^ def __init__(self, sites=None):$/;" kind:member line:36 +__init__ ../cli\command_modules\botservice\botservice\models\web_chat_site.py /^ def __init__(self, site_name, is_enabled, enable_preview):$/;" kind:member line:56 +__init__ ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^ def __init__(self, client, config, serializer, deserializer):$/;" kind:member line:30 +__init__ ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^ def __init__(self, client, config, serializer, deserializer):$/;" kind:member line:30 +__init__ ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^ def __init__(self, client, config, serializer, deserializer):$/;" kind:member line:30 +__init__ ../cli\command_modules\botservice\botservice\operations\operations.py /^ def __init__(self, client, config, serializer, deserializer):$/;" kind:member line:31 +__init__ ../cli\command_modules\botservice\channel_operations.py /^ def __init__(self):$/;" kind:member line:167 +__init__.py ../__init__.py 1;" kind:file line:1 +__init__.py ../cli\__init__.py 1;" kind:file line:1 +__init__.py ../cli\command_modules\__init__.py 1;" kind:file line:1 +__init__.py ../cli\command_modules\botservice\__init__.py 1;" kind:file line:1 +__init__.py ../cli\command_modules\botservice\botservice\__init__.py 1;" kind:file line:1 +__init__.py ../cli\command_modules\botservice\botservice\models\__init__.py 1;" kind:file line:1 +__init__.py ../cli\command_modules\botservice\botservice\operations\__init__.py 1;" kind:file line:1 +__init__.py ../cli\command_modules\botservice\tests\__init__.py 1;" kind:file line:1 +__init__.py ../cli\command_modules\botservice\tests\latest\__init__.py 1;" kind:file line:1 +__version__ ../cli\command_modules\botservice\botservice\__init__.py /^__version__ = VERSION$/;" kind:variable line:17 +_attribute_map ../cli\command_modules\botservice\botservice\models\bot.py /^ _attribute_map = {$/;" kind:variable line:48 +_attribute_map ../cli\command_modules\botservice\botservice\models\bot_channel.py /^ _attribute_map = {$/;" kind:variable line:48 +_attribute_map ../cli\command_modules\botservice\botservice\models\bot_channel_paged.py /^ _attribute_map = {$/;" kind:variable line:20 +_attribute_map ../cli\command_modules\botservice\botservice\models\bot_paged.py /^ _attribute_map = {$/;" kind:variable line:20 +_attribute_map ../cli\command_modules\botservice\botservice\models\bot_properties.py /^ _attribute_map = {$/;" kind:variable line:61 +_attribute_map ../cli\command_modules\botservice\botservice\models\channel.py /^ _attribute_map = {$/;" kind:variable line:31 +_attribute_map ../cli\command_modules\botservice\botservice\models\check_name_availability_request_body.py /^ _attribute_map = {$/;" kind:variable line:27 +_attribute_map ../cli\command_modules\botservice\botservice\models\check_name_availability_response_body.py /^ _attribute_map = {$/;" kind:variable line:26 +_attribute_map ../cli\command_modules\botservice\botservice\models\connection_item_name.py /^ _attribute_map = {$/;" kind:variable line:29 +_attribute_map ../cli\command_modules\botservice\botservice\models\connection_setting.py /^ _attribute_map = {$/;" kind:variable line:49 +_attribute_map ../cli\command_modules\botservice\botservice\models\connection_setting_paged.py /^ _attribute_map = {$/;" kind:variable line:20 +_attribute_map ../cli\command_modules\botservice\botservice\models\connection_setting_parameter.py /^ _attribute_map = {$/;" kind:variable line:25 +_attribute_map ../cli\command_modules\botservice\botservice\models\connection_setting_properties.py /^ _attribute_map = {$/;" kind:variable line:46 +_attribute_map ../cli\command_modules\botservice\botservice\models\direct_line_channel.py /^ _attribute_map = {$/;" kind:variable line:30 +_attribute_map ../cli\command_modules\botservice\botservice\models\direct_line_channel_properties.py /^ _attribute_map = {$/;" kind:variable line:22 +_attribute_map ../cli\command_modules\botservice\botservice\models\direct_line_site.py /^ _attribute_map = {$/;" kind:variable line:51 +_attribute_map ../cli\command_modules\botservice\botservice\models\email_channel.py /^ _attribute_map = {$/;" kind:variable line:29 +_attribute_map ../cli\command_modules\botservice\botservice\models\email_channel_properties.py /^ _attribute_map = {$/;" kind:variable line:33 +_attribute_map ../cli\command_modules\botservice\botservice\models\error.py /^ _attribute_map = {$/;" kind:variable line:23 +_attribute_map ../cli\command_modules\botservice\botservice\models\error_body.py /^ _attribute_map = {$/;" kind:variable line:29 +_attribute_map ../cli\command_modules\botservice\botservice\models\facebook_channel.py /^ _attribute_map = {$/;" kind:variable line:28 +_attribute_map ../cli\command_modules\botservice\botservice\models\facebook_channel_properties.py /^ _attribute_map = {$/;" kind:variable line:45 +_attribute_map ../cli\command_modules\botservice\botservice\models\facebook_page.py /^ _attribute_map = {$/;" kind:variable line:30 +_attribute_map ../cli\command_modules\botservice\botservice\models\kik_channel.py /^ _attribute_map = {$/;" kind:variable line:28 +_attribute_map ../cli\command_modules\botservice\botservice\models\kik_channel_properties.py /^ _attribute_map = {$/;" kind:variable line:35 +_attribute_map ../cli\command_modules\botservice\botservice\models\ms_teams_channel.py /^ _attribute_map = {$/;" kind:variable line:29 +_attribute_map ../cli\command_modules\botservice\botservice\models\ms_teams_channel_properties.py /^ _attribute_map = {$/;" kind:variable line:36 +_attribute_map ../cli\command_modules\botservice\botservice\models\operation_display_info.py /^ _attribute_map = {$/;" kind:variable line:29 +_attribute_map ../cli\command_modules\botservice\botservice\models\operation_entity.py /^ _attribute_map = {$/;" kind:variable line:28 +_attribute_map ../cli\command_modules\botservice\botservice\models\operation_entity_paged.py /^ _attribute_map = {$/;" kind:variable line:20 +_attribute_map ../cli\command_modules\botservice\botservice\models\resource.py /^ _attribute_map = {$/;" kind:variable line:46 +_attribute_map ../cli\command_modules\botservice\botservice\models\service_provider.py /^ _attribute_map = {$/;" kind:variable line:22 +_attribute_map ../cli\command_modules\botservice\botservice\models\service_provider_parameter.py /^ _attribute_map = {$/;" kind:variable line:44 +_attribute_map ../cli\command_modules\botservice\botservice\models\service_provider_properties.py /^ _attribute_map = {$/;" kind:variable line:44 +_attribute_map ../cli\command_modules\botservice\botservice\models\service_provider_response_list.py /^ _attribute_map = {$/;" kind:variable line:33 +_attribute_map ../cli\command_modules\botservice\botservice\models\sku.py /^ _attribute_map = {$/;" kind:variable line:33 +_attribute_map ../cli\command_modules\botservice\botservice\models\skype_channel.py /^ _attribute_map = {$/;" kind:variable line:29 +_attribute_map ../cli\command_modules\botservice\botservice\models\skype_channel_properties.py /^ _attribute_map = {$/;" kind:variable line:42 +_attribute_map ../cli\command_modules\botservice\botservice\models\slack_channel.py /^ _attribute_map = {$/;" kind:variable line:29 +_attribute_map ../cli\command_modules\botservice\botservice\models\slack_channel_properties.py /^ _attribute_map = {$/;" kind:variable line:55 +_attribute_map ../cli\command_modules\botservice\botservice\models\sms_channel.py /^ _attribute_map = {$/;" kind:variable line:28 +_attribute_map ../cli\command_modules\botservice\botservice\models\sms_channel_properties.py /^ _attribute_map = {$/;" kind:variable line:39 +_attribute_map ../cli\command_modules\botservice\botservice\models\telegram_channel.py /^ _attribute_map = {$/;" kind:variable line:29 +_attribute_map ../cli\command_modules\botservice\botservice\models\telegram_channel_properties.py /^ _attribute_map = {$/;" kind:variable line:32 +_attribute_map ../cli\command_modules\botservice\botservice\models\web_chat_channel.py /^ _attribute_map = {$/;" kind:variable line:29 +_attribute_map ../cli\command_modules\botservice\botservice\models\web_chat_channel_properties.py /^ _attribute_map = {$/;" kind:variable line:31 +_attribute_map ../cli\command_modules\botservice\botservice\models\web_chat_site.py /^ _attribute_map = {$/;" kind:variable line:47 +_build_app_settings_output ../cli\command_modules\botservice\_webutils.py /^def _build_app_settings_output(app_settings, slot_cfg_names):$/;" kind:function line:78 +_client_factory.py ../cli\command_modules\botservice\_client_factory.py 1;" kind:file line:1 +_exception_handler.py ../cli\command_modules\botservice\_exception_handler.py 1;" kind:file line:1 +_generic_site_operation ../cli\command_modules\botservice\_webutils.py /^def _generic_site_operation(cli_ctx, resource_group_name, name, operation_name, slot=None,$/;" kind:function line:57 +_get_scm_url ../cli\command_modules\botservice\_webutils.py /^def _get_scm_url(cmd, resource_group_name, name, slot=None):$/;" kind:function line:92 +_get_site_credential ../cli\command_modules\botservice\_webutils.py /^def _get_site_credential(cli_ctx, resource_group_name, name, slot=None):$/;" kind:function line:72 +_help.py ../cli\command_modules\botservice\_help.py 1;" kind:file line:1 +_params.py ../cli\command_modules\botservice\_params.py 1;" kind:file line:1 +_process_parameters ../cli\command_modules\botservice\_webutils.py /^def _process_parameters(parameter_lists):$/;" kind:function line:11 +_subtype_map ../cli\command_modules\botservice\botservice\models\channel.py /^ _subtype_map = {$/;" kind:variable line:35 +_try_parse_json_object ../cli\command_modules\botservice\_webutils.py /^ def _try_parse_json_object(value):$/;" kind:function line:12 +_validation ../cli\command_modules\botservice\botservice\models\bot.py /^ _validation = {$/;" kind:variable line:42 +_validation ../cli\command_modules\botservice\botservice\models\bot_channel.py /^ _validation = {$/;" kind:variable line:42 +_validation ../cli\command_modules\botservice\botservice\models\bot_properties.py /^ _validation = {$/;" kind:variable line:52 +_validation ../cli\command_modules\botservice\botservice\models\channel.py /^ _validation = {$/;" kind:variable line:27 +_validation ../cli\command_modules\botservice\botservice\models\connection_item_name.py /^ _validation = {$/;" kind:variable line:25 +_validation ../cli\command_modules\botservice\botservice\models\connection_setting.py /^ _validation = {$/;" kind:variable line:43 +_validation ../cli\command_modules\botservice\botservice\models\connection_setting_properties.py /^ _validation = {$/;" kind:variable line:42 +_validation ../cli\command_modules\botservice\botservice\models\direct_line_channel.py /^ _validation = {$/;" kind:variable line:26 +_validation ../cli\command_modules\botservice\botservice\models\direct_line_site.py /^ _validation = {$/;" kind:variable line:41 +_validation ../cli\command_modules\botservice\botservice\models\email_channel.py /^ _validation = {$/;" kind:variable line:25 +_validation ../cli\command_modules\botservice\botservice\models\email_channel_properties.py /^ _validation = {$/;" kind:variable line:27 +_validation ../cli\command_modules\botservice\botservice\models\error_body.py /^ _validation = {$/;" kind:variable line:24 +_validation ../cli\command_modules\botservice\botservice\models\facebook_channel.py /^ _validation = {$/;" kind:variable line:24 +_validation ../cli\command_modules\botservice\botservice\models\facebook_channel_properties.py /^ _validation = {$/;" kind:variable line:37 +_validation ../cli\command_modules\botservice\botservice\models\facebook_page.py /^ _validation = {$/;" kind:variable line:25 +_validation ../cli\command_modules\botservice\botservice\models\kik_channel.py /^ _validation = {$/;" kind:variable line:24 +_validation ../cli\command_modules\botservice\botservice\models\kik_channel_properties.py /^ _validation = {$/;" kind:variable line:29 +_validation ../cli\command_modules\botservice\botservice\models\ms_teams_channel.py /^ _validation = {$/;" kind:variable line:25 +_validation ../cli\command_modules\botservice\botservice\models\ms_teams_channel_properties.py /^ _validation = {$/;" kind:variable line:32 +_validation ../cli\command_modules\botservice\botservice\models\resource.py /^ _validation = {$/;" kind:variable line:40 +_validation ../cli\command_modules\botservice\botservice\models\service_provider_parameter.py /^ _validation = {$/;" kind:variable line:35 +_validation ../cli\command_modules\botservice\botservice\models\service_provider_properties.py /^ _validation = {$/;" kind:variable line:36 +_validation ../cli\command_modules\botservice\botservice\models\service_provider_response_list.py /^ _validation = {$/;" kind:variable line:29 +_validation ../cli\command_modules\botservice\botservice\models\sku.py /^ _validation = {$/;" kind:variable line:28 +_validation ../cli\command_modules\botservice\botservice\models\skype_channel.py /^ _validation = {$/;" kind:variable line:25 +_validation ../cli\command_modules\botservice\botservice\models\skype_channel_properties.py /^ _validation = {$/;" kind:variable line:38 +_validation ../cli\command_modules\botservice\botservice\models\slack_channel.py /^ _validation = {$/;" kind:variable line:25 +_validation ../cli\command_modules\botservice\botservice\models\slack_channel_properties.py /^ _validation = {$/;" kind:variable line:44 +_validation ../cli\command_modules\botservice\botservice\models\sms_channel.py /^ _validation = {$/;" kind:variable line:24 +_validation ../cli\command_modules\botservice\botservice\models\sms_channel_properties.py /^ _validation = {$/;" kind:variable line:32 +_validation ../cli\command_modules\botservice\botservice\models\telegram_channel.py /^ _validation = {$/;" kind:variable line:25 +_validation ../cli\command_modules\botservice\botservice\models\telegram_channel_properties.py /^ _validation = {$/;" kind:variable line:27 +_validation ../cli\command_modules\botservice\botservice\models\web_chat_channel.py /^ _validation = {$/;" kind:variable line:25 +_validation ../cli\command_modules\botservice\botservice\models\web_chat_channel_properties.py /^ _validation = {$/;" kind:variable line:27 +_validation ../cli\command_modules\botservice\botservice\models\web_chat_site.py /^ _validation = {$/;" kind:variable line:38 +_webutils.py ../cli\command_modules\botservice\_webutils.py 1;" kind:file line:1 +adal ../cli\command_modules\botservice\custom.py /^import adal # pylint: disable=import-error$/;" kind:namespace line:9 +azure_bot_service.py ../cli\command_modules\botservice\botservice\azure_bot_service.py 1;" kind:file line:1 +azure_bot_service_enums.py ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py 1;" kind:file line:1 +bot ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ bot = "bot"$/;" kind:variable line:31 +bot.py ../cli\command_modules\botservice\botservice\models\bot.py 1;" kind:file line:1 +bot_channel.py ../cli\command_modules\botservice\botservice\models\bot_channel.py 1;" kind:file line:1 +bot_channel_paged.py ../cli\command_modules\botservice\botservice\models\bot_channel_paged.py 1;" kind:file line:1 +bot_connection_operations.py ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py 1;" kind:file line:1 +bot_exception_handler ../cli\command_modules\botservice\_exception_handler.py /^def bot_exception_handler(ex):$/;" kind:function line:9 +bot_exception_handler ../cli\command_modules\botservice\commands.py /^from azure.cli.command_modules.botservice._exception_handler import bot_exception_handler$/;" kind:namespace line:10 +bot_paged.py ../cli\command_modules\botservice\botservice\models\bot_paged.py 1;" kind:file line:1 +bot_properties.py ../cli\command_modules\botservice\botservice\models\bot_properties.py 1;" kind:file line:1 +bots_operations.py ../cli\command_modules\botservice\botservice\operations\bots_operations.py 1;" kind:file line:1 +channel.py ../cli\command_modules\botservice\botservice\models\channel.py 1;" kind:file line:1 +channelOperationsInstance ../cli\command_modules\botservice\channel_operations.py /^channelOperationsInstance = ChannelOperations()$/;" kind:variable line:193 +channelTitle ../cli\command_modules\botservice\_help.py /^ channelTitle = channel[:1].upper() + channel[1:]$/;" kind:variable line:166 +channel_operations.py ../cli\command_modules\botservice\channel_operations.py 1;" kind:file line:1 +channels_operations.py ../cli\command_modules\botservice\botservice\operations\channels_operations.py 1;" kind:file line:1 +check_name_availability_request_body.py ../cli\command_modules\botservice\botservice\models\check_name_availability_request_body.py 1;" kind:file line:1 +check_name_availability_response_body.py ../cli\command_modules\botservice\botservice\models\check_name_availability_response_body.py 1;" kind:file line:1 +check_response_status ../cli\command_modules\botservice\custom.py /^def check_response_status(response):$/;" kind:function line:335 +commands.py ../cli\command_modules\botservice\commands.py 1;" kind:file line:1 +connection_item_name.py ../cli\command_modules\botservice\botservice\models\connection_item_name.py 1;" kind:file line:1 +connection_setting.py ../cli\command_modules\botservice\botservice\models\connection_setting.py 1;" kind:file line:1 +connection_setting_paged.py ../cli\command_modules\botservice\botservice\models\connection_setting_paged.py 1;" kind:file line:1 +connection_setting_parameter.py ../cli\command_modules\botservice\botservice\models\connection_setting_parameter.py 1;" kind:file line:1 +connection_setting_properties.py ../cli\command_modules\botservice\botservice\models\connection_setting_properties.py 1;" kind:file line:1 +create ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^ def create($/;" kind:member line:158 +create ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^ def create($/;" kind:member line:39 +create ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^ def create($/;" kind:member line:39 +create ../cli\command_modules\botservice\custom.py /^def create(cmd, client, resource_group_name, resource_name, kind, description=None, display_name=None,$/;" kind:function line:72 +create_app ../cli\command_modules\botservice\custom.py /^def create_app(cmd, client, resource_group_name, resource_name, description, kind, appid, password, storageAccountName,$/;" kind:function line:227 +create_auth_setting ../cli\command_modules\botservice\tests\latest\test_authsetting_commands.py /^ def create_auth_setting(self, resource_group):$/;" kind:member line:7 +create_bot_json ../cli\command_modules\botservice\custom.py /^def create_bot_json(cmd, client, resource_group_name, resource_name, app_password=None, raw_bot_properties=None):$/;" kind:function line:138 +create_channel ../cli\command_modules\botservice\channel_operations.py /^def create_channel(client, channel, channel_name, resource_group_name, resource_name):$/;" kind:function line:8 +create_connection ../cli\command_modules\botservice\custom.py /^def create_connection(client, resource_group_name, resource_name, connection_name, client_id,$/;" kind:function line:186 +create_upload_zip ../cli\command_modules\botservice\custom.py /^def create_upload_zip(code_dir):$/;" kind:function line:306 +custom.py ../cli\command_modules\botservice\custom.py 1;" kind:file line:1 +delete ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^ def delete($/;" kind:member line:371 +delete ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^ def delete($/;" kind:member line:191 +delete ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^ def delete($/;" kind:member line:203 +delete ../cli\command_modules\botservice\channel_operations.py /^ def delete(self, resource_group_name, resource_name):$/;" kind:function line:182 +delete_bot ../cli\command_modules\botservice\custom.py /^def delete_bot(client, resource_group_name, resource_name):$/;" kind:function line:131 +delete_connection ../cli\command_modules\botservice\custom.py /^def delete_connection(client, resource_group_name, resource_name, connection_name):$/;" kind:function line:212 +delete_wrapper ../cli\command_modules\botservice\channel_operations.py /^ def delete_wrapper(channel_name):$/;" kind:function line:181 +deploy_arm_template ../cli\command_modules\botservice\_webutils.py /^def deploy_arm_template(cli_ctx, resource_group_name, # pylint: disable=too-many-arguments$/;" kind:function line:29 +designer ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ designer = "designer"$/;" kind:variable line:30 +direct_line_channel ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ direct_line_channel = "DirectLineChannel"$/;" kind:variable line:45 +direct_line_channel.py ../cli\command_modules\botservice\botservice\models\direct_line_channel.py 1;" kind:file line:1 +direct_line_channel_properties.py ../cli\command_modules\botservice\botservice\models\direct_line_channel_properties.py 1;" kind:file line:1 +direct_line_site.py ../cli\command_modules\botservice\botservice\models\direct_line_site.py 1;" kind:file line:1 +directline_create ../cli\command_modules\botservice\channel_operations.py /^def directline_create(client, resource_group_name, resource_name, is_disabled=None,$/;" kind:function line:109 +disable ../cli\command_modules\botservice\__init__.py /^from azure.cli.command_modules.botservice._help import helps # pylint: disable=unused-import$/;" kind:namespace line:7 +disable ../cli\command_modules\botservice\_exception_handler.py /^ from msrest.exceptions import ClientRequestError # pylint: disable=import-error$/;" kind:namespace line:12 +disable ../cli\command_modules\botservice\custom.py /^from knack.prompting import prompt_y_n # pylint: disable=unused-import$/;" kind:namespace line:10 +disable ../cli\command_modules\botservice\custom.py /^import adal # pylint: disable=import-error$/;" kind:namespace line:9 +download_app ../cli\command_modules\botservice\custom.py /^def download_app(cmd, client, resource_group_name, resource_name, file_save_path=None):$/;" kind:function line:389 +email_channel ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ email_channel = "EmailChannel"$/;" kind:variable line:38 +email_channel.py ../cli\command_modules\botservice\botservice\models\email_channel.py 1;" kind:file line:1 +email_channel_properties.py ../cli\command_modules\botservice\botservice\models\email_channel_properties.py 1;" kind:file line:1 +email_create ../cli\command_modules\botservice\channel_operations.py /^def email_create(client, resource_group_name, resource_name, email_address, password, is_disabled=None):$/;" kind:function line:34 +enable_zip_deploy ../cli\command_modules\botservice\_webutils.py /^def enable_zip_deploy(cmd, resource_group_name, name, src, slot=None):$/;" kind:function line:103 +error ../cli\command_modules\botservice\_exception_handler.py /^ from msrest.exceptions import ClientRequestError # pylint: disable=import-error$/;" kind:namespace line:12 +error ../cli\command_modules\botservice\custom.py /^import adal # pylint: disable=import-error$/;" kind:namespace line:9 +error.py ../cli\command_modules\botservice\botservice\models\error.py 1;" kind:file line:1 +error_body.py ../cli\command_modules\botservice\botservice\models\error_body.py 1;" kind:file line:1 +f0 ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ f0 = "F0"$/;" kind:variable line:17 +facebook_channel ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ facebook_channel = "FacebookChannel"$/;" kind:variable line:37 +facebook_channel.py ../cli\command_modules\botservice\botservice\models\facebook_channel.py 1;" kind:file line:1 +facebook_channel_properties.py ../cli\command_modules\botservice\botservice\models\facebook_channel_properties.py 1;" kind:file line:1 +facebook_create ../cli\command_modules\botservice\channel_operations.py /^def facebook_create(client, resource_group_name, resource_name, page_id, app_id, app_secret, access_token, is_disabled=None): # pylint: disable=line-too-long$/;" kind:function line:21 +facebook_page.py ../cli\command_modules\botservice\botservice\models\facebook_page.py 1;" kind:file line:1 +free ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ free = "Free"$/;" kind:variable line:23 +function ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ function = "function"$/;" kind:variable line:32 +get ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^ def get($/;" kind:member line:306 +get ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^ def get($/;" kind:member line:244 +get ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^ def get($/;" kind:member line:259 +get ../cli\command_modules\botservice\channel_operations.py /^ def get(self, resource_group_name, resource_name):$/;" kind:function line:173 +get_app_settings ../cli\command_modules\botservice\_webutils.py /^def get_app_settings(cmd, resource_group_name, name, slot=None):$/;" kind:function line:85 +get_bot ../cli\command_modules\botservice\custom.py /^def get_bot(cmd, client, resource_group_name, resource_name, bot_json=None):$/;" kind:function line:167 +get_botChannels_client ../cli\command_modules\botservice\_client_factory.py /^def get_botChannels_client(cli_ctx, *_):$/;" kind:function line:21 +get_botOperations_client ../cli\command_modules\botservice\_client_factory.py /^def get_botOperations_client(cli_ctx, *_):$/;" kind:function line:13 +get_botServices_client ../cli\command_modules\botservice\_client_factory.py /^def get_botServices_client(cli_ctx, *_):$/;" kind:function line:17 +get_bot_site_name ../cli\command_modules\botservice\custom.py /^def get_bot_site_name(endpoint):$/;" kind:function line:25 +get_botservice_management_client ../cli\command_modules\botservice\__init__.py /^from azure.cli.command_modules.botservice._client_factory import get_botservice_management_client$/;" kind:namespace line:8 +get_botservice_management_client ../cli\command_modules\botservice\_client_factory.py /^def get_botservice_management_client(cli_ctx, *_):$/;" kind:function line:7 +get_check_name_availability ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^ def get_check_name_availability($/;" kind:member line:437 +get_connection ../cli\command_modules\botservice\custom.py /^def get_connection(client, resource_group_name, resource_name, connection_name):$/;" kind:function line:182 +get_connections ../cli\command_modules\botservice\custom.py /^def get_connections(client, resource_group_name, resource_name):$/;" kind:function line:178 +get_file_json ../cli\command_modules\botservice\_webutils.py /^from azure.cli.core.util import get_file_json, shell_safe_json_parse$/;" kind:namespace line:7 +get_logger ../cli\command_modules\botservice\custom.py /^from knack.log import get_logger$/;" kind:namespace line:12 +get_mgmt_service_client ../cli\command_modules\botservice\_client_factory.py /^ from azure.cli.core.commands.client_factory import get_mgmt_service_client$/;" kind:namespace line:8 +get_mgmt_service_client ../cli\command_modules\botservice\_webutils.py /^from azure.cli.core.commands.client_factory import get_mgmt_service_client$/;" kind:namespace line:8 +get_operations_client ../cli\command_modules\botservice\_client_factory.py /^def get_operations_client(cli_ctx, *_):$/;" kind:function line:25 +get_sdk ../cli\command_modules\botservice\_webutils.py /^from azure.cli.core.profiles import ResourceType, get_sdk$/;" kind:namespace line:6 +get_service_providers ../cli\command_modules\botservice\custom.py /^def get_service_providers(client, name=None):$/;" kind:function line:216 +get_service_providers ../cli\command_modules\botservice\tests\latest\test_authsetting_commands.py /^ def get_service_providers(self):$/;" kind:member line:19 +get_wrapper ../cli\command_modules\botservice\channel_operations.py /^ def get_wrapper(channel_name):$/;" kind:function line:172 +helps ../cli\command_modules\botservice\__init__.py /^from azure.cli.command_modules.botservice._help import helps # pylint: disable=unused-import$/;" kind:namespace line:7 +helps ../cli\command_modules\botservice\_help.py /^from knack.help_files import helps$/;" kind:namespace line:6 +import ../cli\command_modules\botservice\__init__.py /^from azure.cli.command_modules.botservice._help import helps # pylint: disable=unused-import$/;" kind:namespace line:7 +import ../cli\command_modules\botservice\_exception_handler.py /^ from msrest.exceptions import ClientRequestError # pylint: disable=import-error$/;" kind:namespace line:12 +import ../cli\command_modules\botservice\custom.py /^from knack.prompting import prompt_y_n # pylint: disable=unused-import$/;" kind:namespace line:10 +import ../cli\command_modules\botservice\custom.py /^import adal # pylint: disable=import-error$/;" kind:namespace line:9 +internal_paging ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^ def internal_paging(next_link=None, raw=False):$/;" kind:function line:449 +internal_paging ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^ def internal_paging(next_link=None, raw=False):$/;" kind:function line:324 +internal_paging ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^ def internal_paging(next_link=None, raw=False):$/;" kind:function line:389 +internal_paging ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^ def internal_paging(next_link=None, raw=False):$/;" kind:function line:411 +internal_paging ../cli\command_modules\botservice\botservice\operations\operations.py /^ def internal_paging(next_link=None, raw=False):$/;" kind:function line:54 +json ../cli\command_modules\botservice\_webutils.py /^ import json$/;" kind:namespace line:41 +json ../cli\command_modules\botservice\custom.py /^import json$/;" kind:namespace line:6 +kik_channel ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ kik_channel = "KikChannel"$/;" kind:variable line:39 +kik_channel.py ../cli\command_modules\botservice\botservice\models\kik_channel.py 1;" kind:file line:1 +kik_channel_properties.py ../cli\command_modules\botservice\botservice\models\kik_channel_properties.py 1;" kind:file line:1 +kik_create ../cli\command_modules\botservice\channel_operations.py /^def kik_create(client, resource_group_name, resource_name, user_name, api_key, is_disabled=None, is_validated=None):$/;" kind:function line:80 +list ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^ def list($/;" kind:member line:373 +list ../cli\command_modules\botservice\botservice\operations\operations.py /^ def list($/;" kind:member line:40 +list_by_bot_service ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^ def list_by_bot_service($/;" kind:member line:428 +list_by_resource_group ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^ def list_by_resource_group($/;" kind:member line:305 +list_by_resource_group ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^ def list_by_resource_group($/;" kind:member line:390 +list_service_providers ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^ def list_service_providers($/;" kind:member line:39 +list_with_keys ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^ def list_with_keys($/;" kind:member line:323 +list_with_secrets ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^ def list_with_secrets($/;" kind:member line:93 +load_arguments ../cli\command_modules\botservice\__init__.py /^ from azure.cli.command_modules.botservice._params import load_arguments$/;" kind:namespace line:28 +load_arguments ../cli\command_modules\botservice\__init__.py /^ def load_arguments(self, command):$/;" kind:member line:27 +load_arguments ../cli\command_modules\botservice\_params.py /^def load_arguments(self, _):$/;" kind:function line:17 +load_command_table ../cli\command_modules\botservice\__init__.py /^ from azure.cli.command_modules.botservice.commands import load_command_table$/;" kind:namespace line:23 +load_command_table ../cli\command_modules\botservice\__init__.py /^ def load_command_table(self, args):$/;" kind:member line:22 +load_command_table ../cli\command_modules\botservice\commands.py /^def load_command_table(self, _):$/;" kind:function line:13 +logger ../cli\command_modules\botservice\custom.py /^logger = get_logger(__name__)$/;" kind:variable line:22 +models ../cli\command_modules\botservice\botservice\azure_bot_service.py /^from . import models$/;" kind:namespace line:20 +models ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^ models = models$/;" kind:variable line:28 +models ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^from .. import models$/;" kind:namespace line:15 +models ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^ models = models$/;" kind:variable line:28 +models ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^from .. import models$/;" kind:namespace line:15 +models ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^ models = models$/;" kind:variable line:28 +models ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^from .. import models$/;" kind:namespace line:15 +models ../cli\command_modules\botservice\botservice\operations\operations.py /^ models = models$/;" kind:variable line:29 +models ../cli\command_modules\botservice\botservice\operations\operations.py /^from .. import models$/;" kind:namespace line:16 +ms_teams_channel ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ ms_teams_channel = "MsTeamsChannel"$/;" kind:variable line:42 +ms_teams_channel.py ../cli\command_modules\botservice\botservice\models\ms_teams_channel.py 1;" kind:file line:1 +ms_teams_channel_properties.py ../cli\command_modules\botservice\botservice\models\ms_teams_channel_properties.py 1;" kind:file line:1 +msteams_create ../cli\command_modules\botservice\channel_operations.py /^def msteams_create(client, resource_group_name, resource_name, is_disabled=None, enable_messaging=None,$/;" kind:function line:46 +name_arg_type ../cli\command_modules\botservice\_params.py /^name_arg_type = CLIArgumentType(metavar='NAME', configured_default='botname')$/;" kind:variable line:13 +operation_display_info.py ../cli\command_modules\botservice\botservice\models\operation_display_info.py 1;" kind:file line:1 +operation_entity.py ../cli\command_modules\botservice\botservice\models\operation_entity.py 1;" kind:file line:1 +operation_entity_paged.py ../cli\command_modules\botservice\botservice\models\operation_entity_paged.py 1;" kind:file line:1 +operations.py ../cli\command_modules\botservice\botservice\operations\operations.py 1;" kind:file line:1 +os ../cli\command_modules\botservice\_webutils.py /^ import os$/;" kind:namespace line:114 +os ../cli\command_modules\botservice\custom.py /^import os$/;" kind:namespace line:7 +parse ../cli\command_modules\botservice\custom.py /^ import urllib.parse$/;" kind:namespace line:26 +pkg_resources ../__init__.py /^import pkg_resources$/;" kind:namespace line:1 +pkg_resources ../cli\__init__.py /^import pkg_resources$/;" kind:namespace line:1 +pkg_resources ../cli\command_modules\__init__.py /^import pkg_resources$/;" kind:namespace line:1 +prepare_publish ../cli\command_modules\botservice\custom.py /^def prepare_publish(cmd, client, resource_group_name, resource_name, sln_name, proj_name, code_dir=None):$/;" kind:function line:445 +prompt_y_n ../cli\command_modules\botservice\custom.py /^from knack.prompting import prompt_y_n # pylint: disable=unused-import$/;" kind:namespace line:10 +provisionConvergedApp ../cli\command_modules\botservice\custom.py /^def provisionConvergedApp(bot_name):$/;" kind:function line:31 +publish_app ../cli\command_modules\botservice\custom.py /^def publish_app(cmd, client, resource_group_name, resource_name, code_dir=None):$/;" kind:function line:341 +pylint ../cli\command_modules\botservice\__init__.py /^from azure.cli.command_modules.botservice._help import helps # pylint: disable=unused-import$/;" kind:namespace line:7 +pylint ../cli\command_modules\botservice\_exception_handler.py /^ from msrest.exceptions import ClientRequestError # pylint: disable=import-error$/;" kind:namespace line:12 +pylint ../cli\command_modules\botservice\custom.py /^from knack.prompting import prompt_y_n # pylint: disable=unused-import$/;" kind:namespace line:10 +pylint ../cli\command_modules\botservice\custom.py /^import adal # pylint: disable=import-error$/;" kind:namespace line:9 +random ../cli\command_modules\botservice\custom.py /^ import random$/;" kind:namespace line:260 +re ../cli\command_modules\botservice\custom.py /^ import re$/;" kind:namespace line:258 +requests ../cli\command_modules\botservice\_webutils.py /^ import requests$/;" kind:namespace line:113 +requests ../cli\command_modules\botservice\custom.py /^ import requests$/;" kind:namespace line:369 +requests ../cli\command_modules\botservice\custom.py /^ import requests$/;" kind:namespace line:417 +requests ../cli\command_modules\botservice\custom.py /^ import requests$/;" kind:namespace line:57 +resource.py ../cli\command_modules\botservice\botservice\models\resource.py 1;" kind:file line:1 +s1 ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ s1 = "S1"$/;" kind:variable line:18 +sdk ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ sdk = "sdk"$/;" kind:variable line:29 +service_provider.py ../cli\command_modules\botservice\botservice\models\service_provider.py 1;" kind:file line:1 +service_provider_parameter.py ../cli\command_modules\botservice\botservice\models\service_provider_parameter.py 1;" kind:file line:1 +service_provider_properties.py ../cli\command_modules\botservice\botservice\models\service_provider_properties.py 1;" kind:file line:1 +service_provider_response_list.py ../cli\command_modules\botservice\botservice\models\service_provider_response_list.py 1;" kind:file line:1 +shell_safe_json_parse ../cli\command_modules\botservice\_webutils.py /^from azure.cli.core.util import get_file_json, shell_safe_json_parse$/;" kind:namespace line:7 +shutil ../cli\command_modules\botservice\custom.py /^import shutil$/;" kind:namespace line:8 +sku ../cli\command_modules\botservice\custom.py /^from azure.cli.command_modules.botservice.botservice.models import Bot, BotProperties, sku$/;" kind:namespace line:20 +sku.py ../cli\command_modules\botservice\botservice\models\sku.py 1;" kind:file line:1 +skype_channel ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ skype_channel = "SkypeChannel"$/;" kind:variable line:43 +skype_channel.py ../cli\command_modules\botservice\botservice\models\skype_channel.py 1;" kind:file line:1 +skype_channel_properties.py ../cli\command_modules\botservice\botservice\models\skype_channel_properties.py 1;" kind:file line:1 +skype_create ../cli\command_modules\botservice\channel_operations.py /^def skype_create(client, resource_group_name, resource_name, is_disabled=None, enable_messaging=None,$/;" kind:function line:61 +slack_channel ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ slack_channel = "SlackChannel"$/;" kind:variable line:41 +slack_channel.py ../cli\command_modules\botservice\botservice\models\slack_channel.py 1;" kind:file line:1 +slack_channel_properties.py ../cli\command_modules\botservice\botservice\models\slack_channel_properties.py 1;" kind:file line:1 +slack_create ../cli\command_modules\botservice\channel_operations.py /^def slack_create(client, resource_group_name, resource_name, client_id, client_secret, verification_token,$/;" kind:function line:151 +sms_channel ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ sms_channel = "SmsChannel"$/;" kind:variable line:46 +sms_channel.py ../cli\command_modules\botservice\botservice\models\sms_channel.py 1;" kind:file line:1 +sms_channel_properties.py ../cli\command_modules\botservice\botservice\models\sms_channel_properties.py 1;" kind:file line:1 +sms_create ../cli\command_modules\botservice\channel_operations.py /^def sms_create(client, resource_group_name, resource_name, phone, account_sid, auth_token, is_disabled=None, is_validated=None): # pylint: disable=line-too-long$/;" kind:function line:137 +standard ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ standard = "Standard"$/;" kind:variable line:24 +string ../cli\command_modules\botservice\custom.py /^ import string$/;" kind:namespace line:259 +telegram_channel ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ telegram_channel = "TelegramChannel"$/;" kind:variable line:40 +telegram_channel.py ../cli\command_modules\botservice\botservice\models\telegram_channel.py 1;" kind:file line:1 +telegram_channel_properties.py ../cli\command_modules\botservice\botservice\models\telegram_channel_properties.py 1;" kind:file line:1 +telegram_create ../cli\command_modules\botservice\channel_operations.py /^def telegram_create(client, resource_group_name, resource_name, access_token, is_disabled=None, is_validated=None):$/;" kind:function line:125 +test_authsetting_commands.py ../cli\command_modules\botservice\tests\latest\test_authsetting_commands.py 1;" kind:file line:1 +test_bot_commands.py ../cli\command_modules\botservice\tests\latest\test_bot_commands.py 1;" kind:file line:1 +test_channel_commands.py ../cli\command_modules\botservice\tests\latest\test_channel_commands.py 1;" kind:file line:1 +test_registration_bot ../cli\command_modules\botservice\tests\latest\test_bot_commands.py /^ def test_registration_bot(self, resource_group):$/;" kind:member line:7 +test_webapp_bot ../cli\command_modules\botservice\tests\latest\test_bot_commands.py /^ def test_webapp_bot(self, resource_group):$/;" kind:member line:36 +unused ../cli\command_modules\botservice\__init__.py /^from azure.cli.command_modules.botservice._help import helps # pylint: disable=unused-import$/;" kind:namespace line:7 +unused ../cli\command_modules\botservice\custom.py /^from knack.prompting import prompt_y_n # pylint: disable=unused-import$/;" kind:namespace line:10 +update ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^ def update($/;" kind:member line:232 +update ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^ def update($/;" kind:member line:109 +update ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^ def update($/;" kind:member line:114 +update ../cli\command_modules\botservice\custom.py /^def update(client, parameters, resource_group_name):$/;" kind:function line:120 +urllib ../cli\command_modules\botservice\custom.py /^ import urllib.parse$/;" kind:namespace line:26 +urllib3 ../cli\command_modules\botservice\_webutils.py /^ import urllib3$/;" kind:namespace line:108 +urllib3 ../cli\command_modules\botservice\custom.py /^ import urllib3$/;" kind:namespace line:365 +urllib3 ../cli\command_modules\botservice\custom.py /^ import urllib3$/;" kind:namespace line:411 +uuid ../cli\command_modules\botservice\botservice\operations\bot_connection_operations.py /^import uuid$/;" kind:namespace line:12 +uuid ../cli\command_modules\botservice\botservice\operations\bots_operations.py /^import uuid$/;" kind:namespace line:12 +uuid ../cli\command_modules\botservice\botservice\operations\channels_operations.py /^import uuid$/;" kind:namespace line:12 +uuid ../cli\command_modules\botservice\botservice\operations\operations.py /^import uuid$/;" kind:namespace line:12 +uuid ../cli\command_modules\botservice\tests\latest\test_authsetting_commands.py /^import uuid$/;" kind:namespace line:2 +uuid ../cli\command_modules\botservice\tests\latest\test_bot_commands.py /^import uuid$/;" kind:namespace line:2 +version.py ../cli\command_modules\botservice\botservice\version.py 1;" kind:file line:1 +web_chat_channel ../cli\command_modules\botservice\botservice\models\azure_bot_service_enums.py /^ web_chat_channel = "WebChatChannel"$/;" kind:variable line:44 +web_chat_channel.py ../cli\command_modules\botservice\botservice\models\web_chat_channel.py 1;" kind:file line:1 +web_chat_channel_properties.py ../cli\command_modules\botservice\botservice\models\web_chat_channel_properties.py 1;" kind:file line:1 +web_chat_site.py ../cli\command_modules\botservice\botservice\models\web_chat_site.py 1;" kind:file line:1 +web_client_factory ../cli\command_modules\botservice\_webutils.py /^def web_client_factory(cli_ctx, **_):$/;" kind:function line:52 +webchat_create ../cli\command_modules\botservice\channel_operations.py /^def webchat_create(client, resource_group_name, resource_name, is_disabled=None, enable_preview=None, site_name='default'): # pylint: disable=line-too-long$/;" kind:function line:93 +zipfile ../cli\command_modules\botservice\custom.py /^ import zipfile$/;" kind:namespace line:307 +zipfile ../cli\command_modules\botservice\custom.py /^ import zipfile$/;" kind:namespace line:433 diff --git a/src/command_modules/azure-cli-botservice/azure/__init__.py b/src/command_modules/azure-cli-botservice/azure/__init__.py new file mode 100644 index 00000000000..a9dfa5391b9 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/__init__.py @@ -0,0 +1,7 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +import pkg_resources +pkg_resources.declare_namespace(__name__) diff --git a/src/command_modules/azure-cli-botservice/azure/cli/__init__.py b/src/command_modules/azure-cli-botservice/azure/cli/__init__.py new file mode 100644 index 00000000000..a9dfa5391b9 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/__init__.py @@ -0,0 +1,7 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +import pkg_resources +pkg_resources.declare_namespace(__name__) diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/__init__.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/__init__.py new file mode 100644 index 00000000000..a9dfa5391b9 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/__init__.py @@ -0,0 +1,7 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +import pkg_resources +pkg_resources.declare_namespace(__name__) diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/__init__.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/__init__.py new file mode 100644 index 00000000000..74963fd0913 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/__init__.py @@ -0,0 +1,38 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +from azure.cli.core import AzCommandsLoader, ModExtensionSuppress +from azure.cli.command_modules.botservice._help import helps # pylint: disable=unused-import +from azure.cli.command_modules.botservice._client_factory import get_botservice_management_client + + +class BotServiceCommandsLoader(AzCommandsLoader): + + def __init__(self, cli_ctx=None): + from azure.cli.core.commands import CliCommandType + custom_type = CliCommandType( + operations_tmpl='azure.cli.command_modules.botservice.custom#{}', + client_factory=get_botservice_management_client) + super(BotServiceCommandsLoader, self).__init__(cli_ctx=cli_ctx, + custom_command_type=custom_type, + min_profile='2017-03-10-profile', + suppress_extension=ModExtensionSuppress( + __name__, + 'botservice', + '0.3.0', + reason='These commands are now in the CLI', + recommend_remove=True)) + + def load_command_table(self, args): + from azure.cli.command_modules.botservice.commands import load_command_table + load_command_table(self, args) + return self.command_table + + def load_arguments(self, command): + from azure.cli.command_modules.botservice._params import load_arguments + load_arguments(self, command) + + +COMMAND_LOADER_CLS = BotServiceCommandsLoader diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_client_factory.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_client_factory.py new file mode 100644 index 00000000000..eb1ba56f68c --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_client_factory.py @@ -0,0 +1,26 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + + +def get_botservice_management_client(cli_ctx, *_): + from azure.cli.core.commands.client_factory import get_mgmt_service_client + from azure.mgmt.botservice import AzureBotService + return get_mgmt_service_client(cli_ctx, AzureBotService) + + +def get_botOperations_client(cli_ctx, *_): + return get_botservice_management_client(cli_ctx).bots + + +def get_botChannels_client(cli_ctx, *_): + return get_botservice_management_client(cli_ctx).channels + + +def get_operations_client(cli_ctx, *_): + return get_botservice_management_client(cli_ctx).operations + + +def get_botConnections_client(cli_ctx, *_): + return get_botservice_management_client(cli_ctx).bot_connection diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_exception_handler.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_exception_handler.py new file mode 100644 index 00000000000..373d71221c1 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_exception_handler.py @@ -0,0 +1,30 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +from knack.util import CLIError + + +def bot_exception_handler(ex): + from azure.mgmt.botservice.models import ErrorException + from msrestazure.azure_exceptions import CloudError + from msrest.exceptions import ClientRequestError # pylint: disable=import-error + if isinstance(ex, ErrorException): + message = 'an error occurred with code:{0} and message:{1}'.format( + ex.error.error.code, + ex.error.error.message + ) + raise CLIError(message) + elif isinstance(ex, CloudError) and ex.status_code == 404: + return None + elif isinstance(ex, ClientRequestError): + message = 'Error occurred in sending request. Please file an issue on {0}'.format( + 'https://github.com/Microsoft/botbuilder-tools/issues' + ) + raise CLIError(message) + else: + message = 'Unknown error during execution. Please file an issue on {0}'.format( + 'https://github.com/Microsoft/botbuilder-tools/issues' + ) + raise CLIError(message) diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_help.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_help.py new file mode 100644 index 00000000000..1341a68bfc3 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_help.py @@ -0,0 +1,206 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +from knack.help_files import helps + +helps['bot'] = """ + type: group + short-summary: Manage Microsoft Bot Services. +""" +helps['bot create'] = """ + type: command + short-summary: Create a new bot. +""" +helps['bot show'] = """ + type: command + short-summary: Get an existing bot. +""" +helps['bot prepare-publish'] = """ + type: command + short-summary: Add scripts to your local source code directory to + be able to publish back using `az bot publish`. +""" +helps['bot delete'] = """ + type: command + short-summary: Delete an existing bot. +""" +helps['bot update'] = """ + type: command + short-summary: Update an existing bot. + examples: + - name: Update description on a bot + text: |- + az bot update -n botName -g MyResourceGroup --set properties.description="some description" +""" +helps['bot publish'] = """ + type: command + short-summary: Publish to a bot's associated app service. + long-summary: Publish your source code to your bot's associated app service. + examples: + - name: Publish source code to your Azure App, from within the bot code folder + text: |- + az bot publish -n botName -g MyResourceGroup +""" +helps['bot download'] = """ + type: command + short-summary: Download an existing bot. + long-summary: The source code is downloaded from the web app associated with the bot. + You can then make changes to it and publish it back to your app. +""" +helps['bot facebook create'] = """ + type: command + short-summary: Create the Facebook Channel on a bot. + examples: + - name: Create the Facebook Channel for a bot + text: |- + az bot facebook create -n botName -g MyResourceGroup -appid myAppId + --page-d myPageId --secret mySecret --token myToken +""" +helps['bot email create'] = """ + type: command + short-summary: Create the Email Channel on a bot. + examples: + - name: Create the Email Channel for a bot + text: |- + az bot email create -n botName -g MyResourceGroup -a abc@outlook.com + -p password +""" +helps['bot msteams create'] = """ + type: command + short-summary: Create the Microsoft Teams Channel on a bot. + examples: + - name: Create the Microsoft Teams Channel for a bot with calling enabled + text: |- + az bot msteams create -n botName -g MyResourceGroup --enable-calling + --calling-web-hook https://www.myapp.com/ +""" +helps['bot skype create'] = """ + type: command + short-summary: Create the Skype Channel on a bot. + examples: + - name: Create the Skype Channel for a bot with messaging and screen sharing enabled + text: |- + az bot skype create -n botName -g MyResourceGroup --enable-messaging + --enable-screen-sharing +""" +helps['bot kik create'] = """ + type: command + short-summary: Create the Kik Channel on a bot. + examples: + - name: Create the Kik Channel for a bot. + text: |- + az bot kik create -n botName -g MyResourceGroup -u mykikname + -p password --key key --is-validated +""" +helps['bot directline create'] = """ + type: command + short-summary: Create the DirectLine Channel on a bot with only v3 protocol enabled. + examples: + - name: Create the DirectLine Channel for a bot. + text: |- + az bot directline create -n botName -g MyResourceGroup --disablev1 +""" +helps['bot telegram create'] = """ + type: command + short-summary: Create the Telegram Channel on a bot. + examples: + - name: Create the Telegram Channel for a bot. + text: |- + az bot telegram create -n botName -g MyResourceGroup --access-token token + --is-validated +""" +helps['bot sms create'] = """ + type: command + short-summary: Create the SMS Channel on a bot. + examples: + - name: Create the SMS Channel for a bot. + text: |- + az bot sms create -n botName -g MyResourceGroup --account-sid sid + --auth-token token --is-validated +""" +helps['bot slack create'] = """ + type: command + short-summary: Create the Slack Channel on a bot. + examples: + - name: Create the Slack Channel for a bot. + text: |- + az bot slack create -n botName -g MyResourceGroup --client-id clientid + --client-secret secret --verification-token token +""" +helps['bot authsetting'] = """ + type: group + short-summary: Manage OAuth connection settings on a bot. +""" +helps['bot authsetting create'] = """ + type: command + short-summary: Create an OAuth connection setting on a bot. + examples: + - name: Create a new OAuth connection setting on a bot. + text: |- + az bot authsetting create -g MyResourceGroup -n botName -c myConnectionName + --client-id clientId --client-secret secret --scopes "scope1 scope2" --service google + --parameters id=myid +""" +helps['bot authsetting show'] = """ + type: command + short-summary: Show details of an OAuth connection setting on a bot. +""" +helps['bot authsetting list'] = """ + type: command + short-summary: Show all OAuth connection settings on a bot. +""" +helps['bot authsetting delete'] = """ + type: command + short-summary: Delete an OAuth connection setting on a bot. +""" +helps['bot authsetting list-providers'] = """ + type: command + short-summary: List details for all service providers available for creating OAuth connection settings. + examples: + - name: List all service providers. + text: |- + az bot authsetting list-providers + - name: Filter by a particular type of service provider. + text: |- + az bot authsetting list-providers --provider-name google +""" + + +for channel in ['Facebook', 'email', 'Skype', 'Kik', 'Directline', 'Telegram', 'SMS', 'Slack']: + channel_name = channel.lower() + helps['bot {0} delete'.format(channel_name)] = """ + type: command + short-summary: Delete the {0} Channel on a bot + """.format(channel) + helps['bot {0} show'.format(channel_name)] = """ + type: command + short-summary: Get details of the {0} Channel on a bot + """.format(channel) + helps['bot {0}'.format(channel_name)] = """ + type: group + short-summary: Manage the {0} Channel on a bot. + """.format(channel) + + +helps['bot msteams delete'] = """ + type: command + short-summary: Delete the Microsoft Teams Channel on a bot +""" +helps['bot msteams show'] = """ + type: command + short-summary: Get details of the Microsoft Teams Channel on a bot +""" +helps['bot msteams'] = """ + type: group + short-summary: Manage the Microsoft Teams Channel on a bot. +""" +helps['bot webchat show'] = """ + type: command + short-summary: Get details of the Webchat Channel on a bot +""" +helps['bot webchat'] = """ + type: group + short-summary: Manage the Webchat Channel on a bot. +""" diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_params.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_params.py new file mode 100644 index 00000000000..88e2cd98b04 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_params.py @@ -0,0 +1,132 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +from knack.arguments import CLIArgumentType + +from azure.cli.core.commands.parameters import ( + resource_group_name_type, + get_enum_type, + get_three_state_flag, + tags_type) + +name_arg_type = CLIArgumentType(metavar='NAME', configured_default='botname', id_part='Name') + + +# pylint: disable=line-too-long,too-many-statements +def load_arguments(self, _): + with self.argument_context('bot') as c: + c.argument('resource_group_name', arg_type=resource_group_name_type) + c.argument('resource_name', options_list=['--name', '-n'], help='The resource name of the bot.', arg_type=name_arg_type) + + with self.argument_context('bot create') as c: + c.argument('sku_name', options_list=['--sku'], arg_type=get_enum_type(['F0', 'S1']), help='The Sku of the bot.', arg_group='Registration bot Specific') + c.argument('kind', options_list=['--kind', '-k'], arg_type=get_enum_type(['registration', 'function', 'webapp']), help='The kind of the bot.') + c.argument('display_name', help='The display name of the bot. If not specified, defaults to the name of the bot.', arg_group='Registration bot Specific') + c.argument('description', options_list=['--description', '-d'], help='The description of the bot.', arg_group='Registration bot Specific') + c.argument('endpoint', options_list=['-e', '--endpoint'], help='The messaging endpoint of the bot.', arg_group='Registration bot Specific') + c.argument('msa_app_id', options_list=['--appid'], help='The Microsoft account ID (MSA ID) to be used with the bot.') + c.argument('password', options_list=['-p', '--password'], help='The Microsoft account (MSA) password for the bot.') + c.argument('storageAccountName', options_list=['-s', '--storage'], help='Storage account name to be used with the bot. If not provided, a new account will be created.', arg_group='Web/Function bot Specific') + c.argument('tags', arg_type=tags_type) + c.argument('language', help='The language to be used to create the bot.', options_list=['--lang'], arg_type=get_enum_type(['Csharp', 'Node']), arg_group='Web/Function bot Specific') + c.argument('appInsightsLocation', help='The location for the app insights to be used with the bot.', options_list=['--insights-location'], arg_group='Web/Function bot Specific', + arg_type=get_enum_type(['South Central US', 'East US', 'West US 2', 'North Europe', 'West Europe', 'Southeast Asia'])) + c.argument('version', options_list=['-v', '--version'], help='The Microsoft Bot Builder SDK version to be used to create the bot', arg_type=get_enum_type(['v3', 'v4']), arg_group='Web/Function bot Specific') + + with self.argument_context('bot publish') as c: + c.argument('code_dir', options_list=['--code-dir'], help='The directory to upload bot code from.') + + with self.argument_context('bot download') as c: + c.argument('file_save_path', options_list=['--save-path'], help='The directory to download bot code to.') + + with self.argument_context('bot show') as c: + c.argument('bot_json', options_list=['--msbot'], help='Show the output as JSON compatible with a .bot file.', arg_type=get_three_state_flag()) + + with self.argument_context('bot prepare-publish') as c: + c.argument('proj_name', help='Name of the start up project file name. Required only for C#.') + c.argument('sln_name', help='Name of the start up solution file name. Required only for C#.') + c.argument('code_dir', options_list=['--code-dir'], help='The directory to download deployment scripts to.') + + with self.argument_context('bot facebook create') as c: + c.argument('is_disabled', options_list=['--add-disabled'], arg_type=get_three_state_flag(), help='Add the channel in a disabled state') + c.argument('page_id', options_list=['--page-id'], help='Page ID of the Facebook page to be used for the bot.') + c.argument('app_id', options_list=['--appid'], help='The Facebook application id.') + c.argument('app_secret', options_list=['--secret'], help='The Facebook application secret.') + c.argument('access_token', options_list=['--token'], help='The Facebook application access token.') + + with self.argument_context('bot email create') as c: + c.argument('is_disabled', options_list=['--add-disabled'], arg_type=get_three_state_flag(), help='Add the channel in a disabled state') + c.argument('email_address', options_list=['--email-address', '-a'], help='The email address for the bot.') + c.argument('password', options_list=['--password', '-p'], help='The email password for the bot.') + + with self.argument_context('bot msteams create') as c: + c.argument('is_disabled', options_list=['--add-disabled'], arg_type=get_three_state_flag(), help='Add the channel in a disabled state.') + c.argument('enable_calling', help='Enable calling on Microsoft Teams.', arg_type=get_three_state_flag()) + c.argument('calling_web_hook', help='The calling web hook to use on Microsoft Teams.') + + with self.argument_context('bot skype create') as c: + c.argument('is_disabled', options_list=['--add-disabled'], arg_type=get_three_state_flag(), help='Add the channel in a disabled state.') + c.argument('enable_messaging', help='Enable messaging on Skype.', arg_type=get_three_state_flag()) + c.argument('enable_media_cards', help='Enable media cards on Skype.', arg_type=get_three_state_flag()) + c.argument('enable_video', help='Enable video on Skype.', arg_type=get_three_state_flag()) + c.argument('enable_calling', help='Enable calling on Skype.', arg_type=get_three_state_flag()) + c.argument('enable_screen_sharing', help='Enable screen sharing on Skype.', arg_type=get_three_state_flag()) + c.argument('enable_groups', help='Enable groups on Skype.', arg_type=get_three_state_flag()) + c.argument('groups_mode', help='select groups mode on Skype.') + c.argument('calling_web_hook', help='The calling web hook to use on Skype.') + + with self.argument_context('bot kik create') as c: + c.argument('is_disabled', options_list=['--add-disabled'], arg_type=get_three_state_flag(), help='Add the channel in a disabled state.') + c.argument('user_name', options_list=['--user-name', '-u'], help='Kik user name.') + c.argument('is_validated', help='Whether or not the Kik account has been validated for use with the bot.', arg_type=get_three_state_flag()) + c.argument('api_key', options_list=['--key'], help='The API key for the Kik account.') + + with self.argument_context('bot webchat create') as c: + c.argument('is_disabled', options_list=['--add-disabled'], arg_type=get_three_state_flag(), help='Add the channel in a disabled state.') + c.argument('site_name', options_list=['-s', '--site-name'], help='Name of the Webchat channel site.') + c.argument('enable_preview', help='Enable preview features on the chat control.', arg_type=get_three_state_flag()) + + with self.argument_context('bot directline create') as c: + c.argument('is_disabled', options_list=['--add-disabled'], arg_type=get_three_state_flag(), help='Add the channel in a disabled state.') + c.argument('site_name', options_list=['-s', '--site-name'], help='Name of the Directline channel site.') + c.argument('is_v1_disabled', options_list=['--disablev1'], help='If true, v1 protocol will be disabled on the channel', arg_type=get_three_state_flag()) + c.argument('is_v3_disabled', options_list=['--disablev3'], help='If true, v3 protocol will be disabled on the channel.', arg_type=get_three_state_flag()) + + with self.argument_context('bot telegram create') as c: + c.argument('is_disabled', options_list=['--add-disabled'], arg_type=get_three_state_flag(), help='Add the channel in a disabled state.') + c.argument('access_token', help='The access token for the Telegram account.') + c.argument('is_validated', help='Whether or not the Telegram account has been validated for use with the bot.', arg_type=get_three_state_flag()) + + with self.argument_context('bot sms create') as c: + c.argument('is_disabled', options_list=['--add-disabled'], arg_type=get_three_state_flag(), help='Add the channel in a disabled state.') + c.argument('account_sid', help='The account SID for the Twilio account.') + c.argument('auth_token', help='The token token for the Twilio account.') + c.argument('is_validated', help='Whether or not the Twilio account has been validated for use with the bot.', arg_type=get_three_state_flag()) + c.argument('phone', help='The phone number for the Twilio account.') + + with self.argument_context('bot slack create') as c: + c.argument('is_disabled', options_list=['--add-disabled'], arg_type=get_three_state_flag(), help='Add the channel in a disabled state.') + c.argument('client_secret', help='The client secret from Slack.') + c.argument('client_id', help='The client ID from Slack.') + c.argument('verification_token', help='The verification token from Slack.') + c.argument('landing_page_url', help='The landing page url to redirect to after login.') + + with self.argument_context('bot authsetting') as c: + c.argument('connection_name', options_list=['--setting-name', '-c'], help='Name of the oauth connection setting.', id_part='child_name_1') + + with self.argument_context('bot authsetting create') as c: + c.argument('client_id', help='Client ID associated with the service provider setting.') + c.argument('client_secret', help='Client secret associated with the service provider setting.') + c.argument('scopes', options_list=['--provider-scope-string'], help='The scope string associated with the service provider setting.The string should be delimited as needed for the service provider.') + c.argument('service_provider_name', options_list=['--service'], help='Name of the service provider. For a list of all service providers, use `az bot connection listserviceproviders`.') + c.argument('parameters', help='Parameter values for service provider parameters. Usage: --parameters key=value key1=value1.', nargs='+') + + with self.argument_context('bot authsetting list-providers') as c: + c.argument('as_raw_settings', options_list=['--as-raw'], help='Output the raw json for each service provider.', arg_type=get_three_state_flag()) + c.argument('name', options_list=['--provider-name'], help='Service provider name for which to fetch details.') + + for channel in ['facebook', 'email', 'msteams', 'skype', 'kik', 'webchat', 'directline', 'telegram', 'sms', 'slack']: + with self.argument_context('bot {0} show'.format(channel)) as c: + c.argument('show_secrets', options_list=['--with-secrets'], help='Show secrets in response for the channel.', arg_type=get_three_state_flag()) diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_webutils.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_webutils.py new file mode 100644 index 00000000000..daa79c17a41 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/_webutils.py @@ -0,0 +1,126 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +from knack.util import CLIError +from azure.cli.core.profiles import ResourceType, get_sdk +from azure.cli.core.util import get_file_json, shell_safe_json_parse +from azure.cli.core.commands.client_factory import get_mgmt_service_client + + +def _process_parameters(parameter_lists): + def _try_parse_json_object(value): + try: + parsed = shell_safe_json_parse(value) + return parsed.get('parameters', parsed) + except CLIError: + return None + + parameters = {} + for params in parameter_lists or []: + for item in params: + param_obj = _try_parse_json_object(item) + if param_obj: + parameters.update(param_obj) + + return parameters + + +def deploy_arm_template(cli_ctx, resource_group_name, # pylint: disable=too-many-arguments + template_file=None, deployment_name=None, + parameters=None, mode=None): + DeploymentProperties, _ = get_sdk(cli_ctx, ResourceType.MGMT_RESOURCE_RESOURCES, + 'DeploymentProperties', 'TemplateLink', mod='models') + template = None + template = get_file_json(template_file, preserve_order=True) + template_obj = template + + template_obj['resources'] = template_obj.get('resources', []) + parameters = _process_parameters(parameters) or {} + + import json + template = json.loads(json.dumps(template)) + parameters = json.loads(json.dumps(parameters)) + + properties = DeploymentProperties(template=template, template_link=None, + parameters=parameters, mode=mode) + + smc = get_mgmt_service_client(cli_ctx, ResourceType.MGMT_RESOURCE_RESOURCES) + return smc.deployments.create_or_update(resource_group_name, deployment_name, properties, raw=False) + + +def web_client_factory(cli_ctx, **_): + from azure.mgmt.web import WebSiteManagementClient + return get_mgmt_service_client(cli_ctx, WebSiteManagementClient) + + +def _generic_site_operation(cli_ctx, resource_group_name, name, operation_name, slot=None, + extra_parameter=None, client=None): + client = client or web_client_factory(cli_ctx) + operation = getattr(client.web_apps, + operation_name if slot is None else operation_name + '_slot') + if slot is None: + return (operation(resource_group_name, name) + if extra_parameter is None else operation(resource_group_name, + name, extra_parameter)) + + return (operation(resource_group_name, name, slot) + if extra_parameter is None else operation(resource_group_name, + name, extra_parameter, slot)) + + +def _get_site_credential(cli_ctx, resource_group_name, name, slot=None): + creds = _generic_site_operation(cli_ctx, resource_group_name, name, 'list_publishing_credentials', slot) + creds = creds.result() + return (creds.publishing_user_name, creds.publishing_password) + + +def _build_app_settings_output(app_settings, slot_cfg_names): + slot_cfg_names = slot_cfg_names or [] + return [{'name': p, + 'value': app_settings[p], + 'slotSetting': p in slot_cfg_names} for p in app_settings] + + +def get_app_settings(cmd, resource_group_name, name, slot=None): + result = _generic_site_operation(cmd.cli_ctx, resource_group_name, name, 'list_application_settings', slot) + client = web_client_factory(cmd.cli_ctx) + slot_app_setting_names = client.web_apps.list_slot_configuration_names(resource_group_name, name).app_setting_names + return _build_app_settings_output(result.properties, slot_app_setting_names) + + +def _get_scm_url(cmd, resource_group_name, name, slot=None): + from azure.mgmt.web.models import HostType + webapp = _generic_site_operation(cmd.cli_ctx, resource_group_name, name, 'get', slot) + for host in webapp.host_name_ssl_states or []: + if host.host_type == HostType.repository: + return "https://{}".format(host.name) + + # this should not happen, but throw anyway + raise ValueError('Failed to retrieve Scm Uri') + + +def enable_zip_deploy(cmd, resource_group_name, name, src, slot=None): + user_name, password = _get_site_credential(cmd.cli_ctx, resource_group_name, name, slot) + scm_url = _get_scm_url(cmd, resource_group_name, name, slot) + zip_url = scm_url + '/api/zipdeploy' + + import urllib3 + authorization = urllib3.util.make_headers(basic_auth='{0}:{1}'.format(user_name, password)) + headers = authorization + headers['content-type'] = 'application/octet-stream' + + import requests + import os + # Read file content + with open(os.path.realpath(os.path.expanduser(src)), 'rb') as fs: + zip_content = fs.read() + r = requests.post(zip_url, data=zip_content, headers=headers) + if r.status_code != 200: + raise CLIError("Zip deployment {} failed with status code '{}' and reason '{}'".format( + zip_url, r.status_code, r.text)) + + # on successful deployment navigate to the app, display the latest deployment json response + response = requests.get(scm_url + '/api/deployments/latest', headers=authorization) + return response.json() diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/channel_operations.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/channel_operations.py new file mode 100644 index 00000000000..d9d0c7b02f6 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/channel_operations.py @@ -0,0 +1,183 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +from azure.mgmt.botservice.models import BotChannel + + +def create_channel(client, channel, channel_name, resource_group_name, resource_name): + botChannel = BotChannel( + location='global', + properties=channel + ) + return client.create( + resource_group_name=resource_group_name, + resource_name=resource_name, + channel_name=channel_name, + parameters=botChannel + ) + + +def facebook_create(client, resource_group_name, resource_name, page_id, app_id, app_secret, access_token, is_disabled=None): # pylint: disable=line-too-long + from azure.mgmt.botservice.models import FacebookChannel, FacebookChannelProperties, FacebookPage + channel = FacebookChannel( + properties=FacebookChannelProperties( + pages=[FacebookPage(id=page_id, access_token=access_token)], + app_id=app_id, + app_secret=app_secret, + is_enabled=not is_disabled + ) + ) + return create_channel(client, channel, 'FacebookChannel', resource_group_name, resource_name) + + +def email_create(client, resource_group_name, resource_name, email_address, password, is_disabled=None): + from azure.mgmt.botservice.models import EmailChannel, EmailChannelProperties + channel = EmailChannel( + properties=EmailChannelProperties( + email_address=email_address, + password=password, + is_enabled=not is_disabled + ) + ) + return create_channel(client, channel, 'EmailChannel', resource_group_name, resource_name) + + +def msteams_create(client, resource_group_name, resource_name, is_disabled=None, + enable_calling=None, calling_web_hook=None): + from azure.mgmt.botservice.models import MsTeamsChannel, MsTeamsChannelProperties + channel = MsTeamsChannel( + properties=MsTeamsChannelProperties( + is_enabled=not is_disabled, + enable_calling=enable_calling, + calling_web_hook=calling_web_hook + ) + ) + return create_channel(client, channel, 'MsTeamsChannel', resource_group_name, resource_name) + + +def skype_create(client, resource_group_name, resource_name, is_disabled=None, enable_messaging=None, + enable_media_cards=None, enable_video=None, enable_calling=None, + enable_screen_sharing=None, enable_groups=None, groups_mode=None, calling_web_hook=None): + from azure.mgmt.botservice.models import SkypeChannel, SkypeChannelProperties + channel = SkypeChannel( + properties=SkypeChannelProperties( + is_enabled=not is_disabled, + enable_messaging=enable_messaging, + enable_media_cards=enable_media_cards, + enable_video=enable_video, + enable_calling=enable_calling, + enable_screen_sharing=enable_screen_sharing, + enable_groups=enable_groups, + groups_mode=groups_mode, + calling_web_hook=calling_web_hook + ) + ) + return create_channel(client, channel, 'SkypeChannel', resource_group_name, resource_name) + + +def kik_create(client, resource_group_name, resource_name, user_name, api_key, is_disabled=None, is_validated=None): + from azure.mgmt.botservice.models import KikChannel, KikChannelProperties + channel = KikChannel( + properties=KikChannelProperties( + user_name=user_name, + api_key=api_key, + is_enabled=not is_disabled, + is_validated=is_validated + ) + ) + return create_channel(client, channel, 'KikChannel', resource_group_name, resource_name) + + +def directline_create(client, resource_group_name, resource_name, is_disabled=None, + is_v1_disabled=None, is_v3_disabled=None, site_name='Default Site'): + from azure.mgmt.botservice.models import DirectLineChannel, DirectLineChannelProperties, DirectLineSite + channel = DirectLineChannel( + properties=DirectLineChannelProperties( + sites=[DirectLineSite( + site_name=site_name, + is_enabled=not is_disabled, + is_v1_enabled=not is_v1_disabled, + is_v3_enabled=not is_v3_disabled + )] + ) + ) + return create_channel(client, channel, 'DirectLineChannel', resource_group_name, resource_name) + + +def telegram_create(client, resource_group_name, resource_name, access_token, is_disabled=None, is_validated=None): + from azure.mgmt.botservice.models import TelegramChannel, TelegramChannelProperties + channel = TelegramChannel( + properties=TelegramChannelProperties( + access_token=access_token, + is_enabled=not is_disabled, + is_validated=is_validated + ) + ) + return create_channel(client, channel, 'TelegramChannel', resource_group_name, resource_name) + + +def sms_create(client, resource_group_name, resource_name, phone, account_sid, auth_token, is_disabled=None, is_validated=None): # pylint: disable=line-too-long + from azure.mgmt.botservice.models import SmsChannel, SmsChannelProperties + channel = SmsChannel( + properties=SmsChannelProperties( + phone=phone, + account_sid=account_sid, + auth_token=auth_token, + is_enabled=not is_disabled, + is_validated=is_validated + ) + ) + return create_channel(client, channel, 'SmsChannel', resource_group_name, resource_name) + + +def slack_create(client, resource_group_name, resource_name, client_id, client_secret, verification_token, + is_disabled=None, landing_page_url=None): + from azure.mgmt.botservice.models import SlackChannel, SlackChannelProperties + channel = SlackChannel( + properties=SlackChannelProperties( + client_id=client_id, + client_secret=client_secret, + verification_token=verification_token, + landing_page_url=landing_page_url, + is_enabled=not is_disabled + ) + ) + return create_channel(client, channel, 'SlackChannel', resource_group_name, resource_name) + + +class ChannelOperations(object): # pylint: disable=too-few-public-methods + def __init__(self): + for channel in ['facebook', 'email', 'msTeams', 'skype', 'kik', 'webChat', 'directLine', 'telegram', 'sms', 'slack']: # pylint: disable=line-too-long + channelName = '{}Channel'.format(channel) + channelName = channelName[:1].upper() + channelName[1:] + + def get_wrapper(channel_name): + def get(client, resource_group_name, resource_name, show_secrets=None): + if show_secrets: + return client.list_with_keys( + resource_group_name=resource_group_name, + resource_name=resource_name, + channel_name=channel_name, + ) + return client.get( + resource_group_name=resource_group_name, + resource_name=resource_name, + channel_name=channel_name + ) + return get + + def delete_wrapper(channel_name): + def delete(client, resource_group_name, resource_name): + return client.delete( + resource_group_name=resource_group_name, + resource_name=resource_name, + channel_name=channel_name + ) + return delete + setattr(self, '{}_get'.format(channel.lower()), get_wrapper(channelName)) + setattr(self, '{}_delete'.format(channel.lower()), delete_wrapper(channelName)) + + +channelOperationsInstance = ChannelOperations() diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/commands.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/commands.py new file mode 100644 index 00000000000..545b07104f2 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/commands.py @@ -0,0 +1,83 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +from azure.cli.core.commands import CliCommandType +from azure.cli.command_modules.botservice._client_factory import ( + get_botservice_management_client, + get_botChannels_client, + get_botOperations_client, + get_botConnections_client) +from azure.cli.command_modules.botservice._exception_handler import bot_exception_handler + + +def load_command_table(self, _): + botOperations_commandType = CliCommandType( + operations_tmpl='azure.mgmt.botservice.operations.bots_operations#BotsOperations.{}', # pylint: disable=line-too-long + client_factory=get_botservice_management_client, + exception_handler=bot_exception_handler + ) + + botServices_commandType = CliCommandType( + operations_tmpl='azure.mgmt.botservice.operations.bots_operations#BotsOperations.{}', # pylint: disable=line-too-long + client_factory=get_botOperations_client, + exception_handler=bot_exception_handler + ) + + botConnections_commandType = CliCommandType( + operations_tmpl='azure.mgmt.botservice.operations.bot_connection_operations#BotConnectionOperations.{}', # pylint: disable=line-too-long + client_factory=get_botConnections_client, + exception_handler=bot_exception_handler + ) + + channelOperations_commandType = CliCommandType( + operations_tmpl='azure.cli.command_modules.botservice.channel_operations#channelOperationsInstance.{}', # pylint: disable=line-too-long + client_factory=get_botChannels_client, + exception_handler=bot_exception_handler + ) + + channelOperationsCreate_commandType = CliCommandType( + operations_tmpl='azure.cli.command_modules.botservice.channel_operations#{}', # pylint: disable=line-too-long + client_factory=get_botChannels_client, + exception_handler=bot_exception_handler + ) + + updateBotService_commandType = CliCommandType( + operations_tmpl='azure.cli.command_modules.botservice.custom#{}', + client_factory=get_botservice_management_client, + exception_handler=bot_exception_handler + ) + + with self.command_group('bot', botOperations_commandType) as g: + g.custom_command('create', 'create') + g.custom_command('publish', 'publish_app') + g.custom_command('download', 'download_app') + g.custom_command('prepare-publish', 'prepare_publish') + + with self.command_group('bot', botServices_commandType) as g: + g.command('show', 'get') + g.command('delete', 'delete') + + with self.command_group('bot authsetting', botConnections_commandType) as g: + g.command('list', 'list_by_bot_service') + g.command('show', 'get') + g.command('delete', 'delete') + + with self.command_group('bot', botServices_commandType) as g: + g.generic_update_command('update', setter_name='update', setter_type=updateBotService_commandType) + + with self.command_group('bot authsetting', botOperations_commandType) as g: + g.custom_command('create', 'create_connection') + g.custom_command('list-providers', 'get_service_providers') + + for channel in ['facebook', 'email', 'msteams', 'skype', 'kik', 'directline', 'telegram', 'sms', 'slack']: + with self.command_group('bot {}'.format(channel), channelOperationsCreate_commandType) as g: + g.command('create', '{}_create'.format(channel)) + + with self.command_group('bot {}'.format(channel), channelOperations_commandType) as g: + g.command('show', '{}_get'.format(channel)) + g.command('delete', '{}_delete'.format(channel)) + + with self.command_group('bot webchat', channelOperations_commandType) as g: + g.command('show', 'webchat_get') diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/custom.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/custom.py new file mode 100644 index 00000000000..4e75e58d7f2 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/custom.py @@ -0,0 +1,482 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +import json +import os +import shutil +import adal # pylint: disable=import-error +from knack.prompting import prompt_y_n # pylint: disable=unused-import +from knack.util import CLIError +from knack.log import get_logger +from azure.cli.core._profile import Profile +from azure.cli.command_modules.botservice._webutils import ( + deploy_arm_template, + enable_zip_deploy, + get_app_settings, + _get_site_credential, + _get_scm_url) +from azure.mgmt.botservice.models import Bot, BotProperties, Sku + +logger = get_logger(__name__) + + +def get_bot_site_name(endpoint): + try: + from urllib.parse import urlsplit + except ImportError: + from urlparse import urlsplit # pylint: disable=import-error + split_parts = urlsplit(endpoint) + return str(split_parts.netloc.split('.', 1)[0]) + + +def provisionConvergedApp(bot_name): + botfirstpartyid = 'f3723d34-6ff5-4ceb-a148-d99dcd2511fc' + aadclientid = '1950a258-227b-4e31-a9cf-717495945fc2' + tenantid = '72f988bf-86f1-41af-91ab-2d7cd011db47' + + authority = 'https://login.windows.net/{0}'.format(tenantid) + context = adal.AuthenticationContext( + authority=authority, + validate_authority=True, + api_version=None + ) + + code = context.acquire_user_code( + resource=botfirstpartyid, + client_id=aadclientid, + ) + + logger.warning(code['message']) + + token = context.acquire_token_with_device_code( + resource=botfirstpartyid, + user_code_info=code, + client_id=aadclientid + ) + access_token = token['accessToken'] + + import requests + headers = {'Authorization': 'Bearer {0}'.format(access_token)} + response = requests.post( + 'https://dev.botframework.com/api/botApp/provisionConvergedApp?name={0}'.format(bot_name), + headers=headers + ) + if response.status_code not in [201]: + raise CLIError('Unable to provision MSA id automatically. Please pass them in as parameters and try again.') + response_content = json.loads(response.content.decode('utf-8')) + msa_app_id = response_content['AppId'] + password = response_content['Password'] + + return msa_app_id, password + + +def create(cmd, client, resource_group_name, resource_name, kind, description=None, display_name=None, + endpoint=None, msa_app_id=None, password=None, tags=None, storageAccountName=None, + location='Central US', sku_name='F0', appInsightsLocation='South Central US', + language='Csharp', version='v3'): + display_name = display_name or resource_name + kind = kind.lower() + + check_name = client.bots.get_check_name_availability( + name=resource_name, + type='') + if not check_name.valid: + raise CLIError('The bot name {0} is not available or is already taken. Please choose a different name' + .format(resource_name)) + + if not msa_app_id: + msa_app_id, password = provisionConvergedApp(resource_name) + logger.warning('obtained msa app id and password. Provisioning bot now.') + + if kind == 'registration': + kind = 'bot' + if not endpoint or not msa_app_id: + raise CLIError('Endpoint and msa app id are required for creating a registration bot') + parameters = Bot( + location='global', + sku=Sku(name=sku_name), + kind=kind, + tags=tags, + properties=BotProperties( + display_name=display_name, + description=description, + endpoint=endpoint, + msa_app_id=msa_app_id + ) + ) + return client.bots.create( + resource_group_name=resource_group_name, + resource_name=resource_name, + parameters=parameters + ) + if kind in ('webapp', 'function'): + return create_app(cmd, client, resource_group_name, resource_name, description, kind, msa_app_id, password, + storageAccountName, location, sku_name, appInsightsLocation, language, version) + else: + raise CLIError('Invalid Bot Parameter : Kind') + + +def update(client, parameters, resource_group_name): + try: + return client.update( + resource_group_name=resource_group_name, + resource_name=parameters.name, + **(parameters.__dict__) + ) + except AttributeError: + return None + + +def create_bot_json(cmd, client, resource_group_name, resource_name, app_password=None, raw_bot_properties=None): + if not raw_bot_properties: + raw_bot_properties = client.bots.get( + resource_group_name=resource_group_name, + resource_name=resource_name + ) + if not app_password: + site_name = get_bot_site_name(raw_bot_properties.properties.endpoint) + app_settings = get_app_settings( + cmd=cmd, + resource_group_name=resource_group_name, + name=site_name + ) + app_password = [item['value'] for item in app_settings if item['name'] == 'MicrosoftAppPassword'][0] + + profile = Profile(cli_ctx=cmd.cli_ctx) + return { + 'type': 'abs', + 'id': raw_bot_properties.name, + 'name': raw_bot_properties.properties.display_name, + 'appId': raw_bot_properties.properties.msa_app_id, + 'appPassword': app_password, + 'endpoint': raw_bot_properties.properties.endpoint, + 'resourceGroup': str(resource_group_name), + 'tenantId': profile.get_subscription(subscription=client.config.subscription_id)['tenantId'], + 'subscriptionId': client.config.subscription_id + } + + +def get_bot(cmd, client, resource_group_name, resource_name, bot_json=None): + raw_bot_properties = client.bots.get( + resource_group_name=resource_group_name, + resource_name=resource_name + ) + if bot_json: + return create_bot_json(cmd, client, resource_group_name, resource_name, raw_bot_properties=raw_bot_properties) + + return raw_bot_properties + + +def create_connection(client, resource_group_name, resource_name, connection_name, client_id, + client_secret, scopes, service_provider_name, parameters=None): + from azure.mgmt.botservice.models import ConnectionSetting, ConnectionSettingProperties, ConnectionSettingParameter + service_provider = get_service_providers(client, name=service_provider_name) + if not service_provider: + raise CLIError('Invalid Service Provider Name passed. Use listprovider command to see all available providers') + connection_parameters = [] + if parameters: + for parameter in parameters: + pair = parameter.split('=', 1) + if len(pair) == 1: + raise CLIError('usage error: --parameters STRING=STRING STRING=STRING') + connection_parameters.append(ConnectionSettingParameter(key=pair[0], value=pair[1])) + setting = ConnectionSetting( + location='global', + properties=ConnectionSettingProperties( + client_id=client_id, + client_secret=client_secret, + scopes=scopes, + service_provider_id=service_provider.properties.id, + parameters=connection_parameters + ) + ) + return client.bot_connection.create(resource_group_name, resource_name, connection_name, setting) + + +def get_service_providers(client, name=None): + service_provider_response = client.bot_connection.list_service_providers() + name = name and name.lower() + if name: + try: + return next((item for item in service_provider_response.value if item.properties.service_provider_name.lower() == name.lower())) # pylint: disable=line-too-long + except StopIteration: + raise CLIError('A service provider with the name {0} was not found'.format(name)) + return service_provider_response + + +def create_app(cmd, client, resource_group_name, resource_name, description, kind, appid, password, storageAccountName, + location, sku_name, appInsightsLocation, language, version): + if version == 'v3': + if kind == 'function': + template_name = 'functionapp.template.json' + if language == 'Csharp': + zip_url = 'https://connectorprod.blob.core.windows.net/bot-packages/csharp-abs-functions_emptybot.zip' + else: + zip_url = 'https://connectorprod.blob.core.windows.net/bot-packages/node.js-abs-functions_emptybot_funcpack.zip' # pylint: disable=line-too-long + + else: + kind = 'sdk' + template_name = 'webapp.template.json' + if language == 'Csharp': + zip_url = 'https://connectorprod.blob.core.windows.net/bot-packages/csharp-abs-webapp_simpleechobot_precompiled.zip' # pylint: disable=line-too-long + else: + zip_url = 'https://connectorprod.blob.core.windows.net/bot-packages/node.js-abs-webapp_hello-chatconnector.zip' # pylint: disable=line-too-long + elif version == 'v4': + if kind == 'function': + raise CLIError('Function bot creation is not supported for v4 bot sdk.') + + else: + kind = 'sdk' + template_name = 'webapp.template.json' + if language == 'Csharp': + zip_url = 'https://connectorprod.blob.core.windows.net/bot-packages/csharp-abs-webapp-v4_echobot-aspnetcore_precompiled.zip' # pylint: disable=line-too-long + else: + zip_url = 'https://connectorprod.blob.core.windows.net/bot-packages/node.js-abs-webapp-v4_hello-chatconnector.zip' # pylint: disable=line-too-long + + create_new_storage = False + if not storageAccountName: + import re + import string + import random + create_new_storage = True + storageAccountName = re.sub(r'[^a-z0-9]', '', resource_name[:10] + + ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(4))) + site_name = re.sub(r'[^a-z0-9]', '', resource_name[:15] + + ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(4))) + + paramsdict = { + "location": location, + "kind": kind, + "sku": sku_name, + "siteName": site_name, + "appId": appid, + "appSecret": password, + "storageAccountResourceId": "", + "serverFarmId": "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Web/serverfarms/{2}".format( + client.config.subscription_id, resource_group_name, resource_name), + "zipUrl": zip_url, + "createNewStorage": create_new_storage, + "storageAccountName": storageAccountName, + "botEnv": "prod", + "useAppInsights": True, + "appInsightsLocation": appInsightsLocation, + "createServerFarm": True, + "serverFarmLocation": location.lower().replace(' ', ''), + "azureWebJobsBotFrameworkDirectLineSecret": "", + "botId": resource_name + } + if description: + paramsdict['description'] = description + params = {k: {'value': v} for k, v in paramsdict.items()} + + dir_path = os.path.dirname(os.path.realpath(__file__)) + deploy_result = deploy_arm_template( + cli_ctx=cmd.cli_ctx, + resource_group_name=resource_group_name, + template_file=os.path.join(dir_path, template_name), + parameters=[[json.dumps(params)]], + deployment_name=resource_name, + mode='Incremental' + ) + + deploy_result.wait() + return create_bot_json(cmd, client, resource_group_name, resource_name, app_password=password) + + +def create_upload_zip(code_dir): + import zipfile + file_excludes = ['upload.zip', 'db.lock'] + folder_excludes = ['node_modules', 'packages', 'bin', 'obj'] + zip_filepath = os.path.abspath('upload.zip') + save_cwd = os.getcwd() + os.chdir(code_dir) + try: + with zipfile.ZipFile(zip_filepath, 'w', + compression=zipfile.ZIP_DEFLATED) as zf: + path = os.path.normpath(os.curdir) + for dirpath, dirnames, filenames in os.walk(os.curdir, topdown=True): + for item in folder_excludes: + if item in dirnames: + dirnames.remove(item) + for name in sorted(dirnames): + path = os.path.normpath(os.path.join(dirpath, name)) + zf.write(path, path) + for name in filenames: + if name in file_excludes: + continue + path = os.path.normpath(os.path.join(dirpath, name)) + if os.path.isfile(path): + zf.write(path, path) + finally: + os.chdir(save_cwd) + return zip_filepath + + +def check_response_status(response, expected_code=None): + expected_code = expected_code or 200 + if response.status_code != expected_code: + raise CLIError('Failed with status code {} and reason {}'.format( + response.status_code, response.text)) + + +def publish_app(cmd, client, resource_group_name, resource_name, code_dir=None): + # get the bot and ensure it's not a registration only bot + raw_bot_properties = client.bots.get( + resource_group_name=resource_group_name, + resource_name=resource_name + ) + if raw_bot_properties.kind == 'bot': + raise CLIError('Source publish is not supported for registration only bots') + + if not code_dir: + code_dir = os.getcwd() + + if not os.path.isdir(code_dir): + raise CLIError('Please supply a valid directory path containing your source code') + # ensure that the directory contains appropriate post deploy scripts folder + if 'PostDeployScripts' not in os.listdir(code_dir): + raise CLIError('Not a valid azure publish directory. missing post deploy scripts') + + zip_filepath = create_upload_zip(code_dir) + site_name = get_bot_site_name(raw_bot_properties.properties.endpoint) + # first try to put the zip in clirepo + user_name, password = _get_site_credential(cmd.cli_ctx, resource_group_name, site_name, None) + scm_url = _get_scm_url(cmd, resource_group_name, site_name, None) + + import urllib3 + authorization = urllib3.util.make_headers(basic_auth='{0}:{1}'.format(user_name, password)) + headers = authorization + + import requests + payload = { + 'command': 'rm -rf clirepo', + 'dir': r'site' + } + headers['content-type'] = 'application/json' + response = requests.post(scm_url + '/api/command', data=json.dumps(payload), headers=headers) + check_response_status(response) + response = requests.put(scm_url + '/api/vfs/site/clirepo/', headers=headers) + check_response_status(response, 201) + headers['content-type'] = 'application/octet-stream' + with open(zip_filepath, 'rb') as fs: + zip_content = fs.read() + response = requests.put(scm_url + '/api/zip/site/clirepo', headers=headers, data=zip_content) + + output = enable_zip_deploy(cmd, resource_group_name, site_name, 'upload.zip') + os.remove('upload.zip') + return output + + +def download_app(cmd, client, resource_group_name, resource_name, file_save_path=None): + # get the bot and ensure it's not a registration only bot + raw_bot_properties = client.bots.get( + resource_group_name=resource_group_name, + resource_name=resource_name + ) + if raw_bot_properties.kind == 'bot': + raise CLIError('Source download is not supported for registration only bots') + + file_save_path = file_save_path or os.getcwd() + if not os.path.isdir(file_save_path): + raise CLIError('Path name not valid') + folder_path = os.path.join(file_save_path, resource_name) + if os.path.exists(folder_path): + raise CLIError('The path {0} already exists. Please delete it or specify an alternate path'.format(folder_path)) + os.mkdir(folder_path) + + site_name = get_bot_site_name(raw_bot_properties.properties.endpoint) + + user_name, password = _get_site_credential(cmd.cli_ctx, resource_group_name, site_name, None) + scm_url = _get_scm_url(cmd, resource_group_name, site_name, None) + + import urllib3 + authorization = urllib3.util.make_headers(basic_auth='{0}:{1}'.format(user_name, password)) + headers = authorization + headers['content-type'] = 'application/json' + + # if repository folder exists, then get those contents for download + import requests + response = requests.get(scm_url + '/api/zip/site/clirepo/', headers=authorization, ) + if response.status_code != 200: + # try getting the bot from wwwroot instead + payload = { + 'command': 'PostDeployScripts\\prepareSrc.cmd {0}'.format(password), + 'dir': r'site\wwwroot' + } + response = requests.post(scm_url + '/api/command', data=json.dumps(payload), headers=headers) + check_response_status(response) + response = requests.get(scm_url + '/api/vfs/site/bot-src.zip', headers=authorization) + check_response_status(response) + + download_path = os.path.join(file_save_path, 'download.zip') + with open(os.path.join(file_save_path, 'download.zip'), 'wb') as f: + f.write(response.content) + import zipfile + zip_ref = zipfile.ZipFile(download_path) + zip_ref.extractall(folder_path) + zip_ref.close() + os.remove(download_path) + if not (os.path.exists(os.path.join(folder_path, 'PostDeployScripts', 'deploy.cmd.template')) and + os.path.exists(os.path.join(folder_path, 'deploy.cmd'))): + shutil.copyfile(os.path.join(folder_path, 'deploy.cmd'), + os.path.join(folder_path, 'PostDeployScripts', 'deploy.cmd.template')) + return {'downloadPath': folder_path} + + +def prepare_publish(cmd, client, resource_group_name, resource_name, sln_name, proj_name, code_dir=None): + raw_bot_properties = client.bots.get( + resource_group_name=resource_group_name, + resource_name=resource_name + ) + if raw_bot_properties.kind == 'bot': + raise CLIError('Prepare Publish is not supported for registration only bots') + code_dir = code_dir or os.getcwd() + if not os.path.isdir(code_dir): + raise CLIError('Please supply a valid directory path containing your source code') + + os.chdir(code_dir) + # ensure that the directory does not contain appropriate post deploy scripts folder + if 'PostDeployScripts' in os.listdir(code_dir): + raise CLIError('Post deploy azure scripts are already in Place.') + download_path = download_app(cmd, client, resource_group_name, resource_name) + + shutil.copytree(os.path.join(download_path['downloadPath'], 'PostDeployScripts'), 'PostDeployScripts') + + if os.path.exists(os.path.join('PostDeployScripts', 'publish.js.template')): + shutil.copy(os.path.join(download_path['downloadPath'], 'iisnode.yml'), 'iisnode.yml') + shutil.copy(os.path.join(download_path['downloadPath'], 'publish.js'), 'publish.js') + shutil.copy(os.path.join(download_path['downloadPath'], 'web.config'), 'web.config') + else: + solution_path = None + csproj_path = None + old_namev4 = 'AspNetCore-EchoBot-With-State' + old_namev3 = 'Microsoft.Bot.Sample.SimpleEchoBot' + shutil.copy(os.path.join(download_path['downloadPath'], 'build.cmd'), 'build.cmd') + shutil.copy(os.path.join(download_path['downloadPath'], '.deployment'), '.deployment') + shutil.copyfile(os.path.join(download_path['downloadPath'], 'PostDeployScripts', 'deploy.cmd.template'), + 'deploy.cmd') + # find solution and project name + for root, _, files in os.walk(os.curdir): + if solution_path and csproj_path: + break + for fileName in files: + if solution_path and csproj_path: + break + if fileName == sln_name: + solution_path = os.path.relpath(os.path.join(root, fileName)) + if fileName == proj_name: + csproj_path = os.path.relpath(os.path.join(root, fileName)) + + with open('deploy.cmd') as f: + content = f.read() + + with open('deploy.cmd', 'w') as f: + content = content.replace(old_namev3 + '.sln', solution_path) + content = content.replace(old_namev3 + '.csproj', csproj_path) + content = content.replace(old_namev4 + '.sln', solution_path) + content = content.replace(old_namev4 + '.csproj', csproj_path) + f.write(content) + + shutil.rmtree(download_path['downloadPath']) diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/functionapp.template.json b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/functionapp.template.json new file mode 100644 index 00000000000..e5e7149341f --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/functionapp.template.json @@ -0,0 +1,437 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "botEnv": { + "type": "string", + "defaultValue": "prod" + }, + "botId": { + "type": "string" + }, + "description": { + "type": "string", + "defaultValue": "" + }, + "location": { + "type": "string" + }, + "sku": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "siteName": { + "type": "string" + }, + "createNewStorage": { + "type": "bool" + }, + "storageAccountName": { + "type": "string" + }, + "storageAccountResourceId": { + "type": "string", + "defaultValue": "" + }, + "appId": { + "type": "string", + "defaultValue": "1234" + }, + "appSecret": { + "type": "string", + "defaultValue": "blank" + }, + "azureWebJobsBotFrameworkDirectLineSecret": { + "type": "string", + "defaultValue": "" + }, + "zipUrl": { + "type": "string", + "defaultValue": "" + }, + "proactiveZipUrl": { + "type": "string", + "defaultValue": "" + }, + "useAppInsights": { + "type": "bool" + }, + "appInsightsLocation": { + "type": "string" + }, + "serverFarmId": { + "type": "string" + }, + "createServerFarm": { + "type": "bool" + }, + "serverFarmLocation": { + "type": "string", + "defaultValue": "" + }, + "serverFarmSku": { + "type": "object", + "defaultValue": { + "name": "S1", + "tier": "Standard", + "size": "S1", + "family": "S", + "capacity": 1 + } + }, + "endpoint": { + "type": "string", + "defaultValue": "" + }, + "luisApiLocation": { + "type": "string", + "defaultValue": "Global" + } + }, + "variables": { + "storageAccountType": "Standard_LRS", + "storageAccountId": "[if(or(parameters('createNewStorage'), equals('', parameters('storageAccountResourceId'))), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), parameters('storageAccountResourceId'))]", + "serverFarmName": "[last(split(parameters('serverFarmId'), '/'))]", + "myWorkerSize": 0, + "proactiveFunctionName": "[concat(parameters('siteName'), '-function')]", + "insightsName": "[concat(parameters('botId'), substring(uniqueString(resourceGroup().id), 0, 6))]", + "config": { + "scratch": { + "stateEndpoint": "https://intercom-api-scratch.azurewebsites.net", + "azureWebJobsBotFrameworkDirectLineEndpoint": "https://directline.scratch.botframework.com/", + "blobStoreName": "icscratch", + "openIdMetadata": "https://intercom-api-ppe.azurewebsites.net/v1/.well-known/openidconfiguration" + }, + "ppe": { + "stateEndpoint": "https://intercom-api-ppe.azurewebsites.net", + "azureWebJobsBotFrameworkDirectLineEndpoint": "https://directline.ppe.botframework.com/", + "blobStoreName": "intercomppe", + "openIdMetadata": "https://intercom-api-ppe.azurewebsites.net/v1/.well-known/openidconfiguration" + }, + "prod": { + "stateEndpoint": "", + "azureWebJobsBotFrameworkDirectLineEndpoint": "https://directline.botframework.com/", + "blobStoreName": "connectorprod", + "openIdMetadata": "" + } + }, + "botAppKinds": { + "function": "functionapp", + "sdk": "app", + "designer": "app", + "bot": "" + }, + "botAppKind": "[variables('botAppKinds')[parameters('kind')]]", + "currentConfig": "[variables('config')[toLower(parameters('botEnv'))]]", + "siteHost": "[concat(parameters('siteName'), '.azurewebsites.net')]", + "botEndpointConfig": { + "bot": "[parameters('endpoint')]", + "sdk": "[concat('https://', variables('siteHost'), '/api/messages')]", + "designer": "[concat('https://', variables('siteHost'), '/api/messages')]", + "function": "[concat('https://', variables('siteHost'), '/api/messages?code=', 'NYI')]" + }, + "botEndpoint": "[variables('botEndpointConfig')[parameters('kind')]]", + "luisApiName": "", + "luisApiResId": "[resourceId('Microsoft.CognitiveServices/accounts/', variables('luisApiName'))]" + }, + "resources": [ + { + "name": "[if(equals('', variables('luisApiName')), 'nosuch', variables('luisApiName'))]", + "apiVersion": "2017-04-18", + "condition": "[not(equals(variables('luisApiName'), ''))]", + "type": "Microsoft.CognitiveServices/accounts", + "location": "[parameters('luisApiLocation')]", + "sku": { + "name": "F0" + }, + "kind": "LUIS", + "properties": {} + }, + { + "type": "Microsoft.Storage/storageAccounts", + "condition": "[parameters('createNewStorage')]", + "name": "[parameters('storageAccountName')]", + "apiVersion": "2015-05-01-preview", + "location": "[parameters('location')]", + "properties": { + "accountType": "[variables('storageAccountType')]" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "condition": "[parameters('createServerFarm')]", + "name": "[variables('serverFarmName')]", + "apiVersion": "2016-09-01", + "location": "[parameters('serverFarmLocation')]", + "sku": "[parameters('serverFarmSku')]", + "properties": { + "name": "[variables('serverFarmName')]" + } + }, + { + "name": "[variables('insightsName')]", + "type": "microsoft.insights/components", + "kind": "web", + "apiVersion": "2014-04-01", + "condition": "[parameters('useAppInsights')]", + "location": "[parameters('appInsightsLocation')]", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.BotService/botServices/', parameters('botId')))]": "Resource", + "[concat('hidden-link:', resourceId('Microsoft.Web/sites/', parameters('siteName')))]": "Resource" + }, + "properties": { + "ApplicationId": "[parameters('botId')]" + } + }, + { + "name": "[parameters('siteName')]", + "type": "Microsoft.Web/sites", + "apiVersion": "2015-08-01", + "condition": "[not(equals(parameters('zipUrl'), ''))]", + "location": "[parameters('location')]", + "kind": "[variables('botAppKind')]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", + "[parameters('serverFarmId')]" + ], + "properties": { + "name": "[parameters('siteName')]", + "serverFarmId": "[parameters('serverFarmId')]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listkeys(variables('storageAccountId'), '2015-05-01-preview').key1,';')]" + }, + { + "name": "AzureWebJobsDashboard", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listkeys(variables('storageAccountId'), '2015-05-01-preview').key1,';')]" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "6.9.1" + }, + { + "name": "BotEnv", + "value": "[parameters('botEnv')]" + }, + { + "name": "BotId", + "value": "[parameters('botId')]" + }, + { + "name": "MicrosoftAppId", + "value": "[parameters('appId')]" + }, + { + "name": "MicrosoftAppPassword", + "value": "[parameters('appSecret')]" + }, + { + "name": "BotStateEndpoint", + "value": "[variables('currentConfig').stateEndpoint]" + }, + { + "name": "BotOpenIdMetadata", + "value": "[variables('currentConfig').openIdMetadata]" + }, + { + "name": "UseTableStorageForConversationState", + "value": "true" + }, + { + "name": "BotDevAppInsightsKey", + "value": "[reference(resourceId('microsoft.insights/components/', variables('insightsName')), '2015-05-01').InstrumentationKey]" + }, + { + "name": "BotDevAppInsightsName", + "value": "[variables('insightsName')]" + }, + { + "name": "BotDevAppInsightsAppId", + "value": "[reference(resourceId('microsoft.insights/components/', variables('insightsName')), '2015-05-01').AppId]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~1" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listkeys(variables('storageAccountId'), '2015-05-01-preview').key1,';')]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[parameters('siteName')]" + }, + { + "name": "AzureWebJobsBotFrameworkDirectLineSecret", + "value": "[parameters('azureWebJobsBotFrameworkDirectLineSecret')]" + }, + { + "name": "AzureWebJobsBotFrameworkDirectLineEndpoint", + "value": "[variables('currentConfig').azureWebJobsBotFrameworkDirectLineEndpoint]" + } + ], + "cors": { + "allowedOrigins": [ + "https://localhost:44300", + "https://botservice.hosting.portal.azure.net", + "https://hosting.onecloud.azure-test.net/", + "https://functions.azure.com", + "https://functions-staging.azure.com", + "https://functions-next.azure.com" + ] + } + } + }, + "resources": [ + { + "name": "MSDeploy", + "type": "Extensions", + "apiVersion": "2015-02-01", + "condition": "[not(equals(parameters('zipUrl'), ''))]", + "dependsOn": [ + "[concat('Microsoft.Web/Sites/', parameters('siteName'))]" + ], + "properties": { + "packageUri": "[parameters('zipUrl')]", + "dbType": "None", + "connectionString": "", + "setParameters": { + "IIS Web Application Name": "[parameters('siteName')]" + } + } + }, + { + "apiVersion": "2015-08-01", + "name": "logs", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites', parameters('siteName'))]", + "[resourceId('Microsoft.Web/Sites/extensions', parameters('siteName'), 'MSDeploy')]" + ], + "properties": { + "applicationLogs": { + "fileSystem": { + "level": "Error" + }, + "azureTableStorage": { + "level": "Off", + "sasUrl": null + }, + "azureBlobStorage": { + "level": "Error", + "sasUrl": null, + "retentionInDays": 1 + } + }, + "httpLogs": { + "fileSystem": { + "retentionInMb": 35, + "retentionInDays": 1, + "enabled": true + }, + "azureBlobStorage": { + + "enabled": false + } + }, + "failedRequestsTracing": { + "enabled": true + }, + "detailedErrorMessages": { + "enabled": true + } + } + } + ] + }, + { + "apiVersion": "2016-03-01", + "type": "Microsoft.Web/sites", + "condition": "[not(equals(parameters('proactiveZipUrl'), ''))]", + "name": "[variables('proactiveFunctionName')]", + "location": "[parameters('location')]", + "kind": "functionapp", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", + "[parameters('serverFarmId')]" + ], + "properties": { + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsDashboard", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listkeys(variables('storageAccountId'), '2015-05-01-preview').key1,';')]" + }, + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listkeys(variables('storageAccountId'), '2015-05-01-preview').key1,';')]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listkeys(variables('storageAccountId'), '2015-05-01-preview').key1,';')]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[toLower(variables('proactiveFunctionName'))]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~1" + }, + { + "name": "AzureWebJobsBotFrameworkDirectLineSecret", + "value": "[parameters('azureWebJobsBotFrameworkDirectLineSecret')]" + }, + { + "name": "AzureWebJobsBotFrameworkDirectLineEndpoint", + "value": "[variables('currentConfig').azureWebJobsBotFrameworkDirectLineEndpoint]" + } + ] + } + }, + "resources": [ + { + "name": "MSDeploy", + "type": "Extensions", + "apiVersion": "2015-02-01", + "condition": "[not(equals(parameters('proactiveZipUrl'), ''))]", + "dependsOn": [ + "[concat('Microsoft.Web/Sites/', variables('proactiveFunctionName'))]" + ], + "properties": { + "packageUri": "[parameters('proactiveZipUrl')]" + } + } + ] + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.BotService/botServices", + "name": "[parameters('botId')]", + "location": "global", + "kind": "[parameters('kind')]", + "sku": { + "name": "[parameters('sku')]" + }, + "properties": { + "name": "[parameters('botId')]", + "description": "[parameters('description')]", + "displayName": "[parameters('botId')]", + "endpoint": "[variables('botEndpoint')]", + "msaAppId": "[parameters('appId')]", + "developerAppInsightsApplicationId": "[variables('insightsName')]", + "developerAppInsightKey": "[reference(resourceId('microsoft.insights/components/', variables('insightsName')), '2015-05-01').InstrumentationKey]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", + "[parameters('serverFarmId')]", + "[resourceId('Microsoft.Web/sites/', parameters('siteName'))]", + "[resourceId('microsoft.insights/components/', variables('insightsName'))]" + ] + } + ] +} \ No newline at end of file diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/__init__.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/__init__.py new file mode 100644 index 00000000000..34913fb394d --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/__init__.py @@ -0,0 +1,4 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/__init__.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/__init__.py new file mode 100644 index 00000000000..34913fb394d --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/__init__.py @@ -0,0 +1,4 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_auth_setting.yaml b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_auth_setting.yaml new file mode 100644 index 00000000000..f77f03c9311 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_auth_setting.yaml @@ -0,0 +1,591 @@ +interactions: +- request: + body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation", + "date": "2018-08-14T22:01:38Z"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group create] + Connection: [keep-alive] + Content-Length: ['110'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-08-14T22:01:38Z"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['274'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:39 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [unknown] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 subscriptionclient/2.0.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/locations?api-version=2016-06-01 + response: + body: {string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasia","name":"eastasia","displayName":"East + Asia","longitude":"114.188","latitude":"22.267"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasia","name":"southeastasia","displayName":"Southeast + Asia","longitude":"103.833","latitude":"1.283"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralus","name":"centralus","displayName":"Central + US","longitude":"-93.6208","latitude":"41.5908"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus","name":"eastus","displayName":"East + US","longitude":"-79.8164","latitude":"37.3719"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2","name":"eastus2","displayName":"East + US 2","longitude":"-78.3889","latitude":"36.6681"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus","name":"westus","displayName":"West + US","longitude":"-122.417","latitude":"37.783"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralus","name":"northcentralus","displayName":"North + Central US","longitude":"-87.6278","latitude":"41.8819"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus","name":"southcentralus","displayName":"South + Central US","longitude":"-98.5","latitude":"29.4167"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northeurope","name":"northeurope","displayName":"North + Europe","longitude":"-6.2597","latitude":"53.3478"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westeurope","name":"westeurope","displayName":"West + Europe","longitude":"4.9","latitude":"52.3667"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japanwest","name":"japanwest","displayName":"Japan + West","longitude":"135.5022","latitude":"34.6939"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japaneast","name":"japaneast","displayName":"Japan + East","longitude":"139.77","latitude":"35.68"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazilsouth","name":"brazilsouth","displayName":"Brazil + South","longitude":"-46.633","latitude":"-23.55"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiaeast","name":"australiaeast","displayName":"Australia + East","longitude":"151.2094","latitude":"-33.86"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiasoutheast","name":"australiasoutheast","displayName":"Australia + Southeast","longitude":"144.9631","latitude":"-37.8136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia","name":"southindia","displayName":"South + India","longitude":"80.1636","latitude":"12.9822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralindia","name":"centralindia","displayName":"Central + India","longitude":"73.9197","latitude":"18.5822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westindia","name":"westindia","displayName":"West + India","longitude":"72.868","latitude":"19.088"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadacentral","name":"canadacentral","displayName":"Canada + Central","longitude":"-79.383","latitude":"43.653"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadaeast","name":"canadaeast","displayName":"Canada + East","longitude":"-71.217","latitude":"46.817"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uksouth","name":"uksouth","displayName":"UK + South","longitude":"-0.799","latitude":"50.941"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/ukwest","name":"ukwest","displayName":"UK + West","longitude":"-3.084","latitude":"53.427"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westcentralus","name":"westcentralus","displayName":"West + Central US","longitude":"-110.234","latitude":"40.890"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2","name":"westus2","displayName":"West + US 2","longitude":"-119.852","latitude":"47.233"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral","name":"koreacentral","displayName":"Korea + Central","longitude":"126.9780","latitude":"37.5665"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth","name":"koreasouth","displayName":"Korea + South","longitude":"129.0756","latitude":"35.1796"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral","name":"francecentral","displayName":"France + Central","longitude":"2.3730","latitude":"46.3772"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth","name":"francesouth","displayName":"France + South","longitude":"2.1972","latitude":"43.8345"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral","name":"australiacentral","displayName":"Australia + Central","longitude":"149.1244","latitude":"-35.3075"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2","name":"australiacentral2","displayName":"Australia + Central 2","longitude":"149.1244","latitude":"-35.3075"}]}'} + headers: + cache-control: [no-cache] + content-length: ['5269'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:40 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + status: {code: 200, message: OK} +- request: + body: 'b''{"name": "cli000002", "type": ""}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['34'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/providers/Microsoft.BotService/checkNameAvailability?api-version=2018-07-12 + response: + body: {string: '{"valid":true,"message":""}'} + headers: + cache-control: [no-cache] + content-length: ['27'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:41 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-tenant-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: 'b''{"location": "global", "sku": {"name": "F0"}, "kind": "bot", "properties": + {"displayName": "cli000002", "endpoint": "https://www.google.com/api/messages", + "msaAppId": "a0acb6d9-1024-46c7-af98-2c4ba9607244"}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['208'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","name":"cli000002","type":"Microsoft.BotService/botServices","etag":"W/\"datetime''2018-08-14T22%3A01%3A42.4964917Z''\"","location":"global","sku":{"name":"F0"},"kind":"bot","tags":{},"properties":{"displayName":"cli000002","description":"","iconUrl":"//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png","endpoint":"https://www.google.com/api/messages","msaAppId":"a0acb6d9-1024-46c7-af98-2c4ba9607244","developerAppInsightKey":"","developerAppInsightsApplicationId":"","luisAppIds":[],"endpointVersion":"3.0","configuredChannels":["webchat"],"enabledChannels":["webchat","directline"],"isDeveloperAppInsightsApiKeySet":false,"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['827'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:42 GMT'] + etag: [W/"datetime'2018-08-14T22%3A01%3A42.4964917Z'"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot authsetting create] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.BotService/listAuthServiceProviders?api-version=2018-07-12 + response: + body: {string: '{"value":[{"properties":{"id":"00ea67de-bfc6-4f45-9ede-083899596b7b","displayName":"Wunderlist","serviceProviderName":"wunderlist","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"01340562-8c8f-4892-abd4-90daf0e5face","displayName":"Google","serviceProviderName":"google","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"05a2de0b-ca79-456d-835f-bebef60a18fd","displayName":"Pinterest","serviceProviderName":"pinterest","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"0ea750dc-3d8f-4093-874d-ab68298299d4","displayName":"appFigures","serviceProviderName":"appFigures","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Consumer + Key (API Key)","description":"The id used to identify this application with + the service provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"0f1a8ee8-cb00-4b10-97db-045c404a239f","displayName":"Facebook","serviceProviderName":"facebook","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"26311afb-ebf0-49fa-90a3-a0a0366923f7","displayName":"Skype + For Business","serviceProviderName":"SkypeForBusiness","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The client ID of the AAD application with permissions to + the Skype tenant.","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The client secret of the AAD application with permissions + to the Skype tenant.","helpUrl":null,"default":null},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"ResourceUri","type":"string","displayName":"Resource + URI","description":"The URI for the discovery endpoint. Need an AAD token + to access this endpoint.","helpUrl":"https://msdn.microsoft.com/en-us/skype/ucwa/authenticationusingazuread","default":"https://webdir.online.lync.com/"},{"name":"LoginUriAAD","type":"string","displayName":"Login + URI for AAD","description":"The URI for the AAD login endpoint.","helpUrl":null,"default":"https://login.microsoftonline.com"}]}},{"properties":{"id":"29d6ab23-bb51-4e91-a010-d38c1e30d1c4","displayName":"Outlook","serviceProviderName":"outlook","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"307d995f-f1ce-4918-bd3f-037685e9d241","displayName":"SharePoint + Online","serviceProviderName":"SharePointOnline","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"GrantType","type":"string","displayName":"Grant + Type","description":"Oauth2 grant type to use.","helpUrl":null,"default":"Code"},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"DiscoveryUri","type":"string","displayName":"Discovery + URL","description":"The Sharepoint Online Azure Active Directory discovery + URL.","helpUrl":null,"default":"https://api.office.com/discovery/"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"Capability","type":"string","displayName":"Capability","description":"Resource + for which AccessToken needs to be obtained.","helpUrl":"http://msdn.microsoft.com/en-us/office/office365/howto/discover-service-endpoints","default":"RootSite"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The resource to get authorization for.","helpUrl":null,"default":null}]}},{"properties":{"id":"30dd229c-58e3-4a48-bdfd-91ec48eb906c","displayName":"Azure + Active Directory v2","serviceProviderName":"Aadv2","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"}]}},{"properties":{"id":"38b67016-73e2-4102-9fad-e348607cc800","displayName":"LinkedIn","serviceProviderName":"linkedin","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"407d4275-4e43-4fc9-b179-a1022492fa23","displayName":"Trello","serviceProviderName":"trello","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Consumer + Key (API Key)","description":"The id used to identify this application with + the service provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null},{"name":"ApplicationDisplayName","type":"string","displayName":"Application + Display Name","description":"The name of the application showed during authorization","helpUrl":null,"default":"Unnamed + Application"}]}},{"properties":{"id":"42525a7c-c853-4d4e-9032-deaa67f3de8e","displayName":"Sharepoint + Server","serviceProviderName":"SharepointServer","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"ResourceUri","type":"string","displayName":"ResourceUri","description":"The + resource URI for AAD.","helpUrl":null,"default":null},{"name":"TenantId","type":"string","displayName":"TenantId","description":"The + AAD tenant ID for this application.","helpUrl":null,"default":null}]}},{"properties":{"id":"48588eaf-3c7A-46db-88B9-0ea77d6C451a","displayName":"Workday","serviceProviderName":"workday","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Workday login URL.","helpUrl":null,"default":null},{"name":"TokenUri","type":"string","displayName":"Token + URL","description":"The Workday token URL.","helpUrl":null,"default":null},{"name":"InstanceName","type":"string","displayName":"Instance + Name","description":"The Workday instance name specific for your tenant.","helpUrl":null,"default":null}]}},{"properties":{"id":"4b5c96f6-cca7-4048-bfd2-53e850a183f1","displayName":"Generic + Oauth 2","serviceProviderName":"oauth2","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"AuthorizationUrl","type":"string","displayName":"Authorization + URL","description":"The authorization endpoint URL","helpUrl":null,"default":null},{"name":"TokenUrl","type":"string","displayName":"Token + URL","description":"The token endpoint URL","helpUrl":null,"default":null},{"name":"RefreshUrl","type":"string","displayName":"Refresh + URL","description":"The token refresh endpoint URL","helpUrl":null,"default":null}]}},{"properties":{"id":"4b7816ab-ea29-487a-96a5-1918b5661d8e","displayName":"Slack","serviceProviderName":"slack","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"4f349199-7980-48f0-9b1b-282347f5de2a","displayName":"Zendesk","serviceProviderName":"zendesk","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"SubDomain","type":"string","displayName":"Subdomain","description":"The + subdomain name used to identify the Zendesk Site URL","helpUrl":null,"default":null},{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"51dd6264-6d45-4e46-b720-5ff7e8c28873","displayName":"Dynamics + CRM Online","serviceProviderName":"DynamicsCrmOnline","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"GrantType","type":"string","displayName":"Grant + Type","description":"Oauth2 grant type to use.","helpUrl":null,"default":"Code"},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"ResourceUriAAD","type":"string","displayName":"Resource + URL","description":"The Azure Active Directory discovery URL.","helpUrl":null,"default":"https://api.office.com/discovery/"},{"name":"DiscoveryUri","type":"string","displayName":"Full + Discovery URL","description":"TEST ONLY discovery URL. This isn''t needed + for this setting to function.","helpUrl":null,"default":"about:blank"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The resource to get authorization for.","helpUrl":null,"default":null}]}},{"properties":{"id":"5232e24f-b6c6-4920-b09d-d93a520c92e9","displayName":"Azure + Active Directory","serviceProviderName":"Aad","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"GrantType","type":"string","displayName":"Grant + Type","description":"Oauth2 grant type to use.","helpUrl":null,"default":"Code"},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The resource to get authorization for.","helpUrl":null,"default":null}]}},{"properties":{"id":"549dcd43-e619-4a19-8bb1-83524a472646","displayName":"Smartsheet","serviceProviderName":"smartsheet","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"58189554-6279-4b11-97c8-e3d8245da5ef","displayName":"Flickr","serviceProviderName":"flickr","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"6587ef92-9050-4699-832a-a263aed32448","displayName":"Office + 365 (Discovery)","serviceProviderName":"Office365","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"GrantType","type":"string","displayName":"Grant + Type","description":"Oauth2 grant type to use.","helpUrl":null,"default":"Code"},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"DiscoveryUri","type":"string","displayName":"Discovery + URL","description":"The Office365 Azure Active Directory discovery URL.","helpUrl":null,"default":"https://api.office.com/discovery/"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"Capability","type":"string","displayName":"Capability","description":"Resource + for which AccessToken needs to be obtained.","helpUrl":"http://msdn.microsoft.com/en-us/office/office365/howto/discover-service-endpoints","default":"Contacts"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The resource to get authorization for.","helpUrl":null,"default":null}]}},{"properties":{"id":"65d314ec-3b66-4021-b2c9-6d8c2f7148ff","displayName":"OneDrive","serviceProviderName":"onedrive","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"68d0136a-6396-41d8-9dbf-1b2843ed1ff7","displayName":"Basecamp","serviceProviderName":"basecamp","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"6b6010fd-266b-492a-b150-c87b9bad7339","displayName":"Instagram","serviceProviderName":"instagram","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"6b9e493f-950f-4451-85d6-0fc7c0f2c9b1","displayName":"MailChimp","serviceProviderName":"mailchimp","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"719a075e-37f9-4c6b-9633-e6167c12536e","displayName":"Office + 365","serviceProviderName":"Office365User","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The Active Active Directory client ID","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The Azure Active Directory secret","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The Azure Active Directory resource URL.","helpUrl":null,"default":"https://graph.microsoft.com"}]}},{"properties":{"id":"7be3563f-3072-4846-ad8f-09e5fa685c65","displayName":"Adobe + EchoSign","serviceProviderName":"echosign","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"7dda6125-c4c2-4591-96c9-cf7ab657dcf6","displayName":"Live","serviceProviderName":"live","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"8379c6d2-b262-4d4f-b89b-68dc5b5f5482","displayName":"Oauth + 2 Generic Provider","serviceProviderName":"oauth2generic","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"ScopeListDelimiter","type":"string","displayName":"Scope + List Delimiter","description":"Character to delimit the scope list","helpUrl":null,"default":" + "},{"name":"AuthorizationUrlTemplate","type":"string","displayName":"Authorization + URL Template","description":"The authorization endpoint URL. Example: https://login.acme.com/oauth2/authorize","helpUrl":null,"default":null},{"name":"AuthorizationUrlQueryStringTemplate","type":"string","displayName":"Authorization + URL Query String Template","description":"The authorization endpoint URL query + string. Example: ?client_id={ClientId}&response_type=code&redirect_uri={RedirectUrl}&scope={Scopes}&state={State}","helpUrl":null,"default":"?client_id={ClientId}&response_type=code&redirect_uri={RedirectUrl}&scope={Scopes}&state={State}"},{"name":"TokenUrlTemplate","type":"string","displayName":"Token + URL Template","description":"The token conversion endpoint URL. Example value + would be https://api.acme.com/oauth2/token","helpUrl":null,"default":null},{"name":"TokenUrlQueryStringTemplate","type":"string","displayName":"Token + URL Query String Template","description":"The token conversion endpoint URL + query string. Example: ?client_secret={ClientSecret}","helpUrl":null,"default":""},{"name":"TokenBodyTemplate","type":"string","displayName":"Token + Body Template","description":"The token conversion body.","helpUrl":null,"default":"code={Code}&grant_type=authorization_code&redirect_uri={RedirectUrl}&client_id={ClientId}&client_secret={ClientSecret}"},{"name":"RefreshUrlTemplate","type":"string","displayName":"Refresh + URL Template","description":"The token refresh endpoint URL. Example value + would be https://api.acme.com/oauth2/token","helpUrl":null,"default":null},{"name":"RefreshUrlQueryStringTemplate","type":"string","displayName":"Refresh + URL Query String Template","description":"The token refresh endpoint URL query + string. Example: ?client_secret={ClientSecret}","helpUrl":null,"default":""},{"name":"RefreshBodyTemplate","type":"string","displayName":"Refresh + Body Template","description":"The token refresh body","helpUrl":null,"default":"refresh_token={RefreshToken}&grant_type=refresh_token&client_id={ClientId}&client_secret={ClientSecret}"}]}},{"properties":{"id":"900b8f4a-9cb3-420d-85df-ba9f8f285c20","displayName":"Spotify","serviceProviderName":"spotify","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"979935d1-226c-4ed0-95c6-f13c0ac7e1c4","displayName":"Tumblr","serviceProviderName":"tumblr","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"99b51571-bd21-4124-abf2-1ef32c90cb07","displayName":"AWeber","serviceProviderName":"AWeber","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Consumer + Key (API Key)","description":"The id used to identify this application with + the service provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"a5e55046-6a2e-446e-8d5e-4b61cca91968","displayName":"Marketo","serviceProviderName":"marketo","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"BaseUrl","type":"string","displayName":"BaseUrl","description":"Marketo + Instance BaseUrl","helpUrl":null,"default":null}]}},{"properties":{"id":"b7e2a8c4-ce26-4a94-aeeb-f203ed505fa4","displayName":"DropBox","serviceProviderName":"dropbox","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"b8491b1f-e709-4c3d-8339-5ba2182b46ee","displayName":"Box","serviceProviderName":"box","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"bb097393-2a3c-4048-b3c6-1ce9fa90a537","displayName":"Yammer","serviceProviderName":"yammer","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"bb1dc32d-85e0-4607-a511-bc77ddd414b7","displayName":"Quickbooks","serviceProviderName":"intuit","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"bcdbb5a4-d571-473b-9821-0e969a044f7d","displayName":"UserVoice","serviceProviderName":"uservoice","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"SubDomain","type":"string","displayName":"UserVoice + site Subdomain name","description":"The subdomain name used to identify the + UserVoice Site URL","helpUrl":null,"default":null},{"name":"ClientId","type":"string","displayName":"Consumer + Key (API Key)","description":"The id used to identify this application with + the service provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"bf58b8fb-74ea-4a84-8e68-03573ac9be2a","displayName":"Salesforce","serviceProviderName":"salesforce","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL to be used","description":null,"helpUrl":null,"default":"https://login.salesforce.com"}]}},{"properties":{"id":"c676c4c4-e36b-46b2-9ff0-027a50c4e53f","displayName":"Todoist","serviceProviderName":"todoist","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"cb4103d0-e5e7-4c7A-9712-eea4edf5b5be","displayName":"Fitbit","serviceProviderName":"fitbit","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"d05eaacf-1593-4603-9c6c-d4d8fffa46cb","displayName":"GitHub","serviceProviderName":"github","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"e39b675b-2e60-4c7c-80da-ed69d6fe2dbc","displayName":"DocuSign","serviceProviderName":"docusign","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL to be used","description":null,"helpUrl":null,"default":"https://account.docusign.com"}]}},{"properties":{"id":"e3b751a6-87f2-42df-8ccb-7bfad739c68e","displayName":"Stripe","serviceProviderName":"stripe","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"ef5d1787-3321-4a0a-b3d2-cdfe73a2f81d","displayName":"Bitly","serviceProviderName":"bitly","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"f2c897ca-64ed-4e5a-9985-00b6e29eb0ef","displayName":"Lithium","serviceProviderName":"lithium","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUrl","type":"string","displayName":"Community + URL to use","description":null,"helpUrl":null,"default":"https://lithium.com"},{"name":"ApiUrl","type":"string","displayName":"API + URL to use","description":null,"helpUrl":null,"default":"https://api.lithium.com"}]}},{"properties":{"id":"fe787ac8-1611-4192-9d8c-4b2c6bb8a533","displayName":"SugarCRM","serviceProviderName":"sugarcrm","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"InstanceName","type":"string","displayName":"InstanceName","description":"Sugar + CRM Site InstanceName","helpUrl":null,"default":null}]}}]}'} + headers: + cache-control: [no-cache] + content-length: ['36008'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:43 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"location": "global", "properties": {"clientId": "clientid", "clientSecret": + "secret", "scopes": "scope1 scope2", "serviceProviderId": "01340562-8c8f-4892-abd4-90daf0e5face", + "parameters": []}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot authsetting create] + Connection: [keep-alive] + Content-Length: ['186'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/Connections/myconnname?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/connections/myconnname","name":"cli000002/myconnname","type":"Microsoft.BotService/botServices/connections","etag":"W/\"a6287a341a7c3ad675b32f1fe9ea51498/14/2018 + 10:01:48 PM\"","location":"global","properties":{"settingId":"2a550688-71f4-ff2c-7fb7-72a341997ba1_195dcb3a-899a-00df-6192","clientId":"clientid","clientSecret":"secret","scopes":"scope1 scope2","serviceProviderId":"01340562-8c8f-4892-abd4-90daf0e5face","serviceProviderDisplayName":null,"parameters":[],"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['641'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:48 GMT'] + etag: ['W/"a6287a341a7c3ad675b32f1fe9ea51498/14/2018 10:01:48 PM"'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot authsetting show] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/Connections/myconnname?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/connections/myconnname","name":"cli000002/myconnname","type":"Microsoft.BotService/botServices/connections","etag":"W/\"a6287a341a7c3ad675b32f1fe9ea51498/14/2018 + 10:01:51 PM\"","location":"global","properties":{"settingId":"2a550688-71f4-ff2c-7fb7-72a341997ba1_195dcb3a-899a-00df-6192","clientId":"clientid","clientSecret":"secret","scopes":"scope1 scope2","serviceProviderId":"01340562-8c8f-4892-abd4-90daf0e5face","serviceProviderDisplayName":null,"parameters":[],"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['641'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:50 GMT'] + etag: ['W/"a6287a341a7c3ad675b32f1fe9ea51498/14/2018 10:01:51 PM"'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot authsetting list] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/connections?api-version=2018-07-12 + response: + body: {string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/connections/myconnname","name":"cli000002/myconnname","type":"Microsoft.BotService/botServices/connections","etag":"W/\"32c037bb7bd81fc67d2b96dc06c45a7a8/14/2018 + 10:01:52 PM\"","location":"global","properties":{"serviceProviderDisplayName":"Google","id":"2a550688-71f4-ff2c-7fb7-72a341997ba1_195dcb3a-899a-00df-6192","name":"myconnname","serviceProviderId":"01340562-8c8f-4892-abd4-90daf0e5face","provisioningState":"Succeeded"}}]}'} + headers: + cache-control: [no-cache] + content-length: ['591'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:51 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot authsetting delete] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/Connections/myconnname?api-version=2018-07-12 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 22:01:55 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-deletes: ['14999'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group delete] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 22:01:55 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdWQ1ZKSVJPTVhELVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2018-05-01'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-deletes: ['14999'] + status: {code: 202, message: Accepted} +version: 1 diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_directline_channel.yaml b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_directline_channel.yaml new file mode 100644 index 00000000000..8c21e877665 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_directline_channel.yaml @@ -0,0 +1,307 @@ +interactions: +- request: + body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation", + "date": "2018-08-14T22:01:08Z"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group create] + Connection: [keep-alive] + Content-Length: ['110'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-08-14T22:01:08Z"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['274'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:10 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [unknown] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 subscriptionclient/2.0.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/locations?api-version=2016-06-01 + response: + body: {string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasia","name":"eastasia","displayName":"East + Asia","longitude":"114.188","latitude":"22.267"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasia","name":"southeastasia","displayName":"Southeast + Asia","longitude":"103.833","latitude":"1.283"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralus","name":"centralus","displayName":"Central + US","longitude":"-93.6208","latitude":"41.5908"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus","name":"eastus","displayName":"East + US","longitude":"-79.8164","latitude":"37.3719"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2","name":"eastus2","displayName":"East + US 2","longitude":"-78.3889","latitude":"36.6681"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus","name":"westus","displayName":"West + US","longitude":"-122.417","latitude":"37.783"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralus","name":"northcentralus","displayName":"North + Central US","longitude":"-87.6278","latitude":"41.8819"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus","name":"southcentralus","displayName":"South + Central US","longitude":"-98.5","latitude":"29.4167"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northeurope","name":"northeurope","displayName":"North + Europe","longitude":"-6.2597","latitude":"53.3478"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westeurope","name":"westeurope","displayName":"West + Europe","longitude":"4.9","latitude":"52.3667"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japanwest","name":"japanwest","displayName":"Japan + West","longitude":"135.5022","latitude":"34.6939"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japaneast","name":"japaneast","displayName":"Japan + East","longitude":"139.77","latitude":"35.68"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazilsouth","name":"brazilsouth","displayName":"Brazil + South","longitude":"-46.633","latitude":"-23.55"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiaeast","name":"australiaeast","displayName":"Australia + East","longitude":"151.2094","latitude":"-33.86"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiasoutheast","name":"australiasoutheast","displayName":"Australia + Southeast","longitude":"144.9631","latitude":"-37.8136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia","name":"southindia","displayName":"South + India","longitude":"80.1636","latitude":"12.9822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralindia","name":"centralindia","displayName":"Central + India","longitude":"73.9197","latitude":"18.5822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westindia","name":"westindia","displayName":"West + India","longitude":"72.868","latitude":"19.088"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadacentral","name":"canadacentral","displayName":"Canada + Central","longitude":"-79.383","latitude":"43.653"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadaeast","name":"canadaeast","displayName":"Canada + East","longitude":"-71.217","latitude":"46.817"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uksouth","name":"uksouth","displayName":"UK + South","longitude":"-0.799","latitude":"50.941"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/ukwest","name":"ukwest","displayName":"UK + West","longitude":"-3.084","latitude":"53.427"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westcentralus","name":"westcentralus","displayName":"West + Central US","longitude":"-110.234","latitude":"40.890"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2","name":"westus2","displayName":"West + US 2","longitude":"-119.852","latitude":"47.233"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral","name":"koreacentral","displayName":"Korea + Central","longitude":"126.9780","latitude":"37.5665"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth","name":"koreasouth","displayName":"Korea + South","longitude":"129.0756","latitude":"35.1796"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral","name":"francecentral","displayName":"France + Central","longitude":"2.3730","latitude":"46.3772"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth","name":"francesouth","displayName":"France + South","longitude":"2.1972","latitude":"43.8345"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral","name":"australiacentral","displayName":"Australia + Central","longitude":"149.1244","latitude":"-35.3075"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2","name":"australiacentral2","displayName":"Australia + Central 2","longitude":"149.1244","latitude":"-35.3075"}]}'} + headers: + cache-control: [no-cache] + content-length: ['5269'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:10 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + status: {code: 200, message: OK} +- request: + body: 'b''{"name": "cli000002", "type": ""}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['34'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/providers/Microsoft.BotService/checkNameAvailability?api-version=2018-07-12 + response: + body: {string: '{"valid":true,"message":""}'} + headers: + cache-control: [no-cache] + content-length: ['27'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:11 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-tenant-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: 'b''{"location": "global", "sku": {"name": "F0"}, "kind": "bot", "properties": + {"displayName": "cli000002", "endpoint": "https://www.google.com/api/messages", + "msaAppId": "47c93225-7fbd-4e71-b4bb-616d13faff89"}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['208'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","name":"cli000002","type":"Microsoft.BotService/botServices","etag":"W/\"datetime''2018-08-14T22%3A01%3A12.9527104Z''\"","location":"global","sku":{"name":"F0"},"kind":"bot","tags":{},"properties":{"displayName":"cli000002","description":"","iconUrl":"//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png","endpoint":"https://www.google.com/api/messages","msaAppId":"47c93225-7fbd-4e71-b4bb-616d13faff89","developerAppInsightKey":"","developerAppInsightsApplicationId":"","luisAppIds":[],"endpointVersion":"3.0","configuredChannels":["webchat"],"enabledChannels":["webchat","directline"],"isDeveloperAppInsightsApiKeySet":false,"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['827'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:12 GMT'] + etag: [W/"datetime'2018-08-14T22%3A01%3A12.9527104Z'"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 201, message: Created} +- request: + body: '{"location": "global", "properties": {"channelName": "DirectLineChannel", + "properties": {"sites": [{"siteName": "Default Site", "isEnabled": true, "isV1Enabled": + true, "isV3Enabled": true}]}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot directline create] + Connection: [keep-alive] + Content-Length: ['192'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/DirectLineChannel?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/DirectLineChannel","name":"cli000002/DirectLineChannel","type":"Microsoft.BotService/botServices/channels","etag":"W/\"feb89d3c4806509927e7462532a6a3028/14/2018 + 10:01:17 PM\"","location":"global","properties":{"properties":{"DirectLineEmbedCode":null,"sites":[{"siteId":"Y_Oe6p_vhRU","siteName":"Default + Site","key":"Y_Oe6p_vhRU.cwA.I80.OB3NT4prmNezoturnLFsLkS2kLOAtAgEAGlsIIuqha8","key2":"Y_Oe6p_vhRU.cwA.RLk.s5hMYsEone4DNS-xRVhdH2AxyUG5Jlo1VDwIq-EgjGE","isEnabled":true,"isV1Enabled":true,"isV3Enabled":true}]},"etag":"W/\"feb89d3c4806509927e7462532a6a3028/14/2018 + 10:01:17 PM\"","channelName":"DirectLineChannel","location":"global","provisioningState":"Accepted"}}'} + headers: + cache-control: [no-cache] + content-length: ['827'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:17 GMT'] + etag: ['W/"feb89d3c4806509927e7462532a6a3028/14/2018 10:01:17 PM"'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot directline show] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/DirectLineChannel?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/DirectLineChannel","name":"cli000002/DirectLineChannel","type":"Microsoft.BotService/botServices/channels","etag":"W/\"14983edd999c89d5ef74b2f288c8e7d08/14/2018 + 10:01:19 PM\"","location":"global","properties":{"properties":{"DirectLineEmbedCode":null,"sites":[{"siteId":"Y_Oe6p_vhRU","siteName":"Default + Site","key":"","key2":"","isEnabled":true,"isV1Enabled":true,"isV3Enabled":true}]},"etag":"W/\"14983edd999c89d5ef74b2f288c8e7d08/14/2018 + 10:01:19 PM\"","channelName":"DirectLineChannel","location":"global","provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['702'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:18 GMT'] + etag: ['W/"14983edd999c89d5ef74b2f288c8e7d08/14/2018 10:01:19 PM"'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot directline show] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/DirectLineChannel/listChannelWithKeys?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/DirectLineChannel","location":"global","properties":{"properties":{"DirectLineEmbedCode":null,"sites":[{"siteId":"Y_Oe6p_vhRU","siteName":"Default + Site","key":"Y_Oe6p_vhRU.cwA.I80.OB3NT4prmNezoturnLFsLkS2kLOAtAgEAGlsIIuqha8","key2":"Y_Oe6p_vhRU.cwA.RLk.s5hMYsEone4DNS-xRVhdH2AxyUG5Jlo1VDwIq-EgjGE","isEnabled":true,"isV1Enabled":true,"isV3Enabled":true}]},"etag":"W/\"feb89d3c4806509927e7462532a6a3028/14/2018 + 10:01:20 PM\"","channelName":"DirectLineChannel","location":"global"},"provisioningState":"Succeeded","entityTag":"W/\"5d5b2a5f1242c226211c2e2d2122867f8/14/2018 + 10:01:20 PM\"","changedTime":"0001-01-01T00:00:00Z"}'} + headers: + cache-control: [no-cache] + content-length: ['781'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:01:20 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot directline delete] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/DirectLineChannel?api-version=2018-07-12 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 22:01:21 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-deletes: ['14999'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group delete] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 22:01:22 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdZWUM0WkRHSFUzLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2018-05-01'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-deletes: ['14999'] + status: {code: 202, message: Accepted} +version: 1 diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_msteams_channel.yaml b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_msteams_channel.yaml new file mode 100644 index 00000000000..7756afd5601 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_msteams_channel.yaml @@ -0,0 +1,304 @@ +interactions: +- request: + body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation", + "date": "2018-08-14T22:00:42Z"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group create] + Connection: [keep-alive] + Content-Length: ['110'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-08-14T22:00:42Z"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['274'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:43 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [unknown] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 subscriptionclient/2.0.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/locations?api-version=2016-06-01 + response: + body: {string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasia","name":"eastasia","displayName":"East + Asia","longitude":"114.188","latitude":"22.267"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasia","name":"southeastasia","displayName":"Southeast + Asia","longitude":"103.833","latitude":"1.283"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralus","name":"centralus","displayName":"Central + US","longitude":"-93.6208","latitude":"41.5908"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus","name":"eastus","displayName":"East + US","longitude":"-79.8164","latitude":"37.3719"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2","name":"eastus2","displayName":"East + US 2","longitude":"-78.3889","latitude":"36.6681"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus","name":"westus","displayName":"West + US","longitude":"-122.417","latitude":"37.783"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralus","name":"northcentralus","displayName":"North + Central US","longitude":"-87.6278","latitude":"41.8819"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus","name":"southcentralus","displayName":"South + Central US","longitude":"-98.5","latitude":"29.4167"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northeurope","name":"northeurope","displayName":"North + Europe","longitude":"-6.2597","latitude":"53.3478"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westeurope","name":"westeurope","displayName":"West + Europe","longitude":"4.9","latitude":"52.3667"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japanwest","name":"japanwest","displayName":"Japan + West","longitude":"135.5022","latitude":"34.6939"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japaneast","name":"japaneast","displayName":"Japan + East","longitude":"139.77","latitude":"35.68"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazilsouth","name":"brazilsouth","displayName":"Brazil + South","longitude":"-46.633","latitude":"-23.55"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiaeast","name":"australiaeast","displayName":"Australia + East","longitude":"151.2094","latitude":"-33.86"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiasoutheast","name":"australiasoutheast","displayName":"Australia + Southeast","longitude":"144.9631","latitude":"-37.8136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia","name":"southindia","displayName":"South + India","longitude":"80.1636","latitude":"12.9822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralindia","name":"centralindia","displayName":"Central + India","longitude":"73.9197","latitude":"18.5822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westindia","name":"westindia","displayName":"West + India","longitude":"72.868","latitude":"19.088"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadacentral","name":"canadacentral","displayName":"Canada + Central","longitude":"-79.383","latitude":"43.653"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadaeast","name":"canadaeast","displayName":"Canada + East","longitude":"-71.217","latitude":"46.817"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uksouth","name":"uksouth","displayName":"UK + South","longitude":"-0.799","latitude":"50.941"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/ukwest","name":"ukwest","displayName":"UK + West","longitude":"-3.084","latitude":"53.427"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westcentralus","name":"westcentralus","displayName":"West + Central US","longitude":"-110.234","latitude":"40.890"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2","name":"westus2","displayName":"West + US 2","longitude":"-119.852","latitude":"47.233"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral","name":"koreacentral","displayName":"Korea + Central","longitude":"126.9780","latitude":"37.5665"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth","name":"koreasouth","displayName":"Korea + South","longitude":"129.0756","latitude":"35.1796"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral","name":"francecentral","displayName":"France + Central","longitude":"2.3730","latitude":"46.3772"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth","name":"francesouth","displayName":"France + South","longitude":"2.1972","latitude":"43.8345"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral","name":"australiacentral","displayName":"Australia + Central","longitude":"149.1244","latitude":"-35.3075"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2","name":"australiacentral2","displayName":"Australia + Central 2","longitude":"149.1244","latitude":"-35.3075"}]}'} + headers: + cache-control: [no-cache] + content-length: ['5269'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:43 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + status: {code: 200, message: OK} +- request: + body: 'b''{"name": "cli000002", "type": ""}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['34'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/providers/Microsoft.BotService/checkNameAvailability?api-version=2018-07-12 + response: + body: {string: '{"valid":true,"message":""}'} + headers: + cache-control: [no-cache] + content-length: ['27'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:44 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-tenant-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: 'b''{"location": "global", "sku": {"name": "F0"}, "kind": "bot", "properties": + {"displayName": "cli000002", "endpoint": "https://www.google.com/api/messages", + "msaAppId": "a6895c85-d0b6-424b-8ab0-8c16dc6843f8"}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['208'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","name":"cli000002","type":"Microsoft.BotService/botServices","etag":"W/\"datetime''2018-08-14T22%3A00%3A46.0317733Z''\"","location":"global","sku":{"name":"F0"},"kind":"bot","tags":{},"properties":{"displayName":"cli000002","description":"","iconUrl":"//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png","endpoint":"https://www.google.com/api/messages","msaAppId":"a6895c85-d0b6-424b-8ab0-8c16dc6843f8","developerAppInsightKey":"","developerAppInsightsApplicationId":"","luisAppIds":[],"endpointVersion":"3.0","configuredChannels":["webchat"],"enabledChannels":["webchat","directline"],"isDeveloperAppInsightsApiKeySet":false,"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['827'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:46 GMT'] + etag: [W/"datetime'2018-08-14T22%3A00%3A46.0317733Z'"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 201, message: Created} +- request: + body: '{"location": "global", "properties": {"channelName": "MsTeamsChannel", + "properties": {"enableCalling": true, "callingWebHook": "https://www.google.com", + "isEnabled": true}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot msteams create] + Connection: [keep-alive] + Content-Length: ['173'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/MsTeamsChannel?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/MsTeamsChannel","name":"cli000002/MsTeamsChannel","type":"Microsoft.BotService/botServices/channels","etag":"W/\"2926b4deac4f3034ab3b17c80d405fb08/14/2018 + 10:00:50 PM\"","location":"global","properties":{"properties":{"enableCalling":true,"callingWebhook":"https://www.google.com","isEnabled":true},"etag":"W/\"2926b4deac4f3034ab3b17c80d405fb08/14/2018 + 10:00:50 PM\"","channelName":"MsTeamsChannel","location":"global","provisioningState":"Accepted"}}'} + headers: + cache-control: [no-cache] + content-length: ['610'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:50 GMT'] + etag: ['W/"2926b4deac4f3034ab3b17c80d405fb08/14/2018 10:00:50 PM"'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot msteams show] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/MsTeamsChannel?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/MsTeamsChannel","name":"cli000002/MsTeamsChannel","type":"Microsoft.BotService/botServices/channels","etag":"W/\"faed8acf5591d48738f43725afbe00c48/14/2018 + 10:00:52 PM\"","location":"global","properties":{"properties":{"enableCalling":true,"callingWebhook":"https://www.google.com/","isEnabled":true},"etag":"W/\"faed8acf5591d48738f43725afbe00c48/14/2018 + 10:00:52 PM\"","channelName":"MsTeamsChannel","location":"global","provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['612'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:51 GMT'] + etag: ['W/"faed8acf5591d48738f43725afbe00c48/14/2018 10:00:52 PM"'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot msteams show] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/MsTeamsChannel/listChannelWithKeys?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/MsTeamsChannel","location":"global","properties":{"properties":{"enableCalling":true,"callingWebhook":"https://www.google.com/","isEnabled":true},"etag":"W/\"faed8acf5591d48738f43725afbe00c48/14/2018 + 10:00:53 PM\"","channelName":"MsTeamsChannel","location":"global"},"provisioningState":"Succeeded","entityTag":"W/\"bb874b9c02de53ace6cc2c604a1e4e938/14/2018 + 10:00:53 PM\"","changedTime":"0001-01-01T00:00:00Z"}'} + headers: + cache-control: [no-cache] + content-length: ['568'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:53 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot msteams delete] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/MsTeamsChannel?api-version=2018-07-12 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 22:00:55 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-deletes: ['14999'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group delete] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 22:00:56 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkc3N1dMRE0zTlBLLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2018-05-01'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-deletes: ['14999'] + status: {code: 202, message: Accepted} +version: 1 diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_registration_bot.yaml b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_registration_bot.yaml new file mode 100644 index 00000000000..88d852b16b8 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_registration_bot.yaml @@ -0,0 +1,301 @@ +interactions: +- request: + body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation", + "date": "2018-08-17T22:21:02Z"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group create] + Connection: [keep-alive] + Content-Length: ['110'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-08-17T22:21:02Z"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['274'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 17 Aug 2018 22:21:04 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [unknown] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 subscriptionclient/2.0.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/locations?api-version=2016-06-01 + response: + body: {string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasia","name":"eastasia","displayName":"East + Asia","longitude":"114.188","latitude":"22.267"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasia","name":"southeastasia","displayName":"Southeast + Asia","longitude":"103.833","latitude":"1.283"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralus","name":"centralus","displayName":"Central + US","longitude":"-93.6208","latitude":"41.5908"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus","name":"eastus","displayName":"East + US","longitude":"-79.8164","latitude":"37.3719"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2","name":"eastus2","displayName":"East + US 2","longitude":"-78.3889","latitude":"36.6681"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus","name":"westus","displayName":"West + US","longitude":"-122.417","latitude":"37.783"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralus","name":"northcentralus","displayName":"North + Central US","longitude":"-87.6278","latitude":"41.8819"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus","name":"southcentralus","displayName":"South + Central US","longitude":"-98.5","latitude":"29.4167"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northeurope","name":"northeurope","displayName":"North + Europe","longitude":"-6.2597","latitude":"53.3478"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westeurope","name":"westeurope","displayName":"West + Europe","longitude":"4.9","latitude":"52.3667"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japanwest","name":"japanwest","displayName":"Japan + West","longitude":"135.5022","latitude":"34.6939"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japaneast","name":"japaneast","displayName":"Japan + East","longitude":"139.77","latitude":"35.68"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazilsouth","name":"brazilsouth","displayName":"Brazil + South","longitude":"-46.633","latitude":"-23.55"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiaeast","name":"australiaeast","displayName":"Australia + East","longitude":"151.2094","latitude":"-33.86"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiasoutheast","name":"australiasoutheast","displayName":"Australia + Southeast","longitude":"144.9631","latitude":"-37.8136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia","name":"southindia","displayName":"South + India","longitude":"80.1636","latitude":"12.9822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralindia","name":"centralindia","displayName":"Central + India","longitude":"73.9197","latitude":"18.5822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westindia","name":"westindia","displayName":"West + India","longitude":"72.868","latitude":"19.088"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadacentral","name":"canadacentral","displayName":"Canada + Central","longitude":"-79.383","latitude":"43.653"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadaeast","name":"canadaeast","displayName":"Canada + East","longitude":"-71.217","latitude":"46.817"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uksouth","name":"uksouth","displayName":"UK + South","longitude":"-0.799","latitude":"50.941"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/ukwest","name":"ukwest","displayName":"UK + West","longitude":"-3.084","latitude":"53.427"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westcentralus","name":"westcentralus","displayName":"West + Central US","longitude":"-110.234","latitude":"40.890"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2","name":"westus2","displayName":"West + US 2","longitude":"-119.852","latitude":"47.233"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral","name":"koreacentral","displayName":"Korea + Central","longitude":"126.9780","latitude":"37.5665"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth","name":"koreasouth","displayName":"Korea + South","longitude":"129.0756","latitude":"35.1796"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral","name":"francecentral","displayName":"France + Central","longitude":"2.3730","latitude":"46.3772"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth","name":"francesouth","displayName":"France + South","longitude":"2.1972","latitude":"43.8345"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral","name":"australiacentral","displayName":"Australia + Central","longitude":"149.1244","latitude":"-35.3075"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2","name":"australiacentral2","displayName":"Australia + Central 2","longitude":"149.1244","latitude":"-35.3075"}]}'} + headers: + cache-control: [no-cache] + content-length: ['5269'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 17 Aug 2018 22:21:03 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + status: {code: 200, message: OK} +- request: + body: 'b''{"name": "cli000002", "type": ""}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['34'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/providers/Microsoft.BotService/checkNameAvailability?api-version=2018-07-12 + response: + body: {string: '{"valid":true,"message":""}'} + headers: + cache-control: [no-cache] + content-length: ['27'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 17 Aug 2018 22:21:04 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-tenant-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: 'b''{"location": "global", "tags": {"key1": "value1"}, "sku": {"name": "F0"}, + "kind": "bot", "properties": {"displayName": "cli000002", "description": "description1", + "endpoint": "https://www.google.com/api/messages", "msaAppId": "2e3b4b88-00a1-4db5-b483-1c0ffb7acd88"}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['267'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","name":"cli000002","type":"Microsoft.BotService/botServices","etag":"W/\"datetime''2018-08-17T22%3A21%3A06.5980139Z''\"","location":"global","sku":{"name":"F0"},"kind":"bot","tags":{"key1":"value1"},"properties":{"displayName":"cli000002","description":"description1","iconUrl":"//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png","endpoint":"https://www.google.com/api/messages","msaAppId":"2e3b4b88-00a1-4db5-b483-1c0ffb7acd88","developerAppInsightKey":"","developerAppInsightsApplicationId":"","luisAppIds":[],"endpointVersion":"3.0","configuredChannels":["webchat"],"enabledChannels":["webchat","directline"],"isDeveloperAppInsightsApiKeySet":false,"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['854'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 17 Aug 2018 22:21:06 GMT'] + etag: [W/"datetime'2018-08-17T22%3A21%3A06.5980139Z'"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot show] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","name":"cli000002","type":"Microsoft.BotService/botServices","etag":"W/\"datetime''2018-08-17T22%3A21%3A06.5980139Z''\"","location":"global","sku":{"name":"F0"},"kind":"bot","tags":{"key1":"value1"},"properties":{"displayName":"cli000002","description":"description1","iconUrl":"//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png","endpoint":"https://www.google.com/api/messages","msaAppId":"2e3b4b88-00a1-4db5-b483-1c0ffb7acd88","developerAppInsightKey":"","developerAppInsightsApplicationId":"","luisAppIds":[],"endpointVersion":"3.0","configuredChannels":["webchat"],"enabledChannels":["webchat","directline"],"isDeveloperAppInsightsApiKeySet":false,"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['854'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 17 Aug 2018 22:21:07 GMT'] + etag: [W/"datetime'2018-08-17T22%3A21%3A06.5980139Z'"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot update] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","name":"cli000002","type":"Microsoft.BotService/botServices","etag":"W/\"datetime''2018-08-17T22%3A21%3A06.5980139Z''\"","location":"global","sku":{"name":"F0"},"kind":"bot","tags":{"key1":"value1"},"properties":{"displayName":"cli000002","description":"description1","iconUrl":"//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png","endpoint":"https://www.google.com/api/messages","msaAppId":"2e3b4b88-00a1-4db5-b483-1c0ffb7acd88","developerAppInsightKey":"","developerAppInsightsApplicationId":"","luisAppIds":[],"endpointVersion":"3.0","configuredChannels":["webchat"],"enabledChannels":["webchat","directline"],"isDeveloperAppInsightsApiKeySet":false,"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['854'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 17 Aug 2018 22:21:07 GMT'] + etag: [W/"datetime'2018-08-17T22%3A21%3A06.5980139Z'"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: 'b''{"location": "global", "tags": {"key1": "value1"}, "sku": {"name": "F0"}, + "kind": "bot", "etag": "W/\\"datetime\''2018-08-17T22%3A21%3A06.5980139Z\''\\"", + "properties": {"displayName": "cli000002", "description": "description2", "iconUrl": + "//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png", "endpoint": + "https://www.google.com/api/messages", "msaAppId": "2e3b4b88-00a1-4db5-b483-1c0ffb7acd88", + "developerAppInsightKey": "", "developerAppInsightsApplicationId": "", "luisAppIds": + []}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot update] + Connection: [keep-alive] + Content-Length: ['499'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","name":"cli000002","type":"Microsoft.BotService/botServices","etag":"W/\"datetime''2018-08-17T22%3A21%3A08.6884899Z''\"","location":"global","sku":{"name":"F0"},"kind":"bot","tags":{"key1":"value1"},"properties":{"displayName":"cli000002","description":"description2","iconUrl":"//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png","endpoint":"https://www.google.com/api/messages","msaAppId":"2e3b4b88-00a1-4db5-b483-1c0ffb7acd88","developerAppInsightKey":"","developerAppInsightsApplicationId":"","luisAppIds":[],"endpointVersion":"3.0","configuredChannels":["webchat"],"enabledChannels":["webchat","directline"],"isDeveloperAppInsightsApiKeySet":false,"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['854'] + content-type: [application/json; charset=utf-8] + date: ['Fri, 17 Aug 2018 22:21:08 GMT'] + etag: [W/"datetime'2018-08-17T22%3A21%3A08.6884899Z'"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot delete] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 17 Aug 2018 22:21:10 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-deletes: ['14999'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group delete] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Fri, 17 Aug 2018 22:21:11 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdYMktJWlRZVEVBLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2018-05-01'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-deletes: ['14999'] + status: {code: 202, message: Accepted} +version: 1 diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_service_providers.yaml b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_service_providers.yaml new file mode 100644 index 00000000000..18d1f472abb --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_service_providers.yaml @@ -0,0 +1,590 @@ +interactions: +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot authsetting list-providers] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.BotService/listAuthServiceProviders?api-version=2018-07-12 + response: + body: {string: '{"value":[{"properties":{"id":"00ea67de-bfc6-4f45-9ede-083899596b7b","displayName":"Wunderlist","serviceProviderName":"wunderlist","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"01340562-8c8f-4892-abd4-90daf0e5face","displayName":"Google","serviceProviderName":"google","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"05a2de0b-ca79-456d-835f-bebef60a18fd","displayName":"Pinterest","serviceProviderName":"pinterest","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"0ea750dc-3d8f-4093-874d-ab68298299d4","displayName":"appFigures","serviceProviderName":"appFigures","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Consumer + Key (API Key)","description":"The id used to identify this application with + the service provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"0f1a8ee8-cb00-4b10-97db-045c404a239f","displayName":"Facebook","serviceProviderName":"facebook","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"26311afb-ebf0-49fa-90a3-a0a0366923f7","displayName":"Skype + For Business","serviceProviderName":"SkypeForBusiness","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The client ID of the AAD application with permissions to + the Skype tenant.","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The client secret of the AAD application with permissions + to the Skype tenant.","helpUrl":null,"default":null},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"ResourceUri","type":"string","displayName":"Resource + URI","description":"The URI for the discovery endpoint. Need an AAD token + to access this endpoint.","helpUrl":"https://msdn.microsoft.com/en-us/skype/ucwa/authenticationusingazuread","default":"https://webdir.online.lync.com/"},{"name":"LoginUriAAD","type":"string","displayName":"Login + URI for AAD","description":"The URI for the AAD login endpoint.","helpUrl":null,"default":"https://login.microsoftonline.com"}]}},{"properties":{"id":"29d6ab23-bb51-4e91-a010-d38c1e30d1c4","displayName":"Outlook","serviceProviderName":"outlook","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"307d995f-f1ce-4918-bd3f-037685e9d241","displayName":"SharePoint + Online","serviceProviderName":"SharePointOnline","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"GrantType","type":"string","displayName":"Grant + Type","description":"Oauth2 grant type to use.","helpUrl":null,"default":"Code"},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"DiscoveryUri","type":"string","displayName":"Discovery + URL","description":"The Sharepoint Online Azure Active Directory discovery + URL.","helpUrl":null,"default":"https://api.office.com/discovery/"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"Capability","type":"string","displayName":"Capability","description":"Resource + for which AccessToken needs to be obtained.","helpUrl":"http://msdn.microsoft.com/en-us/office/office365/howto/discover-service-endpoints","default":"RootSite"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The resource to get authorization for.","helpUrl":null,"default":null}]}},{"properties":{"id":"30dd229c-58e3-4a48-bdfd-91ec48eb906c","displayName":"Azure + Active Directory v2","serviceProviderName":"Aadv2","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"}]}},{"properties":{"id":"38b67016-73e2-4102-9fad-e348607cc800","displayName":"LinkedIn","serviceProviderName":"linkedin","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"407d4275-4e43-4fc9-b179-a1022492fa23","displayName":"Trello","serviceProviderName":"trello","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Consumer + Key (API Key)","description":"The id used to identify this application with + the service provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null},{"name":"ApplicationDisplayName","type":"string","displayName":"Application + Display Name","description":"The name of the application showed during authorization","helpUrl":null,"default":"Unnamed + Application"}]}},{"properties":{"id":"42525a7c-c853-4d4e-9032-deaa67f3de8e","displayName":"Sharepoint + Server","serviceProviderName":"SharepointServer","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"ResourceUri","type":"string","displayName":"ResourceUri","description":"The + resource URI for AAD.","helpUrl":null,"default":null},{"name":"TenantId","type":"string","displayName":"TenantId","description":"The + AAD tenant ID for this application.","helpUrl":null,"default":null}]}},{"properties":{"id":"48588eaf-3c7A-46db-88B9-0ea77d6C451a","displayName":"Workday","serviceProviderName":"workday","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Workday login URL.","helpUrl":null,"default":null},{"name":"TokenUri","type":"string","displayName":"Token + URL","description":"The Workday token URL.","helpUrl":null,"default":null},{"name":"InstanceName","type":"string","displayName":"Instance + Name","description":"The Workday instance name specific for your tenant.","helpUrl":null,"default":null}]}},{"properties":{"id":"4b5c96f6-cca7-4048-bfd2-53e850a183f1","displayName":"Generic + Oauth 2","serviceProviderName":"oauth2","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"AuthorizationUrl","type":"string","displayName":"Authorization + URL","description":"The authorization endpoint URL","helpUrl":null,"default":null},{"name":"TokenUrl","type":"string","displayName":"Token + URL","description":"The token endpoint URL","helpUrl":null,"default":null},{"name":"RefreshUrl","type":"string","displayName":"Refresh + URL","description":"The token refresh endpoint URL","helpUrl":null,"default":null}]}},{"properties":{"id":"4b7816ab-ea29-487a-96a5-1918b5661d8e","displayName":"Slack","serviceProviderName":"slack","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"4f349199-7980-48f0-9b1b-282347f5de2a","displayName":"Zendesk","serviceProviderName":"zendesk","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"SubDomain","type":"string","displayName":"Subdomain","description":"The + subdomain name used to identify the Zendesk Site URL","helpUrl":null,"default":null},{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"51dd6264-6d45-4e46-b720-5ff7e8c28873","displayName":"Dynamics + CRM Online","serviceProviderName":"DynamicsCrmOnline","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"GrantType","type":"string","displayName":"Grant + Type","description":"Oauth2 grant type to use.","helpUrl":null,"default":"Code"},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"ResourceUriAAD","type":"string","displayName":"Resource + URL","description":"The Azure Active Directory discovery URL.","helpUrl":null,"default":"https://api.office.com/discovery/"},{"name":"DiscoveryUri","type":"string","displayName":"Full + Discovery URL","description":"TEST ONLY discovery URL. This isn''t needed + for this setting to function.","helpUrl":null,"default":"about:blank"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The resource to get authorization for.","helpUrl":null,"default":null}]}},{"properties":{"id":"5232e24f-b6c6-4920-b09d-d93a520c92e9","displayName":"Azure + Active Directory","serviceProviderName":"Aad","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"GrantType","type":"string","displayName":"Grant + Type","description":"Oauth2 grant type to use.","helpUrl":null,"default":"Code"},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The resource to get authorization for.","helpUrl":null,"default":null}]}},{"properties":{"id":"549dcd43-e619-4a19-8bb1-83524a472646","displayName":"Smartsheet","serviceProviderName":"smartsheet","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"58189554-6279-4b11-97c8-e3d8245da5ef","displayName":"Flickr","serviceProviderName":"flickr","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"6587ef92-9050-4699-832a-a263aed32448","displayName":"Office + 365 (Discovery)","serviceProviderName":"Office365","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"GrantType","type":"string","displayName":"Grant + Type","description":"Oauth2 grant type to use.","helpUrl":null,"default":"Code"},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"DiscoveryUri","type":"string","displayName":"Discovery + URL","description":"The Office365 Azure Active Directory discovery URL.","helpUrl":null,"default":"https://api.office.com/discovery/"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"Capability","type":"string","displayName":"Capability","description":"Resource + for which AccessToken needs to be obtained.","helpUrl":"http://msdn.microsoft.com/en-us/office/office365/howto/discover-service-endpoints","default":"Contacts"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The resource to get authorization for.","helpUrl":null,"default":null}]}},{"properties":{"id":"65d314ec-3b66-4021-b2c9-6d8c2f7148ff","displayName":"OneDrive","serviceProviderName":"onedrive","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"68d0136a-6396-41d8-9dbf-1b2843ed1ff7","displayName":"Basecamp","serviceProviderName":"basecamp","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"6b6010fd-266b-492a-b150-c87b9bad7339","displayName":"Instagram","serviceProviderName":"instagram","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"6b9e493f-950f-4451-85d6-0fc7c0f2c9b1","displayName":"MailChimp","serviceProviderName":"mailchimp","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"719a075e-37f9-4c6b-9633-e6167c12536e","displayName":"Office + 365","serviceProviderName":"Office365User","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The Active Active Directory client ID","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The Azure Active Directory secret","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The Azure Active Directory resource URL.","helpUrl":null,"default":"https://graph.microsoft.com"}]}},{"properties":{"id":"7be3563f-3072-4846-ad8f-09e5fa685c65","displayName":"Adobe + EchoSign","serviceProviderName":"echosign","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"7dda6125-c4c2-4591-96c9-cf7ab657dcf6","displayName":"Live","serviceProviderName":"live","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"8379c6d2-b262-4d4f-b89b-68dc5b5f5482","displayName":"Oauth + 2 Generic Provider","serviceProviderName":"oauth2generic","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"ScopeListDelimiter","type":"string","displayName":"Scope + List Delimiter","description":"Character to delimit the scope list","helpUrl":null,"default":" + "},{"name":"AuthorizationUrlTemplate","type":"string","displayName":"Authorization + URL Template","description":"The authorization endpoint URL. Example: https://login.acme.com/oauth2/authorize","helpUrl":null,"default":null},{"name":"AuthorizationUrlQueryStringTemplate","type":"string","displayName":"Authorization + URL Query String Template","description":"The authorization endpoint URL query + string. Example: ?client_id={ClientId}&response_type=code&redirect_uri={RedirectUrl}&scope={Scopes}&state={State}","helpUrl":null,"default":"?client_id={ClientId}&response_type=code&redirect_uri={RedirectUrl}&scope={Scopes}&state={State}"},{"name":"TokenUrlTemplate","type":"string","displayName":"Token + URL Template","description":"The token conversion endpoint URL. Example value + would be https://api.acme.com/oauth2/token","helpUrl":null,"default":null},{"name":"TokenUrlQueryStringTemplate","type":"string","displayName":"Token + URL Query String Template","description":"The token conversion endpoint URL + query string. Example: ?client_secret={ClientSecret}","helpUrl":null,"default":""},{"name":"TokenBodyTemplate","type":"string","displayName":"Token + Body Template","description":"The token conversion body.","helpUrl":null,"default":"code={Code}&grant_type=authorization_code&redirect_uri={RedirectUrl}&client_id={ClientId}&client_secret={ClientSecret}"},{"name":"RefreshUrlTemplate","type":"string","displayName":"Refresh + URL Template","description":"The token refresh endpoint URL. Example value + would be https://api.acme.com/oauth2/token","helpUrl":null,"default":null},{"name":"RefreshUrlQueryStringTemplate","type":"string","displayName":"Refresh + URL Query String Template","description":"The token refresh endpoint URL query + string. Example: ?client_secret={ClientSecret}","helpUrl":null,"default":""},{"name":"RefreshBodyTemplate","type":"string","displayName":"Refresh + Body Template","description":"The token refresh body","helpUrl":null,"default":"refresh_token={RefreshToken}&grant_type=refresh_token&client_id={ClientId}&client_secret={ClientSecret}"}]}},{"properties":{"id":"900b8f4a-9cb3-420d-85df-ba9f8f285c20","displayName":"Spotify","serviceProviderName":"spotify","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"979935d1-226c-4ed0-95c6-f13c0ac7e1c4","displayName":"Tumblr","serviceProviderName":"tumblr","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"99b51571-bd21-4124-abf2-1ef32c90cb07","displayName":"AWeber","serviceProviderName":"AWeber","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Consumer + Key (API Key)","description":"The id used to identify this application with + the service provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"a5e55046-6a2e-446e-8d5e-4b61cca91968","displayName":"Marketo","serviceProviderName":"marketo","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"BaseUrl","type":"string","displayName":"BaseUrl","description":"Marketo + Instance BaseUrl","helpUrl":null,"default":null}]}},{"properties":{"id":"b7e2a8c4-ce26-4a94-aeeb-f203ed505fa4","displayName":"DropBox","serviceProviderName":"dropbox","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"b8491b1f-e709-4c3d-8339-5ba2182b46ee","displayName":"Box","serviceProviderName":"box","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"bb097393-2a3c-4048-b3c6-1ce9fa90a537","displayName":"Yammer","serviceProviderName":"yammer","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"bb1dc32d-85e0-4607-a511-bc77ddd414b7","displayName":"Quickbooks","serviceProviderName":"intuit","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"bcdbb5a4-d571-473b-9821-0e969a044f7d","displayName":"UserVoice","serviceProviderName":"uservoice","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"SubDomain","type":"string","displayName":"UserVoice + site Subdomain name","description":"The subdomain name used to identify the + UserVoice Site URL","helpUrl":null,"default":null},{"name":"ClientId","type":"string","displayName":"Consumer + Key (API Key)","description":"The id used to identify this application with + the service provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"bf58b8fb-74ea-4a84-8e68-03573ac9be2a","displayName":"Salesforce","serviceProviderName":"salesforce","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL to be used","description":null,"helpUrl":null,"default":"https://login.salesforce.com"}]}},{"properties":{"id":"c676c4c4-e36b-46b2-9ff0-027a50c4e53f","displayName":"Todoist","serviceProviderName":"todoist","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"cb4103d0-e5e7-4c7A-9712-eea4edf5b5be","displayName":"Fitbit","serviceProviderName":"fitbit","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"d05eaacf-1593-4603-9c6c-d4d8fffa46cb","displayName":"GitHub","serviceProviderName":"github","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"e39b675b-2e60-4c7c-80da-ed69d6fe2dbc","displayName":"DocuSign","serviceProviderName":"docusign","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL to be used","description":null,"helpUrl":null,"default":"https://account.docusign.com"}]}},{"properties":{"id":"e3b751a6-87f2-42df-8ccb-7bfad739c68e","displayName":"Stripe","serviceProviderName":"stripe","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"ef5d1787-3321-4a0a-b3d2-cdfe73a2f81d","displayName":"Bitly","serviceProviderName":"bitly","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"f2c897ca-64ed-4e5a-9985-00b6e29eb0ef","displayName":"Lithium","serviceProviderName":"lithium","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUrl","type":"string","displayName":"Community + URL to use","description":null,"helpUrl":null,"default":"https://lithium.com"},{"name":"ApiUrl","type":"string","displayName":"API + URL to use","description":null,"helpUrl":null,"default":"https://api.lithium.com"}]}},{"properties":{"id":"fe787ac8-1611-4192-9d8c-4b2c6bb8a533","displayName":"SugarCRM","serviceProviderName":"sugarcrm","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"InstanceName","type":"string","displayName":"InstanceName","description":"Sugar + CRM Site InstanceName","helpUrl":null,"default":null}]}}]}'} + headers: + cache-control: [no-cache] + content-length: ['36008'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:02:15 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1198'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot authsetting list-providers] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.BotService/listAuthServiceProviders?api-version=2018-07-12 + response: + body: {string: '{"value":[{"properties":{"id":"00ea67de-bfc6-4f45-9ede-083899596b7b","displayName":"Wunderlist","serviceProviderName":"wunderlist","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"01340562-8c8f-4892-abd4-90daf0e5face","displayName":"Google","serviceProviderName":"google","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"05a2de0b-ca79-456d-835f-bebef60a18fd","displayName":"Pinterest","serviceProviderName":"pinterest","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"0ea750dc-3d8f-4093-874d-ab68298299d4","displayName":"appFigures","serviceProviderName":"appFigures","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Consumer + Key (API Key)","description":"The id used to identify this application with + the service provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"0f1a8ee8-cb00-4b10-97db-045c404a239f","displayName":"Facebook","serviceProviderName":"facebook","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"26311afb-ebf0-49fa-90a3-a0a0366923f7","displayName":"Skype + For Business","serviceProviderName":"SkypeForBusiness","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The client ID of the AAD application with permissions to + the Skype tenant.","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The client secret of the AAD application with permissions + to the Skype tenant.","helpUrl":null,"default":null},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"ResourceUri","type":"string","displayName":"Resource + URI","description":"The URI for the discovery endpoint. Need an AAD token + to access this endpoint.","helpUrl":"https://msdn.microsoft.com/en-us/skype/ucwa/authenticationusingazuread","default":"https://webdir.online.lync.com/"},{"name":"LoginUriAAD","type":"string","displayName":"Login + URI for AAD","description":"The URI for the AAD login endpoint.","helpUrl":null,"default":"https://login.microsoftonline.com"}]}},{"properties":{"id":"29d6ab23-bb51-4e91-a010-d38c1e30d1c4","displayName":"Outlook","serviceProviderName":"outlook","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"307d995f-f1ce-4918-bd3f-037685e9d241","displayName":"SharePoint + Online","serviceProviderName":"SharePointOnline","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"GrantType","type":"string","displayName":"Grant + Type","description":"Oauth2 grant type to use.","helpUrl":null,"default":"Code"},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"DiscoveryUri","type":"string","displayName":"Discovery + URL","description":"The Sharepoint Online Azure Active Directory discovery + URL.","helpUrl":null,"default":"https://api.office.com/discovery/"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"Capability","type":"string","displayName":"Capability","description":"Resource + for which AccessToken needs to be obtained.","helpUrl":"http://msdn.microsoft.com/en-us/office/office365/howto/discover-service-endpoints","default":"RootSite"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The resource to get authorization for.","helpUrl":null,"default":null}]}},{"properties":{"id":"30dd229c-58e3-4a48-bdfd-91ec48eb906c","displayName":"Azure + Active Directory v2","serviceProviderName":"Aadv2","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"}]}},{"properties":{"id":"38b67016-73e2-4102-9fad-e348607cc800","displayName":"LinkedIn","serviceProviderName":"linkedin","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"407d4275-4e43-4fc9-b179-a1022492fa23","displayName":"Trello","serviceProviderName":"trello","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Consumer + Key (API Key)","description":"The id used to identify this application with + the service provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null},{"name":"ApplicationDisplayName","type":"string","displayName":"Application + Display Name","description":"The name of the application showed during authorization","helpUrl":null,"default":"Unnamed + Application"}]}},{"properties":{"id":"42525a7c-c853-4d4e-9032-deaa67f3de8e","displayName":"Sharepoint + Server","serviceProviderName":"SharepointServer","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"ResourceUri","type":"string","displayName":"ResourceUri","description":"The + resource URI for AAD.","helpUrl":null,"default":null},{"name":"TenantId","type":"string","displayName":"TenantId","description":"The + AAD tenant ID for this application.","helpUrl":null,"default":null}]}},{"properties":{"id":"48588eaf-3c7A-46db-88B9-0ea77d6C451a","displayName":"Workday","serviceProviderName":"workday","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Workday login URL.","helpUrl":null,"default":null},{"name":"TokenUri","type":"string","displayName":"Token + URL","description":"The Workday token URL.","helpUrl":null,"default":null},{"name":"InstanceName","type":"string","displayName":"Instance + Name","description":"The Workday instance name specific for your tenant.","helpUrl":null,"default":null}]}},{"properties":{"id":"4b5c96f6-cca7-4048-bfd2-53e850a183f1","displayName":"Generic + Oauth 2","serviceProviderName":"oauth2","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"AuthorizationUrl","type":"string","displayName":"Authorization + URL","description":"The authorization endpoint URL","helpUrl":null,"default":null},{"name":"TokenUrl","type":"string","displayName":"Token + URL","description":"The token endpoint URL","helpUrl":null,"default":null},{"name":"RefreshUrl","type":"string","displayName":"Refresh + URL","description":"The token refresh endpoint URL","helpUrl":null,"default":null}]}},{"properties":{"id":"4b7816ab-ea29-487a-96a5-1918b5661d8e","displayName":"Slack","serviceProviderName":"slack","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"4f349199-7980-48f0-9b1b-282347f5de2a","displayName":"Zendesk","serviceProviderName":"zendesk","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"SubDomain","type":"string","displayName":"Subdomain","description":"The + subdomain name used to identify the Zendesk Site URL","helpUrl":null,"default":null},{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"51dd6264-6d45-4e46-b720-5ff7e8c28873","displayName":"Dynamics + CRM Online","serviceProviderName":"DynamicsCrmOnline","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"GrantType","type":"string","displayName":"Grant + Type","description":"Oauth2 grant type to use.","helpUrl":null,"default":"Code"},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"ResourceUriAAD","type":"string","displayName":"Resource + URL","description":"The Azure Active Directory discovery URL.","helpUrl":null,"default":"https://api.office.com/discovery/"},{"name":"DiscoveryUri","type":"string","displayName":"Full + Discovery URL","description":"TEST ONLY discovery URL. This isn''t needed + for this setting to function.","helpUrl":null,"default":"about:blank"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The resource to get authorization for.","helpUrl":null,"default":null}]}},{"properties":{"id":"5232e24f-b6c6-4920-b09d-d93a520c92e9","displayName":"Azure + Active Directory","serviceProviderName":"Aad","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"GrantType","type":"string","displayName":"Grant + Type","description":"Oauth2 grant type to use.","helpUrl":null,"default":"Code"},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The resource to get authorization for.","helpUrl":null,"default":null}]}},{"properties":{"id":"549dcd43-e619-4a19-8bb1-83524a472646","displayName":"Smartsheet","serviceProviderName":"smartsheet","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"58189554-6279-4b11-97c8-e3d8245da5ef","displayName":"Flickr","serviceProviderName":"flickr","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"6587ef92-9050-4699-832a-a263aed32448","displayName":"Office + 365 (Discovery)","serviceProviderName":"Office365","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"GrantType","type":"string","displayName":"Grant + Type","description":"Oauth2 grant type to use.","helpUrl":null,"default":"Code"},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"DiscoveryUri","type":"string","displayName":"Discovery + URL","description":"The Office365 Azure Active Directory discovery URL.","helpUrl":null,"default":"https://api.office.com/discovery/"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"Capability","type":"string","displayName":"Capability","description":"Resource + for which AccessToken needs to be obtained.","helpUrl":"http://msdn.microsoft.com/en-us/office/office365/howto/discover-service-endpoints","default":"Contacts"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The resource to get authorization for.","helpUrl":null,"default":null}]}},{"properties":{"id":"65d314ec-3b66-4021-b2c9-6d8c2f7148ff","displayName":"OneDrive","serviceProviderName":"onedrive","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"68d0136a-6396-41d8-9dbf-1b2843ed1ff7","displayName":"Basecamp","serviceProviderName":"basecamp","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"6b6010fd-266b-492a-b150-c87b9bad7339","displayName":"Instagram","serviceProviderName":"instagram","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"6b9e493f-950f-4451-85d6-0fc7c0f2c9b1","displayName":"MailChimp","serviceProviderName":"mailchimp","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"719a075e-37f9-4c6b-9633-e6167c12536e","displayName":"Office + 365","serviceProviderName":"Office365User","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The Active Active Directory client ID","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The Azure Active Directory secret","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL","description":"The Azure Active Directory login URL.","helpUrl":null,"default":"https://login.windows.net"},{"name":"TenantId","type":"string","displayName":"Tenant + ID","description":"The tenant ID of your Azure Active Directory application.","helpUrl":null,"default":"common"},{"name":"ResourceUri","type":"string","displayName":"Resource + URL","description":"The Azure Active Directory resource URL.","helpUrl":null,"default":"https://graph.microsoft.com"}]}},{"properties":{"id":"7be3563f-3072-4846-ad8f-09e5fa685c65","displayName":"Adobe + EchoSign","serviceProviderName":"echosign","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"7dda6125-c4c2-4591-96c9-cf7ab657dcf6","displayName":"Live","serviceProviderName":"live","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"8379c6d2-b262-4d4f-b89b-68dc5b5f5482","displayName":"Oauth + 2 Generic Provider","serviceProviderName":"oauth2generic","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"ScopeListDelimiter","type":"string","displayName":"Scope + List Delimiter","description":"Character to delimit the scope list","helpUrl":null,"default":" + "},{"name":"AuthorizationUrlTemplate","type":"string","displayName":"Authorization + URL Template","description":"The authorization endpoint URL. Example: https://login.acme.com/oauth2/authorize","helpUrl":null,"default":null},{"name":"AuthorizationUrlQueryStringTemplate","type":"string","displayName":"Authorization + URL Query String Template","description":"The authorization endpoint URL query + string. Example: ?client_id={ClientId}&response_type=code&redirect_uri={RedirectUrl}&scope={Scopes}&state={State}","helpUrl":null,"default":"?client_id={ClientId}&response_type=code&redirect_uri={RedirectUrl}&scope={Scopes}&state={State}"},{"name":"TokenUrlTemplate","type":"string","displayName":"Token + URL Template","description":"The token conversion endpoint URL. Example value + would be https://api.acme.com/oauth2/token","helpUrl":null,"default":null},{"name":"TokenUrlQueryStringTemplate","type":"string","displayName":"Token + URL Query String Template","description":"The token conversion endpoint URL + query string. Example: ?client_secret={ClientSecret}","helpUrl":null,"default":""},{"name":"TokenBodyTemplate","type":"string","displayName":"Token + Body Template","description":"The token conversion body.","helpUrl":null,"default":"code={Code}&grant_type=authorization_code&redirect_uri={RedirectUrl}&client_id={ClientId}&client_secret={ClientSecret}"},{"name":"RefreshUrlTemplate","type":"string","displayName":"Refresh + URL Template","description":"The token refresh endpoint URL. Example value + would be https://api.acme.com/oauth2/token","helpUrl":null,"default":null},{"name":"RefreshUrlQueryStringTemplate","type":"string","displayName":"Refresh + URL Query String Template","description":"The token refresh endpoint URL query + string. Example: ?client_secret={ClientSecret}","helpUrl":null,"default":""},{"name":"RefreshBodyTemplate","type":"string","displayName":"Refresh + Body Template","description":"The token refresh body","helpUrl":null,"default":"refresh_token={RefreshToken}&grant_type=refresh_token&client_id={ClientId}&client_secret={ClientSecret}"}]}},{"properties":{"id":"900b8f4a-9cb3-420d-85df-ba9f8f285c20","displayName":"Spotify","serviceProviderName":"spotify","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"979935d1-226c-4ed0-95c6-f13c0ac7e1c4","displayName":"Tumblr","serviceProviderName":"tumblr","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"99b51571-bd21-4124-abf2-1ef32c90cb07","displayName":"AWeber","serviceProviderName":"AWeber","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Consumer + Key (API Key)","description":"The id used to identify this application with + the service provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"a5e55046-6a2e-446e-8d5e-4b61cca91968","displayName":"Marketo","serviceProviderName":"marketo","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"BaseUrl","type":"string","displayName":"BaseUrl","description":"Marketo + Instance BaseUrl","helpUrl":null,"default":null}]}},{"properties":{"id":"b7e2a8c4-ce26-4a94-aeeb-f203ed505fa4","displayName":"DropBox","serviceProviderName":"dropbox","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"b8491b1f-e709-4c3d-8339-5ba2182b46ee","displayName":"Box","serviceProviderName":"box","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"bb097393-2a3c-4048-b3c6-1ce9fa90a537","displayName":"Yammer","serviceProviderName":"yammer","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"bb1dc32d-85e0-4607-a511-bc77ddd414b7","displayName":"Quickbooks","serviceProviderName":"intuit","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"bcdbb5a4-d571-473b-9821-0e969a044f7d","displayName":"UserVoice","serviceProviderName":"uservoice","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"SubDomain","type":"string","displayName":"UserVoice + site Subdomain name","description":"The subdomain name used to identify the + UserVoice Site URL","helpUrl":null,"default":null},{"name":"ClientId","type":"string","displayName":"Consumer + Key (API Key)","description":"The id used to identify this application with + the service provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Consumer + Secret (API Secret)","description":"The shared secret used to authenticate + this application with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"bf58b8fb-74ea-4a84-8e68-03573ac9be2a","displayName":"Salesforce","serviceProviderName":"salesforce","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL to be used","description":null,"helpUrl":null,"default":"https://login.salesforce.com"}]}},{"properties":{"id":"c676c4c4-e36b-46b2-9ff0-027a50c4e53f","displayName":"Todoist","serviceProviderName":"todoist","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"cb4103d0-e5e7-4c7A-9712-eea4edf5b5be","displayName":"Fitbit","serviceProviderName":"fitbit","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"d05eaacf-1593-4603-9c6c-d4d8fffa46cb","displayName":"GitHub","serviceProviderName":"github","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"e39b675b-2e60-4c7c-80da-ed69d6fe2dbc","displayName":"DocuSign","serviceProviderName":"docusign","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUri","type":"string","displayName":"Login + URL to be used","description":null,"helpUrl":null,"default":"https://account.docusign.com"}]}},{"properties":{"id":"e3b751a6-87f2-42df-8ccb-7bfad739c68e","displayName":"Stripe","serviceProviderName":"stripe","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"ef5d1787-3321-4a0a-b3d2-cdfe73a2f81d","displayName":"Bitly","serviceProviderName":"bitly","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null}]}},{"properties":{"id":"f2c897ca-64ed-4e5a-9985-00b6e29eb0ef","displayName":"Lithium","serviceProviderName":"lithium","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"LoginUrl","type":"string","displayName":"Community + URL to use","description":null,"helpUrl":null,"default":"https://lithium.com"},{"name":"ApiUrl","type":"string","displayName":"API + URL to use","description":null,"helpUrl":null,"default":"https://api.lithium.com"}]}},{"properties":{"id":"fe787ac8-1611-4192-9d8c-4b2c6bb8a533","displayName":"SugarCRM","serviceProviderName":"sugarcrm","devPortalUrl":null,"iconUrl":null,"parameters":[{"name":"ClientId","type":"string","displayName":"Client + id","description":"The id used to identify this application with the service + provider","helpUrl":null,"default":null},{"name":"ClientSecret","type":"securestring","displayName":"Client + secret","description":"The shared secret used to authenticate this application + with the service provider","helpUrl":null,"default":null},{"name":"InstanceName","type":"string","displayName":"InstanceName","description":"Sugar + CRM Site InstanceName","helpUrl":null,"default":null}]}}]}'} + headers: + cache-control: [no-cache] + content-length: ['36008'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:02:15 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +version: 1 diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_skype_channel.yaml b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_skype_channel.yaml new file mode 100644 index 00000000000..1916c28f64c --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_skype_channel.yaml @@ -0,0 +1,304 @@ +interactions: +- request: + body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation", + "date": "2018-08-14T22:00:12Z"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group create] + Connection: [keep-alive] + Content-Length: ['110'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-08-14T22:00:12Z"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['274'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:14 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [unknown] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 subscriptionclient/2.0.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/locations?api-version=2016-06-01 + response: + body: {string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasia","name":"eastasia","displayName":"East + Asia","longitude":"114.188","latitude":"22.267"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasia","name":"southeastasia","displayName":"Southeast + Asia","longitude":"103.833","latitude":"1.283"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralus","name":"centralus","displayName":"Central + US","longitude":"-93.6208","latitude":"41.5908"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus","name":"eastus","displayName":"East + US","longitude":"-79.8164","latitude":"37.3719"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2","name":"eastus2","displayName":"East + US 2","longitude":"-78.3889","latitude":"36.6681"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus","name":"westus","displayName":"West + US","longitude":"-122.417","latitude":"37.783"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralus","name":"northcentralus","displayName":"North + Central US","longitude":"-87.6278","latitude":"41.8819"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus","name":"southcentralus","displayName":"South + Central US","longitude":"-98.5","latitude":"29.4167"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northeurope","name":"northeurope","displayName":"North + Europe","longitude":"-6.2597","latitude":"53.3478"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westeurope","name":"westeurope","displayName":"West + Europe","longitude":"4.9","latitude":"52.3667"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japanwest","name":"japanwest","displayName":"Japan + West","longitude":"135.5022","latitude":"34.6939"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japaneast","name":"japaneast","displayName":"Japan + East","longitude":"139.77","latitude":"35.68"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazilsouth","name":"brazilsouth","displayName":"Brazil + South","longitude":"-46.633","latitude":"-23.55"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiaeast","name":"australiaeast","displayName":"Australia + East","longitude":"151.2094","latitude":"-33.86"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiasoutheast","name":"australiasoutheast","displayName":"Australia + Southeast","longitude":"144.9631","latitude":"-37.8136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia","name":"southindia","displayName":"South + India","longitude":"80.1636","latitude":"12.9822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralindia","name":"centralindia","displayName":"Central + India","longitude":"73.9197","latitude":"18.5822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westindia","name":"westindia","displayName":"West + India","longitude":"72.868","latitude":"19.088"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadacentral","name":"canadacentral","displayName":"Canada + Central","longitude":"-79.383","latitude":"43.653"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadaeast","name":"canadaeast","displayName":"Canada + East","longitude":"-71.217","latitude":"46.817"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uksouth","name":"uksouth","displayName":"UK + South","longitude":"-0.799","latitude":"50.941"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/ukwest","name":"ukwest","displayName":"UK + West","longitude":"-3.084","latitude":"53.427"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westcentralus","name":"westcentralus","displayName":"West + Central US","longitude":"-110.234","latitude":"40.890"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2","name":"westus2","displayName":"West + US 2","longitude":"-119.852","latitude":"47.233"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral","name":"koreacentral","displayName":"Korea + Central","longitude":"126.9780","latitude":"37.5665"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth","name":"koreasouth","displayName":"Korea + South","longitude":"129.0756","latitude":"35.1796"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral","name":"francecentral","displayName":"France + Central","longitude":"2.3730","latitude":"46.3772"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth","name":"francesouth","displayName":"France + South","longitude":"2.1972","latitude":"43.8345"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral","name":"australiacentral","displayName":"Australia + Central","longitude":"149.1244","latitude":"-35.3075"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2","name":"australiacentral2","displayName":"Australia + Central 2","longitude":"149.1244","latitude":"-35.3075"}]}'} + headers: + cache-control: [no-cache] + content-length: ['5269'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:14 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + status: {code: 200, message: OK} +- request: + body: 'b''{"name": "cli000002", "type": ""}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['34'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/providers/Microsoft.BotService/checkNameAvailability?api-version=2018-07-12 + response: + body: {string: '{"valid":true,"message":""}'} + headers: + cache-control: [no-cache] + content-length: ['27'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:14 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-tenant-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: 'b''{"location": "global", "sku": {"name": "F0"}, "kind": "bot", "properties": + {"displayName": "cli000002", "endpoint": "https://www.google.com/api/messages", + "msaAppId": "a9022c0d-1c37-4045-8677-538918fbc17f"}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['208'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","name":"cli000002","type":"Microsoft.BotService/botServices","etag":"W/\"datetime''2018-08-14T22%3A00%3A16.9473148Z''\"","location":"global","sku":{"name":"F0"},"kind":"bot","tags":{},"properties":{"displayName":"cli000002","description":"","iconUrl":"//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png","endpoint":"https://www.google.com/api/messages","msaAppId":"a9022c0d-1c37-4045-8677-538918fbc17f","developerAppInsightKey":"","developerAppInsightsApplicationId":"","luisAppIds":[],"endpointVersion":"3.0","configuredChannels":["webchat"],"enabledChannels":["webchat","directline"],"isDeveloperAppInsightsApiKeySet":false,"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['827'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:16 GMT'] + etag: [W/"datetime'2018-08-14T22%3A00%3A16.9473148Z'"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 201, message: Created} +- request: + body: '{"location": "global", "properties": {"channelName": "SkypeChannel", "properties": + {"enableMessaging": true, "enableMediaCards": true, "enableVideo": true, "enableCalling": + true, "callingWebHook": "https://www.google.com", "isEnabled": true}}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot skype create] + Connection: [keep-alive] + Content-Length: ['243'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/SkypeChannel?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/SkypeChannel","name":"cli000002/SkypeChannel","type":"Microsoft.BotService/botServices/channels","etag":"W/\"f7c61f1609f323e9a0917af886f4bc568/14/2018 + 10:00:23 PM\"","location":"global","properties":{"properties":{"enableMessaging":true,"enableMediaCards":true,"enableVideo":true,"enableCalling":true,"enableScreenSharing":false,"enableGroups":false,"groupsMode":null,"callingWebHook":"https://www.google.com","isEnabled":true},"etag":"W/\"f7c61f1609f323e9a0917af886f4bc568/14/2018 + 10:00:23 PM\"","channelName":"SkypeChannel","location":"global","provisioningState":"Accepted"}}'} + headers: + cache-control: [no-cache] + content-length: ['737'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:23 GMT'] + etag: ['W/"f7c61f1609f323e9a0917af886f4bc568/14/2018 10:00:23 PM"'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot skype show] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/SkypeChannel?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/SkypeChannel","name":"cli000002/SkypeChannel","type":"Microsoft.BotService/botServices/channels","etag":"W/\"a6832e2ad4d533f6a3b65088fb4a58fb8/14/2018 + 10:00:24 PM\"","location":"global","properties":{"properties":{"enableMessaging":true,"enableMediaCards":true,"enableVideo":true,"enableCalling":true,"enableScreenSharing":false,"enableGroups":false,"groupsMode":null,"callingWebHook":"https://www.google.com/","isEnabled":true},"etag":"W/\"a6832e2ad4d533f6a3b65088fb4a58fb8/14/2018 + 10:00:24 PM\"","channelName":"SkypeChannel","location":"global","provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['739'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:23 GMT'] + etag: ['W/"a6832e2ad4d533f6a3b65088fb4a58fb8/14/2018 10:00:24 PM"'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot skype show] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/SkypeChannel/listChannelWithKeys?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/SkypeChannel","location":"global","properties":{"properties":{"enableMessaging":true,"enableMediaCards":true,"enableVideo":true,"enableCalling":true,"enableScreenSharing":false,"enableGroups":false,"groupsMode":null,"callingWebHook":"https://www.google.com/","isEnabled":true},"etag":"W/\"a6832e2ad4d533f6a3b65088fb4a58fb8/14/2018 + 10:00:25 PM\"","channelName":"SkypeChannel","location":"global"},"provisioningState":"Succeeded","entityTag":"W/\"b59ef950d9384bf0d12e48197d175a358/14/2018 + 10:00:25 PM\"","changedTime":"0001-01-01T00:00:00Z"}'} + headers: + cache-control: [no-cache] + content-length: ['697'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:00:27 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot skype delete] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/SkypeChannel?api-version=2018-07-12 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 22:00:29 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-deletes: ['14999'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group delete] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 22:00:30 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdWUklZNVpRNVRYLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2018-05-01'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-deletes: ['14999'] + status: {code: 202, message: Accepted} +version: 1 diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_webapp_bot.yaml b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_webapp_bot.yaml new file mode 100644 index 00000000000..e63bdbf9372 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_webapp_bot.yaml @@ -0,0 +1,2102 @@ +interactions: +- request: + body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation", + "date": "2018-08-14T22:38:07Z"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group create] + Connection: [keep-alive] + Content-Length: ['110'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-08-14T22:38:07Z"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['274'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:38:08 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [unknown] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 subscriptionclient/2.0.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/locations?api-version=2016-06-01 + response: + body: {string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasia","name":"eastasia","displayName":"East + Asia","longitude":"114.188","latitude":"22.267"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasia","name":"southeastasia","displayName":"Southeast + Asia","longitude":"103.833","latitude":"1.283"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralus","name":"centralus","displayName":"Central + US","longitude":"-93.6208","latitude":"41.5908"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus","name":"eastus","displayName":"East + US","longitude":"-79.8164","latitude":"37.3719"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2","name":"eastus2","displayName":"East + US 2","longitude":"-78.3889","latitude":"36.6681"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus","name":"westus","displayName":"West + US","longitude":"-122.417","latitude":"37.783"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralus","name":"northcentralus","displayName":"North + Central US","longitude":"-87.6278","latitude":"41.8819"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus","name":"southcentralus","displayName":"South + Central US","longitude":"-98.5","latitude":"29.4167"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northeurope","name":"northeurope","displayName":"North + Europe","longitude":"-6.2597","latitude":"53.3478"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westeurope","name":"westeurope","displayName":"West + Europe","longitude":"4.9","latitude":"52.3667"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japanwest","name":"japanwest","displayName":"Japan + West","longitude":"135.5022","latitude":"34.6939"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japaneast","name":"japaneast","displayName":"Japan + East","longitude":"139.77","latitude":"35.68"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazilsouth","name":"brazilsouth","displayName":"Brazil + South","longitude":"-46.633","latitude":"-23.55"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiaeast","name":"australiaeast","displayName":"Australia + East","longitude":"151.2094","latitude":"-33.86"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiasoutheast","name":"australiasoutheast","displayName":"Australia + Southeast","longitude":"144.9631","latitude":"-37.8136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia","name":"southindia","displayName":"South + India","longitude":"80.1636","latitude":"12.9822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralindia","name":"centralindia","displayName":"Central + India","longitude":"73.9197","latitude":"18.5822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westindia","name":"westindia","displayName":"West + India","longitude":"72.868","latitude":"19.088"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadacentral","name":"canadacentral","displayName":"Canada + Central","longitude":"-79.383","latitude":"43.653"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadaeast","name":"canadaeast","displayName":"Canada + East","longitude":"-71.217","latitude":"46.817"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uksouth","name":"uksouth","displayName":"UK + South","longitude":"-0.799","latitude":"50.941"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/ukwest","name":"ukwest","displayName":"UK + West","longitude":"-3.084","latitude":"53.427"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westcentralus","name":"westcentralus","displayName":"West + Central US","longitude":"-110.234","latitude":"40.890"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2","name":"westus2","displayName":"West + US 2","longitude":"-119.852","latitude":"47.233"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral","name":"koreacentral","displayName":"Korea + Central","longitude":"126.9780","latitude":"37.5665"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth","name":"koreasouth","displayName":"Korea + South","longitude":"129.0756","latitude":"35.1796"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral","name":"francecentral","displayName":"France + Central","longitude":"2.3730","latitude":"46.3772"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth","name":"francesouth","displayName":"France + South","longitude":"2.1972","latitude":"43.8345"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral","name":"australiacentral","displayName":"Australia + Central","longitude":"149.1244","latitude":"-35.3075"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2","name":"australiacentral2","displayName":"Australia + Central 2","longitude":"149.1244","latitude":"-35.3075"}]}'} + headers: + cache-control: [no-cache] + content-length: ['5269'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:38:08 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + status: {code: 200, message: OK} +- request: + body: 'b''{"name": "cli000002", "type": ""}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['39'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/providers/Microsoft.BotService/checkNameAvailability?api-version=2018-07-12 + response: + body: {string: '{"valid":true,"message":""}'} + headers: + cache-control: [no-cache] + content-length: ['27'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:38:08 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-tenant-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: 'b''b\''{"properties": {"template": {"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", "parameters": {"botEnv": {"type": "string", "defaultValue": + "prod"}, "botId": {"type": "string"}, "description": {"type": "string", "defaultValue": + ""}, "location": {"type": "string"}, "sku": {"type": "string"}, "kind": {"type": + "string"}, "siteName": {"type": "string"}, "createNewStorage": {"type": "bool"}, + "storageAccountName": {"type": "string"}, "storageAccountResourceId": {"type": + "string", "defaultValue": ""}, "appId": {"type": "string", "defaultValue": "1234"}, + "appSecret": {"type": "string", "defaultValue": "blank"}, "azureWebJobsBotFrameworkDirectLineSecret": + {"type": "string", "defaultValue": ""}, "zipUrl": {"type": "string", "defaultValue": + ""}, "proactiveZipUrl": {"type": "string", "defaultValue": ""}, "useAppInsights": + {"type": "bool"}, "appInsightsLocation": {"type": "string"}, "serverFarmId": + {"type": "string"}, "createServerFarm": {"type": "bool"}, "serverFarmLocation": + {"type": "string", "defaultValue": ""}, "serverFarmSku": {"type": "object", + "defaultValue": {"name": "S1", "tier": "Standard", "size": "S1", "family": "S", + "capacity": 1}}, "endpoint": {"type": "string", "defaultValue": ""}, "luisApiLocation": + {"type": "string", "defaultValue": "Global"}}, "variables": {"storageAccountType": + "Standard_LRS", "storageAccountId": "[if(or(parameters(\\\''createNewStorage\\\''), + equals(\\\''\\\'', parameters(\\\''storageAccountResourceId\\\''))), resourceId(\\\''Microsoft.Storage/storageAccounts\\\'', + parameters(\\\''storageAccountName\\\'')), parameters(\\\''storageAccountResourceId\\\''))]", + "serverFarmName": "[last(split(parameters(\\\''serverFarmId\\\''), \\\''/\\\''))]", + "myWorkerSize": 0, "proactiveFunctionName": "[concat(parameters(\\\''siteName\\\''), + \\\''-function\\\'')]", "insightsName": "[concat(parameters(\\\''botId\\\''), + substring(uniqueString(resourceGroup().id), 0, 6))]", "config": {"scratch": + {"stateEndpoint": "https://intercom-api-scratch.azurewebsites.net", "azureWebJobsBotFrameworkDirectLineEndpoint": + "https://directline.scratch.botframework.com/", "blobStoreName": "icscratch", + "openIdMetadata": "https://intercom-api-ppe.azurewebsites.net/v1/.well-known/openidconfiguration"}, + "ppe": {"stateEndpoint": "https://intercom-api-ppe.azurewebsites.net", "azureWebJobsBotFrameworkDirectLineEndpoint": + "https://directline.ppe.botframework.com/", "blobStoreName": "intercomppe", + "openIdMetadata": "https://intercom-api-ppe.azurewebsites.net/v1/.well-known/openidconfiguration"}, + "prod": {"stateEndpoint": "", "azureWebJobsBotFrameworkDirectLineEndpoint": + "https://directline.botframework.com/", "blobStoreName": "connectorprod", "openIdMetadata": + ""}}, "botAppKinds": {"function": "functionapp", "sdk": "app", "designer": "app", + "bot": ""}, "botAppKind": "[variables(\\\''botAppKinds\\\'')[parameters(\\\''kind\\\'')]]", + "currentConfig": "[variables(\\\''config\\\'')[toLower(parameters(\\\''botEnv\\\''))]]", + "siteHost": "[concat(parameters(\\\''siteName\\\''), \\\''.azurewebsites.net\\\'')]", + "botEndpointConfig": {"bot": "[parameters(\\\''endpoint\\\'')]", "sdk": "[concat(\\\''https://\\\'', + variables(\\\''siteHost\\\''), \\\''/api/messages\\\'')]", "designer": "[concat(\\\''https://\\\'', + variables(\\\''siteHost\\\''), \\\''/api/messages\\\'')]", "function": "[concat(\\\''https://\\\'', + variables(\\\''siteHost\\\''), \\\''/api/messages?code=\\\'', \\\''NYI\\\'')]"}, + "botEndpoint": "[variables(\\\''botEndpointConfig\\\'')[parameters(\\\''kind\\\'')]]", + "luisApiName": "", "luisApiResId": "[resourceId(\\\''Microsoft.CognitiveServices/accounts/\\\'', + variables(\\\''luisApiName\\\''))]"}, "resources": [{"name": "[if(equals(\\\''\\\'', + variables(\\\''luisApiName\\\'')), \\\''nosuch\\\'', variables(\\\''luisApiName\\\''))]", + "apiVersion": "2017-04-18", "condition": "[not(equals(variables(\\\''luisApiName\\\''), + \\\''\\\''))]", "type": "Microsoft.CognitiveServices/accounts", "location": + "[parameters(\\\''luisApiLocation\\\'')]", "sku": {"name": "F0"}, "kind": "LUIS", + "properties": {}}, {"type": "Microsoft.Storage/storageAccounts", "condition": + "[parameters(\\\''createNewStorage\\\'')]", "name": "[parameters(\\\''storageAccountName\\\'')]", + "apiVersion": "2015-05-01-preview", "location": "[parameters(\\\''location\\\'')]", + "properties": {"accountType": "[variables(\\\''storageAccountType\\\'')]"}}, + {"type": "Microsoft.Web/serverfarms", "condition": "[parameters(\\\''createServerFarm\\\'')]", + "name": "[variables(\\\''serverFarmName\\\'')]", "apiVersion": "2016-09-01", + "location": "[parameters(\\\''serverFarmLocation\\\'')]", "sku": "[parameters(\\\''serverFarmSku\\\'')]", + "properties": {"name": "[variables(\\\''serverFarmName\\\'')]"}}, {"name": "[variables(\\\''insightsName\\\'')]", + "type": "microsoft.insights/components", "kind": "web", "apiVersion": "2014-04-01", + "condition": "[parameters(\\\''useAppInsights\\\'')]", "location": "[parameters(\\\''appInsightsLocation\\\'')]", + "tags": {"[concat(\\\''hidden-link:\\\'', resourceId(\\\''Microsoft.BotService/botServices/\\\'', + parameters(\\\''botId\\\'')))]": "Resource", "[concat(\\\''hidden-link:\\\'', + resourceId(\\\''Microsoft.Web/sites/\\\'', parameters(\\\''siteName\\\'')))]": + "Resource"}, "properties": {"ApplicationId": "[parameters(\\\''botId\\\'')]"}}, + {"name": "[parameters(\\\''siteName\\\'')]", "type": "Microsoft.Web/sites", + "apiVersion": "2015-08-01", "condition": "[not(equals(parameters(\\\''zipUrl\\\''), + \\\''\\\''))]", "location": "[parameters(\\\''location\\\'')]", "kind": "[variables(\\\''botAppKind\\\'')]", + "dependsOn": ["[resourceId(\\\''Microsoft.Storage/storageAccounts/\\\'', parameters(\\\''storageAccountName\\\''))]", + "[parameters(\\\''serverFarmId\\\'')]"], "properties": {"name": "[parameters(\\\''siteName\\\'')]", + "serverFarmId": "[parameters(\\\''serverFarmId\\\'')]", "siteConfig": {"appSettings": + [{"name": "AzureWebJobsStorage", "value": "[concat(\\\''DefaultEndpointsProtocol=https;AccountName=\\\'',parameters(\\\''storageAccountName\\\''),\\\'';AccountKey=\\\'',listkeys(variables(\\\''storageAccountId\\\''), + \\\''2015-05-01-preview\\\'').key1,\\\'';\\\'')]"}, {"name": "AzureWebJobsDashboard", + "value": "[concat(\\\''DefaultEndpointsProtocol=https;AccountName=\\\'',parameters(\\\''storageAccountName\\\''),\\\'';AccountKey=\\\'',listkeys(variables(\\\''storageAccountId\\\''), + \\\''2015-05-01-preview\\\'').key1,\\\'';\\\'')]"}, {"name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "6.9.1"}, {"name": "BotEnv", "value": "[parameters(\\\''botEnv\\\'')]"}, + {"name": "BotId", "value": "[parameters(\\\''botId\\\'')]"}, {"name": "MicrosoftAppId", + "value": "[parameters(\\\''appId\\\'')]"}, {"name": "MicrosoftAppPassword", + "value": "[parameters(\\\''appSecret\\\'')]"}, {"name": "BotStateEndpoint", + "value": "[variables(\\\''currentConfig\\\'').stateEndpoint]"}, {"name": "BotOpenIdMetadata", + "value": "[variables(\\\''currentConfig\\\'').openIdMetadata]"}, {"name": "UseTableStorageForConversationState", + "value": "true"}, {"name": "BotDevAppInsightsKey", "value": "[reference(resourceId(\\\''microsoft.insights/components/\\\'', + variables(\\\''insightsName\\\'')), \\\''2015-05-01\\\'').InstrumentationKey]"}, + {"name": "BotDevAppInsightsName", "value": "[variables(\\\''insightsName\\\'')]"}, + {"name": "BotDevAppInsightsAppId", "value": "[reference(resourceId(\\\''microsoft.insights/components/\\\'', + variables(\\\''insightsName\\\'')), \\\''2015-05-01\\\'').AppId]"}], "cors": + {"allowedOrigins": ["https://localhost:44300", "https://botservice.hosting.portal.azure.net", + "https://hosting.onecloud.azure-test.net/"]}}}, "resources": [{"name": "MSDeploy", + "type": "Extensions", "apiVersion": "2015-02-01", "condition": "[not(equals(parameters(\\\''zipUrl\\\''), + \\\''\\\''))]", "dependsOn": ["[concat(\\\''Microsoft.Web/Sites/\\\'', parameters(\\\''siteName\\\''))]"], + "properties": {"packageUri": "[parameters(\\\''zipUrl\\\'')]", "dbType": "None", + "connectionString": "", "setParameters": {"IIS Web Application Name": "[parameters(\\\''siteName\\\'')]"}}}, + {"apiVersion": "2015-08-01", "name": "logs", "type": "config", "dependsOn": + ["[resourceId(\\\''Microsoft.Web/Sites\\\'', parameters(\\\''siteName\\\''))]", + "[resourceId(\\\''Microsoft.Web/Sites/extensions\\\'', parameters(\\\''siteName\\\''), + \\\''MSDeploy\\\'')]"], "properties": {"applicationLogs": {"fileSystem": {"level": + "Error"}, "azureTableStorage": {"level": "Off", "sasUrl": null}, "azureBlobStorage": + {"level": "Error", "sasUrl": null, "retentionInDays": 1}}, "httpLogs": {"fileSystem": + {"retentionInMb": 35, "retentionInDays": 1, "enabled": true}, "azureBlobStorage": + {"enabled": false}}, "failedRequestsTracing": {"enabled": true}, "detailedErrorMessages": + {"enabled": true}}}]}, {"apiVersion": "2016-03-01", "type": "Microsoft.Web/sites", + "condition": "[not(equals(parameters(\\\''proactiveZipUrl\\\''), \\\''\\\''))]", + "name": "[variables(\\\''proactiveFunctionName\\\'')]", "location": "[parameters(\\\''location\\\'')]", + "kind": "functionapp", "dependsOn": ["[resourceId(\\\''Microsoft.Storage/storageAccounts/\\\'', + parameters(\\\''storageAccountName\\\''))]", "[parameters(\\\''serverFarmId\\\'')]"], + "properties": {"siteConfig": {"appSettings": [{"name": "AzureWebJobsDashboard", + "value": "[concat(\\\''DefaultEndpointsProtocol=https;AccountName=\\\'',parameters(\\\''storageAccountName\\\''),\\\'';AccountKey=\\\'',listkeys(variables(\\\''storageAccountId\\\''), + \\\''2015-05-01-preview\\\'').key1,\\\'';\\\'')]"}, {"name": "AzureWebJobsStorage", + "value": "[concat(\\\''DefaultEndpointsProtocol=https;AccountName=\\\'',parameters(\\\''storageAccountName\\\''),\\\'';AccountKey=\\\'',listkeys(variables(\\\''storageAccountId\\\''), + \\\''2015-05-01-preview\\\'').key1,\\\'';\\\'')]"}, {"name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat(\\\''DefaultEndpointsProtocol=https;AccountName=\\\'',parameters(\\\''storageAccountName\\\''),\\\'';AccountKey=\\\'',listkeys(variables(\\\''storageAccountId\\\''), + \\\''2015-05-01-preview\\\'').key1,\\\'';\\\'')]"}, {"name": "WEBSITE_CONTENTSHARE", + "value": "[toLower(variables(\\\''proactiveFunctionName\\\''))]"}, {"name": + "FUNCTIONS_EXTENSION_VERSION", "value": "~1"}, {"name": "AzureWebJobsBotFrameworkDirectLineSecret", + "value": "[parameters(\\\''azureWebJobsBotFrameworkDirectLineSecret\\\'')]"}, + {"name": "AzureWebJobsBotFrameworkDirectLineEndpoint", "value": "[variables(\\\''currentConfig\\\'').azureWebJobsBotFrameworkDirectLineEndpoint]"}]}}, + "resources": [{"name": "MSDeploy", "type": "Extensions", "apiVersion": "2015-02-01", + "condition": "[not(equals(parameters(\\\''proactiveZipUrl\\\''), \\\''\\\''))]", + "dependsOn": ["[concat(\\\''Microsoft.Web/Sites/\\\'', variables(\\\''proactiveFunctionName\\\''))]"], + "properties": {"packageUri": "[parameters(\\\''proactiveZipUrl\\\'')]"}}]}, + {"apiVersion": "2017-12-01", "type": "Microsoft.BotService/botServices", "name": + "[parameters(\\\''botId\\\'')]", "location": "global", "kind": "[parameters(\\\''kind\\\'')]", + "sku": {"name": "[parameters(\\\''sku\\\'')]"}, "properties": {"name": "[parameters(\\\''botId\\\'')]", + "description": "[parameters(\\\''description\\\'')]", "displayName": "[parameters(\\\''botId\\\'')]", + "endpoint": "[variables(\\\''botEndpoint\\\'')]", "msaAppId": "[parameters(\\\''appId\\\'')]", + "developerAppInsightsApplicationId": "[variables(\\\''insightsName\\\'')]", + "developerAppInsightKey": "[reference(resourceId(\\\''microsoft.insights/components/\\\'', + variables(\\\''insightsName\\\'')), \\\''2015-05-01\\\'').InstrumentationKey]"}, + "dependsOn": ["[resourceId(\\\''Microsoft.Storage/storageAccounts/\\\'', parameters(\\\''storageAccountName\\\''))]", + "[parameters(\\\''serverFarmId\\\'')]", "[resourceId(\\\''Microsoft.Web/sites/\\\'', + parameters(\\\''siteName\\\''))]", "[resourceId(\\\''microsoft.insights/components/\\\'', + variables(\\\''insightsName\\\''))]"]}]}, "parameters": {"location": {"value": + "centralus"}, "kind": {"value": "sdk"}, "sku": {"value": "F0"}, "siteName": + {"value": "cli000002op0z"}, "appId": {"value": "0cc66483-d276-4830-9afd-9fe6b654a255"}, + "appSecret": {"value": "testpassword"}, "storageAccountResourceId": {"value": + ""}, "serverFarmId": {"value": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002"}, + "zipUrl": {"value": "https://connectorprod.blob.core.windows.net/bot-packages/csharp-abs-webapp_simpleechobot_precompiled.zip"}, + "createNewStorage": {"value": true}, "storageAccountName": {"value": "cli7fn5rrh15cm"}, + "botEnv": {"value": "prod"}, "useAppInsights": {"value": true}, "appInsightsLocation": + {"value": "South Central US"}, "createServerFarm": {"value": true}, "serverFarmLocation": + {"value": "centralus"}, "azureWebJobsBotFrameworkDirectLineSecret": {"value": + ""}, "botId": {"value": "cli000002"}}, "mode": "Incremental"}}\''''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['11678'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment?api-version=2018-05-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Resources/deployments/cli000002","name":"cli000002","properties":{"templateHash":"11415730151069052336","parameters":{"botEnv":{"type":"String","value":"prod"},"botId":{"type":"String","value":"cli000002"},"description":{"type":"String","value":""},"location":{"type":"String","value":"centralus"},"sku":{"type":"String","value":"F0"},"kind":{"type":"String","value":"sdk"},"siteName":{"type":"String","value":"cli000002op0z"},"createNewStorage":{"type":"Bool","value":true},"storageAccountName":{"type":"String","value":"cli7fn5rrh15cm"},"storageAccountResourceId":{"type":"String","value":""},"appId":{"type":"String","value":"0cc66483-d276-4830-9afd-9fe6b654a255"},"appSecret":{"type":"String","value":"testpassword"},"azureWebJobsBotFrameworkDirectLineSecret":{"type":"String","value":""},"zipUrl":{"type":"String","value":"https://connectorprod.blob.core.windows.net/bot-packages/csharp-abs-webapp_simpleechobot_precompiled.zip"},"proactiveZipUrl":{"type":"String","value":""},"useAppInsights":{"type":"Bool","value":true},"appInsightsLocation":{"type":"String","value":"South + Central US"},"serverFarmId":{"type":"String","value":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002"},"createServerFarm":{"type":"Bool","value":true},"serverFarmLocation":{"type":"String","value":"centralus"},"serverFarmSku":{"type":"Object","value":{"name":"S1","tier":"Standard","size":"S1","family":"S","capacity":1}},"endpoint":{"type":"String","value":""},"luisApiLocation":{"type":"String","value":"Global"}},"mode":"Incremental","provisioningState":"Accepted","timestamp":"2018-08-14T22:38:11.8767652Z","duration":"PT0.6890045S","correlationId":"5064c9da-9c30-4474-b20b-fca9106132fa","providers":[{"namespace":"Microsoft.Storage","resourceTypes":[{"resourceType":"storageAccounts","locations":["centralus"]}]},{"namespace":"Microsoft.Web","resourceTypes":[{"resourceType":"serverfarms","locations":["centralus"]},{"resourceType":"sites","locations":["centralus"]},{"resourceType":"sites/Extensions","locations":[null]},{"resourceType":"sites/config","locations":[null]}]},{"namespace":"microsoft.insights","resourceTypes":[{"resourceType":"components","locations":["southcentralus"]}]},{"namespace":"Microsoft.BotService","resourceTypes":[{"resourceType":"botServices","locations":["global"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli7fn5rrh15cm","resourceType":"Microsoft.Storage/storageAccounts","resourceName":"cli7fn5rrh15cm"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002","resourceType":"Microsoft.Web/serverfarms","resourceName":"cli000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli7fn5rrh15cm","resourceType":"Microsoft.Storage/storageAccounts","resourceName":"cli7fn5rrh15cm","actionName":"listkeys","apiVersion":"2015-05-01-preview"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/microsoft.insights/components/cli000002di2zzf","resourceType":"microsoft.insights/components","resourceName":"cli000002di2zzf","apiVersion":"2015-05-01"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z","resourceType":"Microsoft.Web/sites","resourceName":"cli000002op0z"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z","resourceType":"Microsoft.Web/sites","resourceName":"cli000002op0z"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z/Extensions/MSDeploy","resourceType":"Microsoft.Web/sites/Extensions","resourceName":"cli000002op0z/MSDeploy"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/Sites/cli000002op0z","resourceType":"Microsoft.Web/Sites","resourceName":"cli000002op0z"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/Sites/cli000002op0z/extensions/MSDeploy","resourceType":"Microsoft.Web/Sites/extensions","resourceName":"cli000002op0z/MSDeploy"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z/config/logs","resourceType":"Microsoft.Web/sites/config","resourceName":"cli000002op0z/logs"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli7fn5rrh15cm","resourceType":"Microsoft.Storage/storageAccounts","resourceName":"cli7fn5rrh15cm"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002","resourceType":"Microsoft.Web/serverfarms","resourceName":"cli000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli7fn5rrh15cm","resourceType":"Microsoft.Storage/storageAccounts","resourceName":"cli7fn5rrh15cm","actionName":"listkeys","apiVersion":"2015-05-01-preview"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z-function","resourceType":"Microsoft.Web/sites","resourceName":"cli000002op0z-function"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z-function","resourceType":"Microsoft.Web/sites","resourceName":"cli000002op0z-function"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z-function/Extensions/MSDeploy","resourceType":"Microsoft.Web/sites/Extensions","resourceName":"cli000002op0z-function/MSDeploy"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli7fn5rrh15cm","resourceType":"Microsoft.Storage/storageAccounts","resourceName":"cli7fn5rrh15cm"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002","resourceType":"Microsoft.Web/serverfarms","resourceName":"cli000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z","resourceType":"Microsoft.Web/sites","resourceName":"cli000002op0z"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/microsoft.insights/components/cli000002di2zzf","resourceType":"microsoft.insights/components","resourceName":"cli000002di2zzf"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/microsoft.insights/components/cli000002di2zzf","resourceType":"microsoft.insights/components","resourceName":"cli000002di2zzf","apiVersion":"2015-05-01"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","resourceType":"Microsoft.BotService/botServices","resourceName":"cli000002"}]}}'} + headers: + azure-asyncoperation: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/cli000002/operationStatuses/08586673205942899110?api-version=2018-05-01'] + cache-control: [no-cache] + content-length: ['8040'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:38:11 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586673205942899110?api-version=2018-05-01 + response: + body: {string: '{"status":"Running"}'} + headers: + cache-control: [no-cache] + content-length: ['20'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:38:41 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586673205942899110?api-version=2018-05-01 + response: + body: {string: '{"status":"Running"}'} + headers: + cache-control: [no-cache] + content-length: ['20'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:39:11 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586673205942899110?api-version=2018-05-01 + response: + body: {string: '{"status":"Succeeded"}'} + headers: + cache-control: [no-cache] + content-length: ['22'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:39:42 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment?api-version=2018-05-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Resources/deployments/cli000002","name":"cli000002","properties":{"templateHash":"11415730151069052336","parameters":{"botEnv":{"type":"String","value":"prod"},"botId":{"type":"String","value":"cli000002"},"description":{"type":"String","value":""},"location":{"type":"String","value":"centralus"},"sku":{"type":"String","value":"F0"},"kind":{"type":"String","value":"sdk"},"siteName":{"type":"String","value":"cli000002op0z"},"createNewStorage":{"type":"Bool","value":true},"storageAccountName":{"type":"String","value":"cli7fn5rrh15cm"},"storageAccountResourceId":{"type":"String","value":""},"appId":{"type":"String","value":"0cc66483-d276-4830-9afd-9fe6b654a255"},"appSecret":{"type":"String","value":"testpassword"},"azureWebJobsBotFrameworkDirectLineSecret":{"type":"String","value":""},"zipUrl":{"type":"String","value":"https://connectorprod.blob.core.windows.net/bot-packages/csharp-abs-webapp_simpleechobot_precompiled.zip"},"proactiveZipUrl":{"type":"String","value":""},"useAppInsights":{"type":"Bool","value":true},"appInsightsLocation":{"type":"String","value":"South + Central US"},"serverFarmId":{"type":"String","value":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002"},"createServerFarm":{"type":"Bool","value":true},"serverFarmLocation":{"type":"String","value":"centralus"},"serverFarmSku":{"type":"Object","value":{"name":"S1","tier":"Standard","size":"S1","family":"S","capacity":1}},"endpoint":{"type":"String","value":""},"luisApiLocation":{"type":"String","value":"Global"}},"mode":"Incremental","provisioningState":"Succeeded","timestamp":"2018-08-14T22:39:29.7025278Z","duration":"PT1M18.5147671S","correlationId":"5064c9da-9c30-4474-b20b-fca9106132fa","providers":[{"namespace":"Microsoft.Storage","resourceTypes":[{"resourceType":"storageAccounts","locations":["centralus"]}]},{"namespace":"Microsoft.Web","resourceTypes":[{"resourceType":"serverfarms","locations":["centralus"]},{"resourceType":"sites","locations":["centralus"]},{"resourceType":"sites/Extensions","locations":[null]},{"resourceType":"sites/config","locations":[null]}]},{"namespace":"microsoft.insights","resourceTypes":[{"resourceType":"components","locations":["southcentralus"]}]},{"namespace":"Microsoft.BotService","resourceTypes":[{"resourceType":"botServices","locations":["global"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli7fn5rrh15cm","resourceType":"Microsoft.Storage/storageAccounts","resourceName":"cli7fn5rrh15cm"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002","resourceType":"Microsoft.Web/serverfarms","resourceName":"cli000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli7fn5rrh15cm","resourceType":"Microsoft.Storage/storageAccounts","resourceName":"cli7fn5rrh15cm","actionName":"listkeys","apiVersion":"2015-05-01-preview"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/microsoft.insights/components/cli000002di2zzf","resourceType":"microsoft.insights/components","resourceName":"cli000002di2zzf","apiVersion":"2015-05-01"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z","resourceType":"Microsoft.Web/sites","resourceName":"cli000002op0z"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z","resourceType":"Microsoft.Web/sites","resourceName":"cli000002op0z"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z/Extensions/MSDeploy","resourceType":"Microsoft.Web/sites/Extensions","resourceName":"cli000002op0z/MSDeploy"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/Sites/cli000002op0z","resourceType":"Microsoft.Web/Sites","resourceName":"cli000002op0z"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/Sites/cli000002op0z/extensions/MSDeploy","resourceType":"Microsoft.Web/Sites/extensions","resourceName":"cli000002op0z/MSDeploy"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z/config/logs","resourceType":"Microsoft.Web/sites/config","resourceName":"cli000002op0z/logs"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli7fn5rrh15cm","resourceType":"Microsoft.Storage/storageAccounts","resourceName":"cli7fn5rrh15cm"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002","resourceType":"Microsoft.Web/serverfarms","resourceName":"cli000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli7fn5rrh15cm","resourceType":"Microsoft.Storage/storageAccounts","resourceName":"cli7fn5rrh15cm","actionName":"listkeys","apiVersion":"2015-05-01-preview"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z-function","resourceType":"Microsoft.Web/sites","resourceName":"cli000002op0z-function"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z-function","resourceType":"Microsoft.Web/sites","resourceName":"cli000002op0z-function"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z-function/Extensions/MSDeploy","resourceType":"Microsoft.Web/sites/Extensions","resourceName":"cli000002op0z-function/MSDeploy"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli7fn5rrh15cm","resourceType":"Microsoft.Storage/storageAccounts","resourceName":"cli7fn5rrh15cm"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002","resourceType":"Microsoft.Web/serverfarms","resourceName":"cli000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z","resourceType":"Microsoft.Web/sites","resourceName":"cli000002op0z"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/microsoft.insights/components/cli000002di2zzf","resourceType":"microsoft.insights/components","resourceName":"cli000002di2zzf"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/microsoft.insights/components/cli000002di2zzf","resourceType":"microsoft.insights/components","resourceName":"cli000002di2zzf","apiVersion":"2015-05-01"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","resourceType":"Microsoft.BotService/botServices","resourceName":"cli000002"}],"outputResources":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.CognitiveServices/accounts/nosuch"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/microsoft.insights/components/cli000002di2zzf"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli7fn5rrh15cm"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z/config/logs"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z/Extensions/MSDeploy"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z-function"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z-function/Extensions/MSDeploy"}]}}'} + headers: + cache-control: [no-cache] + content-length: ['9640'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:39:42 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","name":"cli000002","type":"Microsoft.BotService/botServices","etag":"W/\"datetime''2018-08-14T22%3A39%3A07.5410872Z''\"","location":"global","sku":{"name":"F0"},"kind":"sdk","tags":{},"properties":{"displayName":"cli000002","description":"","iconUrl":"//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png","endpoint":"https://cli000002op0z.azurewebsites.net/api/messages","msaAppId":"0cc66483-d276-4830-9afd-9fe6b654a255","developerAppInsightKey":"685f7952-d4eb-49cd-a129-4ebf0a8a26d5","developerAppInsightsApplicationId":"cli000002di2zzf","luisAppIds":[],"endpointVersion":"3.0","configuredChannels":["webchat"],"enabledChannels":["webchat","directline"],"isDeveloperAppInsightsApiKeySet":false,"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['922'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:39:42 GMT'] + etag: [W/"datetime'2018-08-14T22%3A39%3A07.5410872Z'"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot download] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","name":"cli000002","type":"Microsoft.BotService/botServices","etag":"W/\"datetime''2018-08-14T22%3A39%3A07.5410872Z''\"","location":"global","sku":{"name":"F0"},"kind":"sdk","tags":{},"properties":{"displayName":"cli000002","description":"","iconUrl":"//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png","endpoint":"https://cli000002op0z.azurewebsites.net/api/messages","msaAppId":"0cc66483-d276-4830-9afd-9fe6b654a255","developerAppInsightKey":"685f7952-d4eb-49cd-a129-4ebf0a8a26d5","developerAppInsightsApplicationId":"cli000002di2zzf","luisAppIds":[],"endpointVersion":"3.0","configuredChannels":["webchat"],"enabledChannels":["webchat","directline"],"isDeveloperAppInsightsApiKeySet":false,"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['922'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:39:44 GMT'] + etag: [W/"datetime'2018-08-14T22%3A39%3A07.5410872Z'"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot download] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-web/0.35.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z/config/publishingcredentials/list?api-version=2016-08-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z/publishingcredentials/$cli000002op0z","name":"cli000002op0z","type":"Microsoft.Web/sites/publishingcredentials","location":"Central + US","properties":{"name":null,"publishingUserName":"$cli000002op0z","publishingPassword":"Tw1oWlCb2XTXA9ZCE5uzlg5gqoozufRPir7WBGqHLt2Gdsz0wcnGABLR1dEn","publishingPasswordHash":null,"publishingPasswordHashSalt":null,"metadata":null,"isDeleted":false,"scmUri":"https://$cli000002op0z:Tw1oWlCb2XTXA9ZCE5uzlg5gqoozufRPir7WBGqHLt2Gdsz0wcnGABLR1dEn@cli000002op0z.scm.azurewebsites.net"}}'} + headers: + cache-control: [no-cache] + content-length: ['689'] + content-type: [application/json] + date: ['Tue, 14 Aug 2018 22:39:44 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-resource-requests: ['11999'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot download] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-web/0.35.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z?api-version=2016-08-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z","name":"cli000002op0z","type":"Microsoft.Web/sites","kind":"app","location":"Central + US","properties":{"name":"cli000002op0z","state":"Running","hostNames":["cli000002op0z.azurewebsites.net"],"webSpace":"clitest.rg000001-CentralUSwebspace","selfLink":"https://waws-prod-dm1-087.api.azurewebsites.windows.net:454/subscriptions/00000000-0000-0000-0000-000000000000/webspaces/clitest.rg000001-CentralUSwebspace/sites/cli000002op0z","repositorySiteName":"cli000002op0z","owner":null,"usageState":"Normal","enabled":true,"adminEnabled":true,"enabledHostNames":["cli000002op0z.azurewebsites.net","cli000002op0z.scm.azurewebsites.net"],"siteProperties":{"metadata":null,"properties":[{"name":"LinuxFxVersion","value":""},{"name":"WindowsFxVersion","value":null}],"appSettings":null},"availabilityState":"Normal","sslCertificates":null,"csrs":[],"cers":null,"siteMode":null,"hostNameSslStates":[{"name":"cli000002op0z.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Standard"},{"name":"cli000002op0z.scm.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Repository"}],"computeMode":null,"serverFarm":null,"serverFarmId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002","reserved":false,"isXenon":false,"lastModifiedTimeUtc":"2018-08-14T22:39:25.5766667","storageRecoveryDefaultState":"Running","contentAvailabilityState":"Normal","runtimeAvailabilityState":"Normal","siteConfig":null,"deploymentId":"cli000002op0z","trafficManagerHostNames":null,"sku":"Standard","scmSiteAlsoStopped":false,"targetSwapSlot":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"clientAffinityEnabled":true,"clientCertEnabled":false,"hostNamesDisabled":false,"domainVerificationIdentifiers":null,"kind":"app","outboundIpAddresses":"52.173.139.99,52.173.188.229,52.173.184.127,52.173.186.243,52.173.190.95","possibleOutboundIpAddresses":"52.173.139.99,52.173.188.229,52.173.184.127,52.173.186.243,52.173.190.95,52.176.107.202,52.173.184.202,52.173.190.226","containerSize":0,"dailyMemoryTimeQuota":0,"suspendedTill":null,"siteDisabledReason":0,"functionExecutionUnitsCache":null,"maxNumberOfWorkers":null,"homeStamp":"waws-prod-dm1-087","cloningInfo":null,"hostingEnvironmentId":null,"tags":null,"resourceGroup":"clitest.rg000001","defaultHostName":"cli000002op0z.azurewebsites.net","slotSwapStatus":null,"httpsOnly":false}}'} + headers: + cache-control: [no-cache] + content-length: ['2903'] + content-type: [application/json] + date: ['Tue, 14 Aug 2018 22:39:45 GMT'] + etag: ['"1D4341FA7488A8B"'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + User-Agent: [python-requests/2.19.1] + content-type: [application/json] + method: GET + uri: https://cli000002op0z.scm.azurewebsites.net/api/zip/site/clirepo/ + response: + body: {string: '{"Message":"''D:\\home\\site\\clirepo\\'' not found."}'} + headers: + cache-control: [no-cache] + content-length: ['52'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:39:49 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + set-cookie: [ARRAffinity=7d1d1d94161133c2c1257779d1c4af3b85fe3dcfe5d7d2072cd743f58200646e;Path=/;HttpOnly;Domain=cli7fn5rrhuruewop0z.scm.azurewebsites.net] + x-aspnet-version: [4.0.30319] + x-powered-by: [ASP.NET] + status: {code: 404, message: Not Found} +- request: + body: '{"command": "PostDeployScripts\\prepareSrc.cmd Tw1oWlCb2XTXA9ZCE5uzlg5gqoozufRPir7WBGqHLt2Gdsz0wcnGABLR1dEn", + "dir": "site\\wwwroot"}' + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['133'] + User-Agent: [python-requests/2.19.1] + content-type: [application/json] + method: POST + uri: https://cli000002op0z.scm.azurewebsites.net/api/command + response: + body: {string: '{"Output":"file:///D/home/site/srcRepo\r\nInitialized empty Git + repository in D:/home/site/wwwroot/.git/\r\n[master (root-commit) d2174b2] + prepare to download source\r\n 28 files changed, 1159 insertions(+)\r\n create + mode 100644 .deployment\r\n create mode 100644 .gitignore\r\n create mode + 100644 App_Start/WebApiConfig.cs\r\n create mode 100644 Controllers/MessagesController.cs\r\n + create mode 100644 Dialogs/EchoDialog.cs\r\n create mode 100644 Global.asax\r\n + create mode 100644 Global.asax.cs\r\n create mode 100644 Microsoft.Bot.Sample.SimpleEchoBot.csproj\r\n + create mode 100644 Microsoft.Bot.Sample.SimpleEchoBot.sln\r\n create mode + 100644 PostDeployScripts/IncludeSources.targets\r\n create mode 100644 PostDeployScripts/githubProject.json.template\r\n + create mode 100644 PostDeployScripts/prepareSrc.cmd\r\n create mode 100644 + PostDeployScripts/publish.cmd.template\r\n create mode 100644 PostDeployScripts/publishProfile.xml.template\r\n + create mode 100644 PostDeployScripts/publishSettings.xml.template\r\n create + mode 100644 PostDeployScripts/runGulp.cmd\r\n create mode 100644 PostDeployScripts/setupGithubRemoteRepo.cmd\r\n + create mode 100644 PostDeployScripts/setupVsoRemoteRepo.cmd\r\n create mode + 100644 PostDeployScripts/vsoProject.json.template\r\n create mode 100644 Properties/AssemblyInfo.cs\r\n + create mode 100644 Web.Debug.config\r\n create mode 100644 Web.Release.config\r\n + create mode 100644 Web.config\r\n create mode 100644 build.cmd\r\n create + mode 100644 default.htm\r\n create mode 100644 deploy.cmd\r\n create mode + 100644 packages.config\r\n create mode 100644 readme.md\r\nInitialized empty + Git repository in D:/home/site/srcRepo/\r\nBranch ''master'' set up to track + remote branch ''master'' from ''srcRepo''.\r\n\r\n7-Zip (A) 9.20 Copyright + (c) 1999-2010 Igor Pavlov 2010-11-18\r\nScanning\r\n\r\nCreating archive + D:\\home\\site\\bot-src.zip\r\n\r\nCompressing .deployment\r\nCompressing .gitignore\r\nCompressing App_Start\\WebApiConfig.cs\r\nCompressing build.cmd\r\nCompressing Controllers\\MessagesController.cs\r\nCompressing default.htm\r\nCompressing deploy.cmd\r\nCompressing Dialogs\\EchoDialog.cs\r\nCompressing Global.asax\r\nCompressing Global.asax.cs\r\nCompressing Microsoft.Bot.Sample.SimpleEchoBot.csproj\r\nCompressing Microsoft.Bot.Sample.SimpleEchoBot.sln\r\nCompressing packages.config\r\nCompressing PostDeployScripts\\cli000002op0z.PublishSettings\r\nCompressing PostDeployScripts\\githubProject.json.template\r\nCompressing PostDeployScripts\\IncludeSources.targets\r\nCompressing PostDeployScripts\\prepareSrc.cmd\r\nCompressing PostDeployScripts\\publish.cmd.template\r\nCompressing PostDeployScripts\\publishProfile.xml.template\r\nCompressing PostDeployScripts\\publishSettings.xml.template\r\nCompressing PostDeployScripts\\runGulp.cmd\r\nCompressing PostDeployScripts\\setupGithubRemoteRepo.cmd\r\nCompressing PostDeployScripts\\setupVsoRemoteRepo.cmd\r\nCompressing PostDeployScripts\\vsoProject.json.template\r\nCompressing Properties\\AssemblyInfo.cs\r\nCompressing Properties\\PublishProfiles\\cli000002op0z-Web-Deploy.pubxml\r\nCompressing publish.cmd\r\nCompressing readme.md\r\nCompressing Web.config\r\nCompressing Web.Debug.config\r\nCompressing Web.Release.config\r\n\r\nEverything + is Ok\r\n","Error":"To file:///D/home/site/srcRepo\r\n * [new branch] master + -> master\r\nCloning into ''bot-src''...\r\n","ExitCode":0}'} + headers: + cache-control: [no-cache] + content-length: ['3438'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:40:13 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + set-cookie: [ARRAffinity=7d1d1d94161133c2c1257779d1c4af3b85fe3dcfe5d7d2072cd743f58200646e;Path=/;HttpOnly;Domain=cli7fn5rrhuruewop0z.scm.azurewebsites.net] + vary: [Accept-Encoding] + x-aspnet-version: [4.0.30319] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + User-Agent: [python-requests/2.19.1] + content-type: [application/json] + method: GET + uri: https://cli000002op0z.scm.azurewebsites.net/api/vfs/site/bot-src.zip + response: + body: + string: !!binary | + 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 + AgAANQAkAAAAAAAAACAAAACfIwAAUG9zdERlcGxveVNjcmlwdHMvY2xpN2ZuNXJyaHVydWV3b3Aw + ei5QdWJsaXNoU2V0dGluZ3MKACAAAAAAAAEAGADwNGzAHzTUAXPUSsAfNNQBc9RKwB801AFQSwEC + PwAUAAAACAADtQ5N4M95uJEAAADcAAAALQAkAAAAAAAAACAAAABBJQAAUG9zdERlcGxveVNjcmlw + dHMvZ2l0aHViUHJvamVjdC5qc29uLnRlbXBsYXRlCgAgAAAAAAABABgApFa1vh801AHq8rK+HzTU + Aerysr4fNNQBUEsBAj8AFAAAAAgAA7UOTfblhxLcAAAApgEAACgAJAAAAAAAAAAgAAAAHSYAAFBv + c3REZXBsb3lTY3JpcHRzL0luY2x1ZGVTb3VyY2VzLnRhcmdldHMKACAAAAAAAAEAGADq8rK+HzTU + AbiQsL4fNNQBuJCwvh801AFQSwECPwAUAAAACAADtQ5NZEBNtawCAAAhBwAAIAAkAAAAAAAAACAA + AAA/JwAAUG9zdERlcGxveVNjcmlwdHMvcHJlcGFyZVNyYy5jbWQKACAAAAAAAAEAGACkVrW+HzTU + AaRWtb4fNNQBpFa1vh801AFQSwECPwAUAAAACAADtQ5N72tPdXYAAAB7AAAAJgAkAAAAAAAAACAA + AAApKgAAUG9zdERlcGxveVNjcmlwdHMvcHVibGlzaC5jbWQudGVtcGxhdGUKACAAAAAAAAEAGADz + t7e+HzTUAaRWtb4fNNQBpFa1vh801AFQSwECPwAUAAAACAADtQ5NNiuxcHICAABEBQAALQAkAAAA + AAAAACAAAADjKgAAUG9zdERlcGxveVNjcmlwdHMvcHVibGlzaFByb2ZpbGUueG1sLnRlbXBsYXRl + CgAgAAAAAAABABgA87e3vh801AHzt7e+HzTUAfO3t74fNNQBUEsBAj8AFAAAAAgAA7UOTcoi4NEk + AQAAMgIAAC4AJAAAAAAAAAAgAAAAoC0AAFBvc3REZXBsb3lTY3JpcHRzL3B1Ymxpc2hTZXR0aW5n + cy54bWwudGVtcGxhdGUKACAAAAAAAAEAGACpfLy+HzTUAT0aur4fNNQBPRq6vh801AFQSwECPwAU + AAAACAADtQ5NovUrKdUAAAB7AQAAHQAkAAAAAAAAACAAAAAQLwAAUG9zdERlcGxveVNjcmlwdHMv + cnVuR3VscC5jbWQKACAAAAAAAAEAGACpfLy+HzTUAal8vL4fNNQBqXy8vh801AFQSwECPwAUAAAA + CAADtQ5NoegHQ4YCAABDBgAAKwAkAAAAAAAAACAAAAAgMAAAUG9zdERlcGxveVNjcmlwdHMvc2V0 + dXBHaXRodWJSZW1vdGVSZXBvLmNtZAoAIAAAAAAAAQAYAKHfvr4fNNQBqXy8vh801AGpfLy+HzTU + AVBLAQI/ABQAAAAIAAO1Dk3nyEkF/wIAADIHAAAoACQAAAAAAAAAIAAAAO8yAABQb3N0RGVwbG95 + U2NyaXB0cy9zZXR1cFZzb1JlbW90ZVJlcG8uY21kCgAgAAAAAAABABgAod++vh801AGh376+HzTU + AaHfvr4fNNQBUEsBAj8AFAAAAAgAA7UOTQAF6ua/AAAAHAEAACoAJAAAAAAAAAAgAAAANDYAAFBv + c3REZXBsb3lTY3JpcHRzL3Zzb1Byb2plY3QuanNvbi50ZW1wbGF0ZQoAIAAAAAAAAQAYAMkGxr4f + NNQByQbGvh801AHJBsa+HzTUAVBLAQI/ABQAAAAAAAS1Dk0AAAAAAAAAAAAAAAALACQAAAAAAAAA + EAAAADs3AABQcm9wZXJ0aWVzLwoAIAAAAAAAAQAYAKwUq78fNNQBrBSrvx801AHJBsa+HzTUAVBL + AQI/ABQAAAAIAAO1Dk0SWQphZgIAAHIFAAAaACQAAAAAAAAAIAAAAGQ3AABQcm9wZXJ0aWVzL0Fz + c2VtYmx5SW5mby5jcwoAIAAAAAAAAQAYADhpyL4fNNQByQbGvh801AHJBsa+HzTUAVBLAQI/ABQA + AAAAAAS1Dk0AAAAAAAAAAAAAAAAbACQAAAAAAAAAEAAAAAI6AABQcm9wZXJ0aWVzL1B1Ymxpc2hQ + cm9maWxlcy8KACAAAAAAAAEAGADY2q+/HzTUAdjar78fNNQBrBSrvx801AFQSwECPwAUAAAACAAE + tQ5NTRCUYGsCAAA8BQAAQAAkAAAAAAAAACAAAAA7OgAAUHJvcGVydGllcy9QdWJsaXNoUHJvZmls + ZXMvY2xpN2ZuNXJyaHVydWV3b3Awei1XZWItRGVwbG95LnB1YnhtbAoAIAAAAAAAAQAYAEPE2r8f + NNQB2Nqvvx801AHY2q+/HzTUAVBLAQI/ABQAAAAIAAS1Dk3ZbOUttAAAANUAAAALACQAAAAAAAAA + IAAAAAQ9AABwdWJsaXNoLmNtZAoAIAAAAAAAAQAYAJ77MsAfNNQB2JsRwB801AHYmxHAHzTUAVBL + AQI/ABQAAAAIAAO1Dk0v4BxG6wEAAH8DAAAJACQAAAAAAAAAIAAAAOE9AAByZWFkbWUubWQKACAA + AAAAAAEAGADJ8tG+HzTUAcny0b4fNNQByfLRvh801AFQSwECPwAUAAAACAADtQ5NStW77t8FAACV + GQAACgAkAAAAAAAAACAAAADzPwAAV2ViLmNvbmZpZwoAIAAAAAAAAQAYAIrLyr4fNNQBisvKvh80 + 1AGKy8q+HzTUAVBLAQI/ABQAAAAIAAO1Dk2oZSfpZwIAABMFAAAQACQAAAAAAAAAIAAAAPpFAABX + ZWIuRGVidWcuY29uZmlnCgAgAAAAAAABABgAOGnIvh801AE4aci+HzTUAThpyL4fNNQBUEsBAj8A + FAAAAAgAA7UOTWOmHbN9AgAAUAUAABIAJAAAAAAAAAAgAAAAj0gAAFdlYi5SZWxlYXNlLmNvbmZp + ZwoAIAAAAAAAAQAYAIrLyr4fNNQBisvKvh801AGKy8q+HzTUAVBLBQYAAAAAJQAlAIgPAAA8SwAA + AAA= + headers: + cache-control: [no-cache] + content-length: ['23258'] + content-type: [application/x-zip-compressed] + date: ['Tue, 14 Aug 2018 22:40:13 GMT'] + etag: ['"d9153ee33602d608"'] + expires: ['-1'] + last-modified: ['Tue, 14 Aug 2018 22:40:08 GMT'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + set-cookie: [ARRAffinity=7d1d1d94161133c2c1257779d1c4af3b85fe3dcfe5d7d2072cd743f58200646e;Path=/;HttpOnly;Domain=cli7fn5rrhuruewop0z.scm.azurewebsites.net] + x-aspnet-version: [4.0.30319] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot publish] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","name":"cli000002","type":"Microsoft.BotService/botServices","etag":"W/\"datetime''2018-08-14T22%3A39%3A07.5410872Z''\"","location":"global","sku":{"name":"F0"},"kind":"sdk","tags":{},"properties":{"displayName":"cli000002","description":"","iconUrl":"//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png","endpoint":"https://cli000002op0z.azurewebsites.net/api/messages","msaAppId":"0cc66483-d276-4830-9afd-9fe6b654a255","developerAppInsightKey":"685f7952-d4eb-49cd-a129-4ebf0a8a26d5","developerAppInsightsApplicationId":"cli000002di2zzf","luisAppIds":[],"endpointVersion":"3.0","configuredChannels":["webchat"],"enabledChannels":["webchat","directline"],"isDeveloperAppInsightsApiKeySet":false,"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['922'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:40:14 GMT'] + etag: [W/"datetime'2018-08-14T22%3A39%3A07.5410872Z'"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot publish] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-web/0.35.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z/config/publishingcredentials/list?api-version=2016-08-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z/publishingcredentials/$cli000002op0z","name":"cli000002op0z","type":"Microsoft.Web/sites/publishingcredentials","location":"Central + US","properties":{"name":null,"publishingUserName":"$cli000002op0z","publishingPassword":"Tw1oWlCb2XTXA9ZCE5uzlg5gqoozufRPir7WBGqHLt2Gdsz0wcnGABLR1dEn","publishingPasswordHash":null,"publishingPasswordHashSalt":null,"metadata":null,"isDeleted":false,"scmUri":"https://$cli000002op0z:Tw1oWlCb2XTXA9ZCE5uzlg5gqoozufRPir7WBGqHLt2Gdsz0wcnGABLR1dEn@cli000002op0z.scm.azurewebsites.net"}}'} + headers: + cache-control: [no-cache] + content-length: ['689'] + content-type: [application/json] + date: ['Tue, 14 Aug 2018 22:40:15 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-resource-requests: ['11999'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot publish] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-web/0.35.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z?api-version=2016-08-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z","name":"cli000002op0z","type":"Microsoft.Web/sites","kind":"app","location":"Central + US","properties":{"name":"cli000002op0z","state":"Running","hostNames":["cli000002op0z.azurewebsites.net"],"webSpace":"clitest.rg000001-CentralUSwebspace","selfLink":"https://waws-prod-dm1-087.api.azurewebsites.windows.net:454/subscriptions/00000000-0000-0000-0000-000000000000/webspaces/clitest.rg000001-CentralUSwebspace/sites/cli000002op0z","repositorySiteName":"cli000002op0z","owner":null,"usageState":"Normal","enabled":true,"adminEnabled":true,"enabledHostNames":["cli000002op0z.azurewebsites.net","cli000002op0z.scm.azurewebsites.net"],"siteProperties":{"metadata":null,"properties":[{"name":"LinuxFxVersion","value":""},{"name":"WindowsFxVersion","value":null}],"appSettings":null},"availabilityState":"Normal","sslCertificates":null,"csrs":[],"cers":null,"siteMode":null,"hostNameSslStates":[{"name":"cli000002op0z.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Standard"},{"name":"cli000002op0z.scm.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Repository"}],"computeMode":null,"serverFarm":null,"serverFarmId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002","reserved":false,"isXenon":false,"lastModifiedTimeUtc":"2018-08-14T22:39:25.5766667","storageRecoveryDefaultState":"Running","contentAvailabilityState":"Normal","runtimeAvailabilityState":"Normal","siteConfig":null,"deploymentId":"cli000002op0z","trafficManagerHostNames":null,"sku":"Standard","scmSiteAlsoStopped":false,"targetSwapSlot":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"clientAffinityEnabled":true,"clientCertEnabled":false,"hostNamesDisabled":false,"domainVerificationIdentifiers":null,"kind":"app","outboundIpAddresses":"52.173.139.99,52.173.188.229,52.173.184.127,52.173.186.243,52.173.190.95","possibleOutboundIpAddresses":"52.173.139.99,52.173.188.229,52.173.184.127,52.173.186.243,52.173.190.95,52.176.107.202,52.173.184.202,52.173.190.226","containerSize":0,"dailyMemoryTimeQuota":0,"suspendedTill":null,"siteDisabledReason":0,"functionExecutionUnitsCache":null,"maxNumberOfWorkers":null,"homeStamp":"waws-prod-dm1-087","cloningInfo":null,"hostingEnvironmentId":null,"tags":null,"resourceGroup":"clitest.rg000001","defaultHostName":"cli000002op0z.azurewebsites.net","slotSwapStatus":null,"httpsOnly":false}}'} + headers: + cache-control: [no-cache] + content-length: ['2903'] + content-type: [application/json] + date: ['Tue, 14 Aug 2018 22:40:16 GMT'] + etag: ['"1D4341FA7488A8B"'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: '{"command": "rm -rf clirepo", "dir": "site"}' + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['44'] + User-Agent: [python-requests/2.19.1] + content-type: [application/json] + method: POST + uri: https://cli000002op0z.scm.azurewebsites.net/api/command + response: + body: {string: '{"Output":"","Error":"","ExitCode":0}'} + headers: + cache-control: [no-cache] + content-length: ['37'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:40:16 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + set-cookie: [ARRAffinity=7d1d1d94161133c2c1257779d1c4af3b85fe3dcfe5d7d2072cd743f58200646e;Path=/;HttpOnly;Domain=cli7fn5rrhuruewop0z.scm.azurewebsites.net] + vary: [Accept-Encoding] + x-aspnet-version: [4.0.30319] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python-requests/2.19.1] + content-type: [application/json] + method: PUT + uri: https://cli000002op0z.scm.azurewebsites.net/api/vfs/site/clirepo/ + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 22:40:17 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + set-cookie: [ARRAffinity=7d1d1d94161133c2c1257779d1c4af3b85fe3dcfe5d7d2072cd743f58200646e;Path=/;HttpOnly;Domain=cli7fn5rrhuruewop0z.scm.azurewebsites.net] + x-aspnet-version: [4.0.30319] + x-powered-by: [ASP.NET] + status: {code: 201, message: Created} +- request: + body: !!binary | + UEsDBBQAAAAAAAd9Dk0AAAAAAAAAAAAAAAAKAAAAQXBwX1N0YXJ0L1BLAwQUAAAAAAAHfQ5NAAAA + AAAAAAAAAAAADAAAAENvbnRyb2xsZXJzL1BLAwQUAAAAAAAHfQ5NAAAAAAAAAAAAAAAACAAAAERp + YWxvZ3MvUEsDBBQAAAAAAAd9Dk0AAAAAAAAAAAAAAAASAAAAUG9zdERlcGxveVNjcmlwdHMvUEsD + BBQAAAAAAAd9Dk0AAAAAAAAAAAAAAAALAAAAUHJvcGVydGllcy9QSwMEFAAAAAgAB30OTZmrGOwg + AAAAHgAAAAsAAAAuZGVwbG95bWVudItOzs9Ly0yP5eVKzs/NTcxLUbBVSEktyMmv1EvOTQEAUEsD + BBQAAAAIAAd9Dk3cKiruMQAAADsAAAAKAAAALmdpdGlnbm9yZctPytLn5UrKzAOSBYnJ2YnpqcVA + ppZeQWlSRW6OXmlxahGIm1xcUJSfBeXqlYHUAABQSwMEFAAAAAgAB30OTUWH39V9AAAArgAAAAkA + AABidWlsZC5jbWRzSE3OyFfIT0vj5SpOLcnJT07M4eUCsxVcXAN8/CN9Xf1C4oP9Q4OcXW0h4p5+ + 8QE+js6u8QgFtoYgTZlpCqkVmcUlCnp6MeXl5UX5+SUxKakFOfmVesm5KQoavFwKCgWlxRkpSApA + YkA7cxQQCsHK8guAtCbI1NS8FLizAFBLAwQUAAAACAAHfQ5NAB5l98QBAAARBAAACwAAAGRlZmF1 + bHQuaHRttVPBjtMwEL0j8Q9DOOwptcqBRVUapKUVIBAgdTlwdJJJY63tiezxlvL1jJPuFtAeFiEi + Rbaf543f84yrZ5vPb66/fdnCwM7WT59U9yPqTkaQr2LDFutKzeMJdMga2kGHiLwuEvflqwJUpqoT + t2qoO0Lko8V10ZPnstfO2OPqYod7Qvj6/qK4yzYs651xo8VtO9AVsSRZ3u2Npy0QHHoKgBJj/B5S + xADGj4llmgEe5qCrZGyHYVGp8ZzkHQYELX8khzBoL+Ks8TcRmGCPLEp1YOxWv7HmybRI9pfVhFhT + VxqGgP26GJjHuFKqozYunGkDRep50ZJT6MsUVUNyAUE7PFC4kTD2yBPYzGrLGSrpFsOtwUNRvz2L + gikoexRGhIPhARafttdiUUtlRMgjpAXMeRf/rLAz2tI+vm6C9u2wXl5evnhZ6h8pYJmjPX7nov6I + OnhwlC+9ISnRZmZJwf6sE+w2H6bC/rWjR1qZtKmzwphvuMWylaY0PlGKZYejpaNDz8+locs0Prw5 + FyXrlzzQUifufAdCSSOcGXBm/A8/HTZpn53EEl2ymikU9SaDcKQUsraHjq3UfQvPPV6p/ETnNzu/ + +59QSwMEFAAAAAgAB30OTc3pgcEjBQAAOg4AAAoAAABkZXBsb3kuY21kzVdbj9pGFH5H4j+cIFnK + VlmzmyZVxYoqBEyCwq2YTRMJyZq1xzBZe8aZGS9LH/rbe2ZsA8s6ado+JDyA8bnMuXznMq9YDC3H + 70+C5aLX94Kx994bOy2Yer9D60ULXtFwI0DEcbPRbHQ6cF77saR314NrGNAsEbuUcg1+KFmmLek9 + lYoJ3oFL98K9fPlVTZY4l1TSzzlTTFP1mL3kQrUs3gEXEXU/KWBcaZIkNGo2thuUtwR4/hvPEzBf + zcZoCI63WMwWhZvWywt42mwAWD8nTCnG13uN9J6GuSY3CX0GWUKJotUhFcszwACSRFIS7Q4GQEpu + KagcbWAaQsLhhgLyhBukxVKkEOZSmiBRfsek4CZgrjFjLbQAKqWQzcZZ6aZPdZ4dgmDeKqoTEZIE + 5Y11EU3IDr/vM8JNoA2L7y2ht1iOhr3+0u86f0XZheO6KyI1i0moleHBeExnSxh4w9HUG+DvfDz7 + OPGmy8CfXS/6XhEao+kRqdJYmvllTcve4g0qqNNUkLrO3kxntd1upRC6XuvU+7AMJr3paOj5y2De + W749qH1Me6A3JZzFVGmjFeBE73zhvR/Nrv063YX2eo4vnABwVm+/qZDA/zjtB/3JoFCPSR2ViLrN + oxzUjod7OJYUg8h3huiXxNACMEv3YDSiRhLO14gRxRKEU+nnkwPen5R4P8ZYacPYgCnZwadcaZA5 + 5+bMllFrzmzBVuRJhDhXAh/lbRX0Bw51HZJlEdHEWaFtq0rYDdPIhuMrEPEm83qAIKHraJpmzioI + gsg2l6X5KwmPROpUMv2x15sG41m/Nw5O5bXM6SEf1fFfkShMQV7vw8hfYns8oWN7lBG0FbQ/1xGN + cHobMVlPPDVk4r++Ho0HBeRsaibqJmdJNCd6M6Ax46ahGSePObvOXIq1JOkQk62e3v/6y5mzQgYj + uLp84V6sXjNevXCxj2H/qNNr2sr3/tjWdhgcJ+3e2Gir4S2m3NaCO8Vg/EFvoJdlCQuJxo4H0V7e + LdvmpQsLrEeBTXiav6EaMhLekrWZJxj+9ghaExZKoUSs3ddCuz5Jsce7PjM/Hp5oXqqEl8OwVcDC + 1l7Hs4OB9tMIeL5G3bI86UHKi06Jefm2c76tYqup8NwFm1xAkt5QMFUiJJE79FNv9j46o2kwH5vR + fjCsmu+XX/Kp5RxjDdn/q1uhyqT41II2F4lYC2jfUXkjcKrvOim0dafwAB8yllFMLsXBXyChL7Jd + L0ksvJdixulQJBGV0M46wbxIpGkEAya7NWV21cu1mBOsD6pxSfjTYgQh0xc8Zmv85jQ0r3wtEVGq + G2Nro1cFNZeWu7ugduJfXSvqb4ikUV+kGUsKohUwxvgiyc2bR4ZUUXJXqxbYDauIKM48H/vWGXhj + 3/tB4p91fvx4lW3zH+cZlsbPrp2Xxbj8f3XwYMIh//kdvLyA87h2Kpzrk9d2vzEEjoTHG4qhZEip + 3y4MlUHLXTN95W7WV+6hxV0Vj2a0/ruu8b0/zUZhFC9HD5TBhlCkuEBFIAWig2M32xANW4b5KC4g + Of7bUF65c5SkwzJsn8AkKug6PzUbNp2O/Y8Ashedo+W/zP1FqzhhSJhZ3Ok9031c7bvHrM8q87p7 + bYYP2jcPrhPWpdJA9LC0yWrvlZbDhigQod3+I4hyU02wxVFmLjoPZ1gBRnMO7v+eER7TO5ocE4Z4 + kxjm3FZmcc8pTHgsU5l7uWc4lm02nhb4sHk5MX3IOFPm3qLyMKRKxTkuimjf31BLAwQUAAAACAAH + fQ5Nfrpb3mIAAABpAAAACwAAAEdsb2JhbC5hc2F4s1F1UHAsKMjJTE4syczPU3DOT0l1Ss3IzEux + VXLPyU9KzNFLLE6s0EsuVlLwzMtILcosKbZVCs7MLchJdU3OyHfKL9ELT01yLMhEMkVJwScxL700 + MT3VVslZWUlB1Y6XCwBQSwMEFAAAAAgAB30OTS3R2BnKAgAAHwcAAA4AAABHbG9iYWwuYXNheC5j + c51VW2/aMBR+r8R/OOMpSDS89yax0nVsY9KWVn2YpspxToJVx858oWNV//uOHQoB2q6aFS4+18/f + +QzeClXB2DtdMn7cO/Bxny2twzq9wTz96Fyzaz/XqhSVN8wJrXad37GUyLc8M8GNtrp06XtNLy9k + gSYd//EG/xEzEUzqyr4tKp0qh0Yx+VI84VYETRvy9w4Uq9E2jCNkom4kXvC5pqjewUPvAGg1PpeC + A5fMWiAqxo0YNw2Z4rHhaJeljrMtsKoTaxntqDMWsNCigE7obeaYcclgE9tJC2s0AkIFGcFmFR7B + 1VxYoIdBZZA5sA15nQaDlSA8BtwcqZ9YMIdgXfsec6HUBpbaG8iJDNhrcxPy9EIUCKxgDdWyMSUO + Cq5YLnEI59rW2k7yIWTfvrSuIbR1gTMFkcoalWs76Xv1bq/RB4q3LATSMVQBheY+pERChmCRjjkn + Ru3RaFQJN/d5ynU9Wg9zRISsZn8YEYRxdnvQoBeEPtZLr5uCSCCTY0KhSbZDw8rbWnB6tu972Dd1 + UkjtLeszXXiJicL7lpPVfmwt1rlcppfoLn4j945U+WRMBoPB8S70Dk3X7d3csP8kguczFszESSOc + QsARU4ipCXMsJGKydW9nTFEpuoZNk6ELuOyPfmxGgv6kc7tq1v85OA5oDP7ywtDEtu7U1mWGr75C + B3Sn7oLcXjnalQZvcS2mIKCpmmGtzXKtVqGIWFaALqOkCyyZlyT1yMQqaAhekTSi3kIQ14YgNloV + gTpJ84Ycpb5/EcguaZOVFCf5FnN9HpFCkYM3oj+EjuEOl/3/p+iNuJ7Y2UBqWy60pGnKwNZhveFv + 70a8pNuEk+rblMHzGWGln3GJxcm0y8nJanN2lnQUHyJv1zGvlRzbDGWZvBaS0RAlTkkHTPFw4udO + 9RjMXcOl1DmTW1pf/2Nh0v6Qt/s1C90Sj+1X+qDnL1BLAwQUAAAACAAHfQ5NVBnGXlgLAAATQAAA + KQAAAE1pY3Jvc29mdC5Cb3QuU2FtcGxlLlNpbXBsZUVjaG9Cb3QuY3Nwcm9q1Vttb9s4Ev5+wP0H + 1lggDRDL8mviruPCsZM2e0kbRGl7wPlwoCXK1lYSVZJK4nb732+od9myraR2kv3S3ZDD4cOHM8Oh + POy9vXdsdEsYt6h7XKkragURV6eG5U6PK74wq0eVt/1//qN3xeifRBfohlKbf07kG3LAiJjYt8UN + ZlMi+HHlxLdso4JAswt/zYTw3tRqXJ8RB3PFsXRGOTWFolOnZpBbYlOPsJrDJ3JYraGqzQrMiFDv + 3PEoEyia+riijD2sf8VTwseXiZYhNciIOgpI3VoGAFNGVHwgYkgdz7IJu7KxMClzFFibUh8Hkzxm + uMeoxytoSF3DEsHiT+8tLvjrveeHtbdfQbUHcAaKlFgTBwSNAgR5mQeu/pETrFnHb68vtcCuTu8F + caX18SssZvvjpCNrmfs5Kh2HumtWsB3VGewAGixazN8x6ntBEzTCxKY19RmWk2dhIACQ69zfQ8fH + aG8PVfojMvGnvVquO1YYm8Cirrg9o2bgzodXn3q1uCtRwajh6yJaWdxaK27WAgeOG8Hxe7V8U6pU + btk73zL6P7rDw9PmoNWpnnTUs2pLbTeq3UGjXh0Nj0b1QbfVaNQ7P4MZkzF5NTdzj8hm3v/RbHX1 + 9lG7Xu20DbNarxu42m0etaqqqnbak6NWx2zUf/7+w8REbRFdrTbVeiDWrE7M1gTEdLVlHnaJOdHT + KVP90bwffeH5QXP/wpowzOa9WqYtkhp43ohwa+oSdkZtcNB+tOkW4b3acm807JqCF2OHcPAZ0tcs + x7PJqT6jJ1T0avnOeCLOiTOx57JjcUCuL5IPg/AZg6Y7yr7Ge3PbUjq92orOaOgnTs7PtdN7jxHO + +4L5pFfLt0WCaYumXVxJN60tdw1c6s4d6vOBL2bEFZYeWn6B6BfLNehdCUFAM7Qx55Z+ZXnEtlxy + CXEylYT+dzadYBs2wI70vKdcnEGMSaU++O+IuAqDVhhmNIGdxFFrG/oXSIR9N1P1gV0tOH8+Hqx3 + /b+W/DcIAX+FHix9OUIRNGtzZwKRKdqrXFNWLDBc07ftSCZryB89YTnWd+jHNgclyd85d5DxsD+x + 3HHsC0FDMocJOwHr4AK7gvdHpyef3v1+cz0YnsoJ853RmFPGKLsmktw+hE/HA3POtkViXzBzIRO5 + kFlCv9Wr5f6Ot5PK1v5Qq3e7R7B74Z+72YxrYhPMyYrtCHj1jAl17fk6qsPt2gLTL5Xjc0Gc3OF3 + TUzCIK8k6NzVbd8gxxXwdmpi/QDFyWRTaUMqpB6gIeSSPiPHLvEFw/YBuvIn4M3/IvMb+pW4x/XD + o04Tm/XWRFVbLQMfIFidDuGBsgHTZ5aAsC7HX2rnF/EGAYb3lhuSmeQrEQRFztwY29Zk7BLRUpN2 + Q3pMMixRdMWsWyxI/ybYxvivOHokS12z9uGMUdfKrF0FDI0ya29OjLpZJ2aneTRRjab+6LVHEBRN + nlKGEgDIUBB374yCUwj0Yp5E0ZSKjjSCMlRMDg9xW2936t1mi6hH3UdTsQBF6UDC2ky4aC/1F3Hy + qEUr2jdbIwxuX3+n5Segf4GINIUefAeQcLnRfQfOfq4MbQv+m/IBd4dGOUKa9YnZPGp3sNHstEiz + /WhCVoEbnSghmgw5mxayRY5goZ/lNRtuHYxkCSppMDvjJwcsuM+qmUiyXnpn8SWdFlJlJbjFZd2s + qdQh5iuNZ6Etg0iJgSSMdVYIbsOQsvoKzt+/GyXrzulfokYa6gskJnSg8vQE4tsm573FBWXzF0hP + hKw8QfGAbVEEGbgLS6AvKc4kmDbTkopug5CyXzCf4STbxgfbohSgtIonOPWG2gwzr5J+9VgrPcIC + K6dGZjPayuGzpRUxGiUAUZhLJCLbMNVA2Uf57wtaf4BnEwOh0NY4kHm9BdiXsvBnZ2MB2SZeFsW3 + wdC5QYKbkPzkaCsXdDq13Gk2etWV1jNRVAhNCRClgaq+ccD2WYJIKKhObSX9aSUf71tqU4ULZ7vd + egHEFaANon0rhClRFsb9zVqeIOAXg8jQ3XgxBpqAUxplTTQdsjsj5cpHj7jnRpQHvWzmclAfw2Ne + wfZZDRjh2SPkpZAYIlPaZTmL5LdB0TXhIjqTrn2YwiFZK3vO9HcZGRhV9ptwe73wE0S4+GfC4Fqb + +6Ume996ThJXI7zELsiy4DN/vTBvWT32ybnV4A4IaFNWD4MA85S+W4RHOSxHXiy+M9o+kDsBp7qc + +A+etb5uaetTsdEySWfSwB1MiPFonhagKN2Fy+li/+ODmDbngjhhei3/0YhIE5z198xoaGFU/eNO + POcZsQHa8iGxacAvE/yBiFJsyvKp90JsuOIvCCtnlDlYiNzNpR1E+ueKmQPuSXRfyGTgWen1rpH7 + DWr1Mnbn5YtzAsJr8s2Ho68U5fHBCFdRC9vW9yCUlxqpeSAr6X++23ceydJte6H7l20eqFVGcxc7 + li5DSymW5Jjwp8nS4pmqoPgDQamx8vsddcEuQ2+XEAeuS0WgqZSKUtM8bOkPi70jhu/AW8qqLw1D + esYLjSTy58UVcSRGvvPgkUwE/yML0V4mVRG4jWzFcrtm7d+OXdIvM1lyaZN9kOtDhCHMYxYnDxoG + K1AuLPdbUhJcy5dELVdIwVrAoUWqyQiL6pWZyEaPJbGw3lHBHN+vE5ML1wO6HgIp+NkiU7Llef/T + BGZiHBpOyL+i89zMC4MkFEZtWeQ9vgSzlZaYtm0YPILjhU75WJa8hv+/YUCGDimZGueIeMSVSdsn + COX9jJgsn8t2xfYaqV45U1rvO47rcM9dk2bwPWLTY1dd2CskK/Bckt/OoL4wFly10HTfV61TKl49 + SVTwuMVpllgprJb/bHEf25rwDYtGITNbq7n32+sCibjivdKvq7I8vUAk0a8FNf0ygC3qTXtSfSue + CDQbmdcA4+x049tihAAq1R/xsalINcZ86uKJTS41INimc3DGj6Ypa6CjetKV3StnWfnG4sRywxcQ + i78nKiJ847PmmUaWvzBOJElX7lNJrifVu24zXgWb8cAXIuv2SJrJr2EMqqazDz8klhRAkTmnPnRm + 41vK0kCC3n06Hx1Xyj10SH0RNAHSaO5UW6YfxcX90dkc/ZETkMU0EMisqSsr+iPBhcbcgFH4dEtW + u4X1gIFIs3t4JGNAUd/64Z8Dl6gVDP6cyzOC0QD/E7P70dsym+rYnkFq8qbZPWqBiqg7N+TDzcVl + /olB/yyseS/oWeRu6HNBnRBOPGyxOTcm27MEpba2V8O3JOzSSHDH5ecuzMXkK4Z47rUyGcOorbWM + Xm3RBJN4vWSxyYuZBeuO3kMg+QhFVrhySEazLygClwx9FVznhJiQlycvBa8Y8TAjcJ0P3wzG0xfF + PxRVtN+QezDPmcVlIhy8SWRxHsZRMDOKjtHXfB+JGRYIpkCOBXbsThEcJEIO1uFA9yG5UxDwFo2L + ICP5fRtgIkGRQe9cm2IDBkFehxBARY7ss1wz+AgRfH7mhKDIFqd04YmjeQdR+GvtLeSDX8G9m41G + XW0r6GaWYgoekACmH+pPJarRD1YZb0bxcSDFsrHo1a6e5EksMr7+J773Cwao//vmTfgZRr6gSzDv + 7x2gLQPYz6RBD1z0k7/C3A5VTwy7HMEPqI9eBLQkFx2lj2JsJzjSx5vRI7nwj1fVKrqh4PCGZc7R + nPoMBTrjO/gBwoYRtgvMv0JQ4EA4kmk0NWXIQNEMaAJH2h3CroF8F6KCnB9ZQkFJrP4I0gxxy7Fs + zBCJgyzyKFy0OTRY8vOBDDRL70+jOZTlcByG20xszS8vJzswIRquEq1Wi5OuKzh0w4RT05nlCT6O + rg8acCILcIqSptiiyg5e97xZGf8ShAeMX4NiByZZiHZHLihXlRzv/f8DUEsDBBQAAAAIAAd9Dk0s + VoeafgEAAAcEAAAmAAAATWljcm9zb2Z0LkJvdC5TYW1wbGUuU2ltcGxlRWNob0JvdC5zbG6lkl1P + gzAUhq9Hwn8geDOT0bSs2+TCC2BUL9QsEr1nUGZNoYQPEzP33z1kH45tmmVe0b59es573qJrjyIu + VaXS2ngVVRNJI6ybRCgjVLKphcoNJiQfGEyVWQQML6tWJDbCWNeuDi4RqmtrZS1s8Vs4QRjZI2pj + RHRomousyX5BMaAU28Rp0Vmp3nlc980lcwNMAx9bQ0yYRch0aHmMehbGPqZs4gTM81fmNVQwd0Mh + T9UojLJCchSK9hPEbwpEc3AOheKqgP4tvHT8STB06djyxphZFI9sy3FtYk39mylxHWrbZLwydS3I + k41nXbuTah5JXeutFyGIMGN/m62v8lQsmjJqNzMZ1SmkXLUTFCXfQnC7N+XzZvHl5p+GP3uB486+ + BZ655FHF95ADBSAw1rFxZGtj+w9Xqqr3bZ2XCeq4RS40++B+ujg1x0UVvUbIBOF/1DsIq+PxOMhL + q/74vOBxtrnDIxW8rAU/9Z/ci2S3f1IJB4K5D2FwssFO0bVvUEsDBBQAAAAIAAd9Dk35A3JjEgIA + AGcKAAAPAAAAcGFja2FnZXMuY29uZmlntZbdbtpAEIXvK/UdrL3vBvOXVoJGBKiStCRRiJLrrT24 + K+wda3cMoU/fMSGJTVEig7kwBmF9s3Pm7Fn3zp6S2FuAdRpNX/iyITwwAYbaRH2R0ezLV3H2/fOn + XqqCuYrA8XfPe/nl6bAvBhnhTAXijdKSHdkUHikbAf2wKoEl2nlfGKB2V3gn/zOGfywaHcipjgyE + BVRDtiqixoY0rV4fLbC60petSqyJDiw6nJEcuPQaSD7C70GqC0xutB6mHMYaDB0HjRaOAubbBbra + Fv03syBHGGQJKzE6F0VfNpu5NQ/g/oTVg8pi2laDLb83+Rz5ynQcgi3Z389lqGbbndDnpR8HfaEd + oV3VCx+iMRAwtz7sEEMYYSJvLS40L9yxQ4g9OMQk1THY21jRDG2yNVJ/z3IjRUqOw6Tk6dO9HbLG + 3eSfdQKnYBc6ALcrNPZHX4awzs4JKx7LXxhFfAiUZPVluxY2z5IwwFiOnwhMTndb42vLdqPV6Pqd + Tr0Vi3Watffj5E0K5jLcbIOj1LrHOZTk6hyAzrP8ZSOVR9B8bweFsIAY03VMA3fMCwxWfUE2gw8K + 3oGjjWvvMu4qgZJIVQ/7N/CjNiEu3XPWs/4zHWVWEXMnyvDj5UR6t7sdda5hSWzSvNCVQ1Ngfauc + NdOVI0h2TlVeLemgyW7Y05Q7V/FBuVASdMqRzn8UgKcfa9g7eX1p/AdQSwMEFAAAAAgAB30OTdls + 5S20AAAA1QAAAAsAAABwdWJsaXNoLmNtZCXLwQqCQBSF4b1P4QsoFogUuMgSWxhJBUo7R0cduM4d + 78xg+fRlrQ78nE/anhuXuDZI3Bk1swJa9yIaQo2d8RM0/r0eFXD/LtZJmwHXqEG6ntqfuAJ8X2Wy + utiQ5WstLAOhh4KwE8DjBkTUyZBosN/DjCpYvJIz7499ZdlrhJ+rtZ6R2vgxb7CEI9tWj+qwex7T + 0C7Qh/2EuNjuVgiKyiSbzrnZZq1egrmR2SHJb5s2lY7zAVBLAwQUAAAACAAHfQ5NL+AcRu4BAAB/ + AwAACQAAAHJlYWRtZS5tZHVTS4/TMBC+R8p/GKmHgFRSwYKAve2KRSoSsKLABSHqOJPGquOx/NjQ + XfHfGbtJKUhcIsXzzcz3sBcL+OIRru6jQxDWgkd3pyQCtiqQK4uyeFrDIPYIklr+9MLsEJSB0COQ + 0cr8wT6rgSweS5KMJ40wKtPSCMK04KJJ87bbbVk0Uem2lkM7/ZfF4sjkq/JRaNiE2CqCY2EB1wme + h7TYxF0mxWONJtGCp+jkxO9e2QzDn8EJGeYa89UkeW5HusUzqg+3nz6++/Hh6v3Nr9prk4B/MSiL + ixqa03aWkNU1FMri+RmHufiNK50TA47k9k9wiFqwNd8f9SFYf7lazSf1Oa6WNKwel8WLOtlmkHmn + JTMWAkHq5/YsoicfLi9ev3o5u3MbG618D42Q+3S2/kfEEpza9QGkVnLPoZ2rzsw96rS0mgZVachb + Xtwp55mLGhDstEN0Ad1JtzK7c/tzLuujRXODddQpjR6CaJYThWo9WHKhyjlcOxo5eBZZ3bKyN2g1 + HTbSKRt8lenZ3POwWX++maKahm8wBKbgM+HTFWIP+TRS9BxnwJ0TQVG+eusODhShF3fImkO0/8Eu + kwKTsC5FzZdYaxAx0MBlTkAf+B4mmtjCmJAGx+lpeBAuifc911hTsmJyyKEln17KoT7yLYvfUEsD + BBQAAAAIAAd9Dk1K1bvu3wUAAJUZAAAKAAAAV2ViLmNvbmZpZ+VZbW/bNhD+XqD/gdOAfdhs2o7f + 4sROkeYFTdckRpJ1KDBgoKSTTUQiFZKS63+/o/ViyU6KFG09tIUdxzmRx3sePjySl/Grj1FIUlCa + SzFxOrTtEBCe9LmYTZzEBM1959XRyxfjX5rNly8IOZeKRFIB4SKQKmIGuxF8z+WCGEk8KQI+S/D5 + UiaKHN9O6dXZHWFxHHJv1bhB4hCYBpJyzY11OTcmPmi1ZpJG3FNSy8BQT0atYBFycd969Q4/L/xJ + t93ZH45sh2bTBlQMtfJ6ZO256RY8a9IrG1ox8ifDPhOGmyU5VyyChVT3pOa1kQX5vAhPJ3vdYW+w + n4W3GllnkRCB3icOrMYqh3KIWcZovl1qAxE9ZYbRLBx6IQwowUJ6sormnIeQPyp75yAbZMPeIO/z + uRzQtn01yEkSGpyRiYDEKBY2yDRxcTb+hOWdvAcxcYdD1vf6g86o24P2/sghCh4SrmAKKuI6E0bA + Qg0OaWVEtx5heoyTfAvGoHBq1CexzwwQMwec9AU380walwWT5DiOyYVPmPAfezJlWiMwf80q831y + D8uJUzbEdhe+Q1IWJkhoEeVTTQuPWx3GrU0Iheoz3TPig/YUjzP1BGQBLs2YIN6ciRloogGeK+i9 + br87GNKXL7IR7uZAAhmGcoHDE2aM4m5i0KXHBHEBPRurWOSRjO0INwnOfARHxLAZzVxYyWVq+hvc + o8JGau2xuZqBKQUzcXp0sKbMsrDhI2e+cL0oXY+9RBsZnSkllcbl5SOX10FQ4R9RxzzMVpsPboIp + xagEdfTpIJ4dbxlrEVQlyFtQmNYKjz4EDNfBqfSSCBfiGm2Ai0tXufIwPakKH7mMcq3kfujcRHXS + qn7GrceHG6NI/BDX57qfgkimkGeIs48GhF1v6Er/pcI3WfOmzQczTEngN3s2Qbee6H89vbu4vrrF + DODmXZ9ue3dzfHL2VEsL+PNCipmZT5zfqWP3Ehe/baQ3FBPN+2p6p5jQAagbzDOgTRlBrAAzns/N + KuXwcohLlFZDZXrI01taI2LcqjFblUVFBuPcRZkdtIbIDZevubDbHcGdUGjc9JQ40N4cIqab5QJu + opQPmI5o2nHWPPkQg/Bxgo9zVzXV5LYLP8v8OaNVQiCMMWYEXs/ITrfjBt39/oD53UEPun2nrkc3 + C/gGfMzSHqaF0H9f2cHtq9nNfjtEwKJ8WBqryn0axJfiu0y9b4KtT/dodxNbadwNNvyZMsz4P9bk + XcHC4IZud6y3WopHwLWZ3wtg4O6xAQPATdTLjxdOfr74DLjtHO7oMbij3Wn1Cgx9g1sOnSoeYfZJ + H5tWt90N+sEw6HT8fpt12VdB3kPR7o02oa+tO8R+vjoX27PPcyT9FbD/36u4sNrdJaQrpJq+XZid + we/Q3jb83PgN4ZdnYfpaGnvFEBiiVDuC3aUdFDftbea2wroz4K8THvrws8Kmbzie3dXyZ4V/nBgZ + sGcdT34U+KsKgz0Ocw80PQk5tttZrhtub/ClcXfor+3nT4b5zI++G8Tj1sadLL/OVS9uxRXfw23b + l1G91FC7WxcmEjIxS/CwPnG8Xw89je85U7FDoLjcThzq6eLGuubvBIc4lREeC2XKfXtzPZUGD0wn + ueNpyIwtJ9KTW+vQNi+aNsjnu1nX7jrPrd1tz+OCKYHEvYMUQjxJ4sTmo1yvylZ4v21ZOvKK78GA + tIS0fQ46g/7osDMY4cew3anN1yNEpu5h6urDlOuEhS7T3LN/r4pjdV5T9wt4ff/6e+S00ytJ7XXa + 7X1iy0FcwMG/lx/uPkzPJv/89pBIc4hXyPwbacmVpwsRgPqjWteoy7osbFTFP94oLG+UvPIDHno/ + Z/act/xU3TlQTBuVeJYg+k56LDx1txxsFZ0rFZGYWaOprsOqtSijRVo/hKH177v11LDloCymbcVR + NIgLDVTCyE2Ei5QpzoS5qh79s63wISw2wScZwTZZAcl+K7RW7KFbPKybV6ewHt64tT1dRT29+GfG + f1BLAwQUAAAACAAHfQ5NqGUn6WcCAAATBQAAEAAAAFdlYi5EZWJ1Zy5jb25maWd9VGFr2zAQ/V7o + f7jp0wa13Q4KXRenrM02CsnGmn7YV0U+22KyVKRz0/z7na3YTrMyCA747p7ee/fk2c1LY+AZfdDO + 5uIiPReAVrlC2yoXLZXJlbiZn56cnszeJQl8cx4a5xG0LZ1vJPEU8K8N3A9b3KTK2VJXQF7aMLU8 + 66AJaqKn6yyrXNpo5V1wJXF/k5Vbo+2f7GbJz/siv/h4eXX1CZIknhsRWx+RmK4N1y8F5WIPF1SN + jQxHmL9Xy2ThVNugpeRxYCMYEqCT0v0D3FugGgFfZPNkEDZo3PasfyXWSF+IvN60hEFMgmCrjQFV + S1th3/ksTYvgSoiQgvlaVB3ZNY/bimcdG8SQD2hQBlz/Wq7Rs+eCrTM72NYYaYiVJFULME5JYqcj + YKltEUBakAMdEFY2yLi1ZFMlFycSYrVb3Io0jsbn7JhRmMcCl2RRQAeWxzkYCgDHQ7lYSJKwdq1X + mB9L+XxvNWlp4I6bjKvy1W7fsrjlGmHF+8MC1qhar2mXP/oWD4/jjV6Pa8qP3e+qy+hKHl1637H+ + ILK9lFn2tsg+RFwOu0DYpJzQYWDMwH9T8IBPRir8Z/8+vo9zljRfidFT1QZyzVfvnQ9zCJFUt5sd + e3d4SUptMB3GfjjCuNENKtnlhbG7mxZiSpxFOEQegVtboO+JjAwO1IJ1BZ5NWNaBRV7EPpO9yAN3 + xZSykdmbwqDAUraGHrBg8Yqv43e06LXqy2lNjZiW2zCHnL1sWONPFiOO1z3YPJ9mZtgBQSBJbbjr + AS7P+evkxwO7WHkrzXRiNgU7e7WF+HoIQ/YqDX10pi/M/C9QSwMEFAAAAAgAB30OTWOmHbN9AgAA + UAUAABIAAABXZWIuUmVsZWFzZS5jb25maWd9VNtq20AQfQ/kH6b7lEAsJYVAmloOTdyWgN1SOw99 + Xa9G0tK9mL3Y8d93pLUlxw0FIcHOzJkzZ85q/PCqFWzQeWlNwW6yawZohC2lqQsWQzW6Yw+T87Pz + s/GH0Qi+WQfaOgRpKus0D1QF9ERP+bDFVSasqWQNwXHjh5SN9DJAE8L6Ps9rm2kpnPW2CpSv82qr + pPmTP8zo/VwWNx9v7+4+wWiU+ibE6BIS0TX+/rUMBdvDedGg5v4E8/d8NppaETWaMHo5sGEECdCO + 0n4Bng2EBgFfuV4rhBUqu73qjtgSw5cQnFzFgJ4NA8FWKgWi4abGLnPDVUSwFSRIRnwNipbskspN + TbWWBCLIBSrkHpe/Zkt0pDkj6dQOtg0mGmzOg2gYKCt4IKUTYCVN6YEb4Ac6wAzXSLgNJ1E5BQcS + bL6bPrIslab3+JSRn6QAhXhZQgtWpDo4BABOiwo25YHD0kYnsDgd5fOzkUFyBU+UpGxdzHf7lOkj + xQLWtD8sYYkiOhl2xYuLeNyONnrfr6k4Vb+NzpIqRVLpomV9yfL9KOP8/SE7E1HY73xAnZFDJ70o + ei3V3lRvmy9Q2w0O/S9KXMX6kkHfrTfQfy20wLXiAv8xj0vnqc4ESfepX4iIPlj91Tnr/AR8mqhd + 7I6EP75hlVSYHcp+2IDJDisUvDUbYbfX1CeLWYNwjNwDR1Oi64j0DI6kAmNLvBqwjAWDtMW9obsh + j1bDBov2zN4dDEqseFRhgSUNL+guf0eDToounDVBs8EZmjiknQT8ScOwf9eVZJ4MNWNsgcAHHqJ/ + 6gBur+nX5vqGrSed4WromA+3In+zhXR8cFL+xkqd74bf0+QvUEsDBBQAAAAIAAd9Dk0OCK4b1QEA + AFMFAAAZAAAAQXBwX1N0YXJ0L1dlYkFwaUNvbmZpZy5jc6VUbYsaMRD+Lvgfhvu0Qonf77Bg7ctZ + Wita2s8xO9pATLbJrMdV/O+dZNc7zS6FYlhYJnmeeZ+pg7Y7WOATORvclsTn4OzDcFD33Ys1ei2N + /iNJX6DWz4Fwn4li5oxBFYFBfELLTJVDvmj7O7/7iRvxSFTx/XBg5R5DJRXCWu8rgx/UL/fO0XBw + HA6AT1VvjFYQiB1SoIwMAVjBtNIzZ7d616BacJdwcLqEFe40W/ZFtNrQap8CBJWk0Sv9QlM84zHE + tEBAIg4hXL82bPHR+b0kNhBSDl/El2SiX7d8saiN+SFNjY/SliZmZQKdOzHfWefx4WZrHCx5qWiF + wZkDejZm8QlmnHQzkwGX3lXo6XkRq5CDi9HtDrSPTZyvgpjbEi1hmVmI+tgNNk7iPW5lbeisivnF + CCZvUwAR17VWjK61ZbWM58aEvOlqvIown6aeiHtU/E9PZPRTGqKsY3k+YLqct/U6tzrr4Tb2B60w + /IPkXU3Y3+dfZRUnaErk9YZRqwRNbdKLb97PtCQV3ejjBriHu7bcPNh3PSlKXn1H3hCSIlpWenxU + sT5xB/nT+KjLUx+xbNSG+1TnI/A6mEByZSk9W459+62KCZIGTtf8y/5vn/jH319QSwMEFAAAAAgA + B30OTZx+gKP0AgAAxggAACEAAABDb250cm9sbGVycy9NZXNzYWdlc0NvbnRyb2xsZXIuY3OtVE1v + 2kAQvUfKf5jmEIEamXsCSKS0TQ9Jo0DUQ5TDsh7HK9Zea3cMQlH+e2f9BQZXpFFWwsY7s2/fvPnI + nUpfYLZxhEkwjy2KkDeCuXBLd3V6ku+a/+AiuCHKeL+23CppjTMRBdeGgm8mTVGSsVfd9utc6RBt + MFVCm5d/4gdTdNKqjJRJ933ukLYcUpGgy4TEvXtmIsk0BjPlX99lbHjz9OT19AR4PfHHJKcYU1JS + +DueS0OWL7SSILVwDm7ROfGCjkMia7RGC5cwydT2uzxUgfo1GAxg6PIkEXYzbm/f/57NL0FkalDj + tu0WJaoVgoCktENkTcKfueOLRRqCQ35YzLTaPzscdN85zIQVCXiNRmdCklop2pyNh4Nif8f56YFF + NKnD+SbDHvHDRL2VUWG//7z1qtRZKUu50CDcJpXgy2To01FDVOGN4d446j394CiuTbh5hklFAGom + /S30joYleZAxyiWoqPEG5cBE4MnVErUPsW+vcf4ygjTXGs7PG4DgJ1LNoYizD6MR7O64oCLfbyPv + sfNLrIUi4FJYoXVFCQUzzs/Ea9KwuAB/xxhSXIOvwbLoe/3+VRvwrf2J2uFRAjdcEhrLlqhYN/ce + wbdIuU0LVh2J6+212YwE5dwEIQYTKTEjDHfx33wXNhVi1UoQblPdxbIxJgdivx5mtHIKfH4O8zVF + jYSP3CJTQeJ42riwfvmJkHDrl50VegROH8RosftABGuEuIikfeaillLwH+6IzrLsSO47AtutrMcs + ZFHfFVypN8id0+DIp0RyADx0LkCrpW+gZMEOsEA/WEUYYljMGIuJWWHYic0qNyS5UQqASXNy3/JQ + IrVt/g8ziowFlUam85o7QyBWQmmx4EgUi8tt7NmnLN0nSUvcKQ+oP6guyzUohSpntCwBWVlHrvNg + I4CfhvD1QBCe6hadr8l1LIhrLcsw3U/Dx6LlJ6f4f8Jbpmbtq4Jiwb+q5Hn4UoH0GZzujzJqTRW/ + 6pnFM709fKrX219QSwMEFAAAAAgAB30OTY6/+E8IAgAAWQYAABUAAABEaWFsb2dzL0VjaG9EaWFs + b2cuY3OtVF1r2zAUfQ/kP9yawRJaBHtNmhZ3HSwPHaUOjDH2oMg3iTbbMtJ1uizkv1eS1cZxkyYb + uw+2Ps79OvegyshiDsnKEObDbqdqbNlkoZGn9oBNuPll7PUz4E4KrYyaEbtRxD6qokBBSg/3399U + MktRs1vJMzU37TRfkNhnotLH73YKnqMpucBWlITnZYYske73SSyUPex21t0OWPueoLbR5R8+zfBH + fVZW00wKEBk3BpxDnR8GMK5Xl2r609Z9VcNDJO+pFdkLTEEWBEJV9juCD77AF0wdnZtVIcDxAwlx + TbHb90ICSwzhbxfB//tb70YyZwHAvnJJvTs0hs/xAQXKJaY+Yn+4ddi8XcY+9wMFXcA4frQpHWmX + 4+AYC5JLSasr4Hpe5Vi8UfeSa8hrN0sQd7FevHbYciZn0AtgNnFVjEYQaTRIUX8X2cri7F6rvKS6 + Cye4mdR57zWsQebF/tt4RqgfXFbPzAFUFGuElarAVGHxyK0ISIEvGGiBtS6uo0MRbmVavCeYezSn + s0PA0neW0CrDQWjTb1hckWrO3dlmd4uZwaPU1WN5lti9MkGk76I1LaRhvo/z880AvrmGuUxh3ZzT + JmpX4eyvJNsq/YiCWyM6RbxTpbJTBStq9ewTbBPq5Bqgx+W5JTI8FKcOIfJ91lpir4j+n+N2goRC + UVDwaRn/7WGyi80TUEsDBBQAAAAIAAd9Dk04mFT9UAEAAGoCAAA1AAAAUG9zdERlcGxveVNjcmlw + dHMvY2xpN2ZuNXJyaHVydWV3b3Awei5QdWJsaXNoU2V0dGluZ3N9kstuwjAQRff9CsvqlgQoCBUR + JCCULkKVEqqg7vIYEquOHfwgIl/fvIpUNerKsu/M0b2eWeQ6pESmdqCC5QNCi+7uCn4mFFDenm9B + BhaOKJmd2VSIVAsNBc+H5cCHcGBDTvkNo6ofoQ6wB5Xy2MJ7r0/9ELQXZ8goM4JSCygglESBNBio + +WTy1PVnMm5wXqX1EjDSEkTr97FXbzh1kevbFj4WI+7TTTg+HU+r58/NdqpLmkyTC+elPh9cImb+ + end5ddR4F8tyWERst1o7h1G8ZR0rBqkICxThbJXnTbRUqXxumn0J/6TrKN6744G4grDXG84YRDXP + U4KwxMI/6W9V1T96ymsnSTW8K4lBvHChM4ewr3tBxJkSnLoBA9oKndOCsJgXsnVnRDzrGiqj3k0q + yCxcTbr+dYmXjbKIq5UJAwkSmc3mmL9XZ/lwf2mW6xtQSwMEFAAAAAgAB30OTeDPebiRAAAA3AAA + AC0AAABQb3N0RGVwbG95U2NyaXB0cy9naXRodWJQcm9qZWN0Lmpzb24udGVtcGxhdGVtjDEPgjAQ + RncT/sOls5GdDQyDgy6YOJJaTjgV2vSumEj47yrpYKLr+977pmQFoAbdo8pATaeyqKvdsawP+b6c + 1XpZG2TjyQnZ4Y8E+TN4hMIKVOhHMghb22BsO9uj0+3y3ok4ztK0JenCeWNsHyXnadTycS76zhhL + zTUxB+Q3Fx++sPP2ikZ+hwfdKMJkNb8AUEsDBBQAAAAIAAd9Dk325YcS3AAAAKYBAAAoAAAAUG9z + dERlcGxveVNjcmlwdHMvSW5jbHVkZVNvdXJjZXMudGFyZ2V0c4WRsU4DMQyG90q8QxQx0BvOFWyQ + 61Ik1AUqlbHLNWe4Q0kcxT5E354QQOWkqmzOb//259hsEr2hFfXhXeBG9yLxFoBtj77l2g82EdOL + 1JY8dPiOjiIm8LwfB9fB9WJxo5cXM6VMbpQzcnhINMYiZXFFCVfk4+DwHiOGjp/C8vLqlDy/Wwfr + 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 + apQ+jrS9rsHmD0m6McXvbrpsHVrxKXDPPYdf7r2R6sqWmSahls6vrxCKToVcyzfWAlL+XVMOMf4s + 0uWGPLykm/UiS78mBZSTBFQrDxj1ZoRO7gxsI+sYZ+RP+VW3o7DAVDygH52GPZSGWTCBADubTm/P + Zm7qYxhx4siOUWdAe8ybkeYD+o68SJw3XxBSPD4ng1SDsUxQy6RYKHXka6xVszD8jTlCPEeQpxUB + vQOdLO+kEFD1YcRqJrYxHv5wcG3/NTSyB9m68e9YDfpe6o6vmHi/dFRSWC3bnApovXIi3TNRy73x + hEEl+dnhaMnBWOAxdhvrx2fw3EtR7RZfUgMGhX7/4c8DcMWhdDySb1BLAwQUAAAACAAHfQ5NovUr + KdQAAAB7AQAAHQAAAFBvc3REZXBsb3lTY3JpcHRzL3J1bkd1bHAuY21kfZDPbsIwDMbvkfIOPsJh + RTwAaBP0gFT+CLbDJKSqJC4EkjpKgrq9/ZpsWjkAvsSyf/78xa8oTgRU15x5DJpEpTlLOczzTbH+ + XOar93K3/tjO8slvfbEqN8XbLC97YDKOQ6oG/FI+QJbt27Z1RGEv0Wr6zoSRMOAMwF79Sd4AsebQ + QLdXQw8nlGz3DqNyJC5KXDqjcLgqLWMivHV0ju30B4eCnPzTMNgECMqgD5WxnMkqIIwCTKdxd89k + mo6cRfBxN6m/3I1nE/PeiKQGk89G/l+Ysx9QSwMEFAAAAAgAB30OTaHoB0OKAgAAQwYAACsAAABQ + b3N0RGVwbG95U2NyaXB0cy9zZXR1cEdpdGh1YlJlbW90ZVJlcG8uY21ktVVRT9swEH6v1P9wqmQV + HpJo21ulTi1bpfEAVLRjkyiajHOhASf2bEcVAv77znZDU0H3Rh6c5HL33Xef75wJirUCVRT9nkUn + leCy3zNYQfJhV8SnbI2+suoSK+XwErWCaxOef1o0N3Ct0VhVczkVAq1dqgesvdWo+3Ne4ZPSrvSf + X24injDIHQKvc9BKN9K/XC0u4K50YDx6oQy4NcL0ZAFC5QhlbR2vBcb4uO4YjKChFbgQqqkd1JST + ZAoILTP/kaiB89xi/DukR4djfIqcHlsjcV03t3A5WyxhOj+FI4N/m9KgDRVYsEJpPN5m2goR0PfY + 0QcUzsNuNTnKseCNDKZfs5PF6XL2Jyzn07PZ8cdvN211K6yR47Vz2o6yjOsyjQWnQlV7XiT8mH3q + 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 + b2Z0LkJvdC5TYW1wbGUuU2ltcGxlRWNob0JvdC5jc3Byb2pQSwECFAAUAAAACAAHfQ5NLFaHmn4B + AAAHBAAAJgAAAAAAAAAAAAAAtoFvGAAATWljcm9zb2Z0LkJvdC5TYW1wbGUuU2ltcGxlRWNob0Jv + dC5zbG5QSwECFAAUAAAACAAHfQ5N+QNyYxICAABnCgAADwAAAAAAAAAAAAAAtoExGgAAcGFja2Fn + ZXMuY29uZmlnUEsBAhQAFAAAAAgAB30OTdls5S20AAAA1QAAAAsAAAAAAAAAAAAAAP+BcBwAAHB1 + Ymxpc2guY21kUEsBAhQAFAAAAAgAB30OTS/gHEbuAQAAfwMAAAkAAAAAAAAAAAAAALaBTR0AAHJl + YWRtZS5tZFBLAQIUABQAAAAIAAd9Dk1K1bvu3wUAAJUZAAAKAAAAAAAAAAAAAAC2gWIfAABXZWIu + Y29uZmlnUEsBAhQAFAAAAAgAB30OTahlJ+lnAgAAEwUAABAAAAAAAAAAAAAAALaBaSUAAFdlYi5E + ZWJ1Zy5jb25maWdQSwECFAAUAAAACAAHfQ5NY6Yds30CAABQBQAAEgAAAAAAAAAAAAAAtoH+JwAA + V2ViLlJlbGVhc2UuY29uZmlnUEsBAhQAFAAAAAgAB30OTQ4IrhvVAQAAUwUAABkAAAAAAAAAAAAA + ALaBqyoAAEFwcF9TdGFydC9XZWJBcGlDb25maWcuY3NQSwECFAAUAAAACAAHfQ5NnH6Ao/QCAADG + CAAAIQAAAAAAAAAAAAAAtoG3LAAAQ29udHJvbGxlcnMvTWVzc2FnZXNDb250cm9sbGVyLmNzUEsB + AhQAFAAAAAgAB30OTY6/+E8IAgAAWQYAABUAAAAAAAAAAAAAALaB6i8AAERpYWxvZ3MvRWNob0Rp + YWxvZy5jc1BLAQIUABQAAAAIAAd9Dk04mFT9UAEAAGoCAAA1AAAAAAAAAAAAAAC2gSUyAABQb3N0 + RGVwbG95U2NyaXB0cy9jbGk3Zm41cnJodXJ1ZXdvcDB6LlB1Ymxpc2hTZXR0aW5nc1BLAQIUABQA + AAAIAAd9Dk3gz3m4kQAAANwAAAAtAAAAAAAAAAAAAAC2gcgzAABQb3N0RGVwbG95U2NyaXB0cy9n + aXRodWJQcm9qZWN0Lmpzb24udGVtcGxhdGVQSwECFAAUAAAACAAHfQ5N9uWHEtwAAACmAQAAKAAA + AAAAAAAAAAAAtoGkNAAAUG9zdERlcGxveVNjcmlwdHMvSW5jbHVkZVNvdXJjZXMudGFyZ2V0c1BL + AQIUABQAAAAIAAd9Dk1kQE21sAIAACEHAAAgAAAAAAAAAAAAAAD/gcY1AABQb3N0RGVwbG95U2Ny + aXB0cy9wcmVwYXJlU3JjLmNtZFBLAQIUABQAAAAIAAd9Dk3va091cwAAAHsAAAAmAAAAAAAAAAAA + AAC2gbQ4AABQb3N0RGVwbG95U2NyaXB0cy9wdWJsaXNoLmNtZC50ZW1wbGF0ZVBLAQIUABQAAAAI + AAd9Dk02K7FwdQIAAEQFAAAtAAAAAAAAAAAAAAC2gWs5AABQb3N0RGVwbG95U2NyaXB0cy9wdWJs + aXNoUHJvZmlsZS54bWwudGVtcGxhdGVQSwECFAAUAAAACAAHfQ5NyiLg0SUBAAAyAgAALgAAAAAA + AAAAAAAAtoErPAAAUG9zdERlcGxveVNjcmlwdHMvcHVibGlzaFNldHRpbmdzLnhtbC50ZW1wbGF0 + ZVBLAQIUABQAAAAIAAd9Dk2i9Ssp1AAAAHsBAAAdAAAAAAAAAAAAAAD/gZw9AABQb3N0RGVwbG95 + U2NyaXB0cy9ydW5HdWxwLmNtZFBLAQIUABQAAAAIAAd9Dk2h6AdDigIAAEMGAAArAAAAAAAAAAAA + AAD/gas+AABQb3N0RGVwbG95U2NyaXB0cy9zZXR1cEdpdGh1YlJlbW90ZVJlcG8uY21kUEsBAhQA + FAAAAAgAB30OTefISQUIAwAAMgcAACgAAAAAAAAAAAAAAP+BfkEAAFBvc3REZXBsb3lTY3JpcHRz + L3NldHVwVnNvUmVtb3RlUmVwby5jbWRQSwECFAAUAAAACAAHfQ5NAAXq5r8AAAAcAQAAKgAAAAAA + AAAAAAAAtoHMRAAAUG9zdERlcGxveVNjcmlwdHMvdnNvUHJvamVjdC5qc29uLnRlbXBsYXRlUEsB + AhQAFAAAAAAAB30OTQAAAAAAAAAAAAAAABsAAAAAAAAAAAAQAP9B00UAAFByb3BlcnRpZXMvUHVi + bGlzaFByb2ZpbGVzL1BLAQIUABQAAAAIAAd9Dk0SWQphawIAAHIFAAAaAAAAAAAAAAAAAAC2gQxG + AABQcm9wZXJ0aWVzL0Fzc2VtYmx5SW5mby5jc1BLAQIUABQAAAAIAAd9Dk1NEJRgcAIAADwFAABA + AAAAAAAAAAAAAAC2ga9IAABQcm9wZXJ0aWVzL1B1Ymxpc2hQcm9maWxlcy9jbGk3Zm41cnJodXJ1 + ZXdvcDB6LVdlYi1EZXBsb3kucHVieG1sUEsFBgAAAAAlACUAVAoAAH1LAAAAAA== + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['21991'] + User-Agent: [python-requests/2.19.1] + content-type: [application/octet-stream] + method: PUT + uri: https://cli000002op0z.scm.azurewebsites.net/api/zip/site/clirepo + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 22:40:18 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + set-cookie: [ARRAffinity=7d1d1d94161133c2c1257779d1c4af3b85fe3dcfe5d7d2072cd743f58200646e;Path=/;HttpOnly;Domain=cli7fn5rrhuruewop0z.scm.azurewebsites.net] + x-aspnet-version: [4.0.30319] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot publish] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-web/0.35.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z/config/publishingcredentials/list?api-version=2016-08-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z/publishingcredentials/$cli000002op0z","name":"cli000002op0z","type":"Microsoft.Web/sites/publishingcredentials","location":"Central + US","properties":{"name":null,"publishingUserName":"$cli000002op0z","publishingPassword":"Tw1oWlCb2XTXA9ZCE5uzlg5gqoozufRPir7WBGqHLt2Gdsz0wcnGABLR1dEn","publishingPasswordHash":null,"publishingPasswordHashSalt":null,"metadata":null,"isDeleted":false,"scmUri":"https://$cli000002op0z:Tw1oWlCb2XTXA9ZCE5uzlg5gqoozufRPir7WBGqHLt2Gdsz0wcnGABLR1dEn@cli000002op0z.scm.azurewebsites.net"}}'} + headers: + cache-control: [no-cache] + content-length: ['689'] + content-type: [application/json] + date: ['Tue, 14 Aug 2018 22:40:18 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-resource-requests: ['11999'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot publish] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-web/0.35.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z?api-version=2016-08-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/sites/cli000002op0z","name":"cli000002op0z","type":"Microsoft.Web/sites","kind":"app","location":"Central + US","properties":{"name":"cli000002op0z","state":"Running","hostNames":["cli000002op0z.azurewebsites.net"],"webSpace":"clitest.rg000001-CentralUSwebspace","selfLink":"https://waws-prod-dm1-087.api.azurewebsites.windows.net:454/subscriptions/00000000-0000-0000-0000-000000000000/webspaces/clitest.rg000001-CentralUSwebspace/sites/cli000002op0z","repositorySiteName":"cli000002op0z","owner":null,"usageState":"Normal","enabled":true,"adminEnabled":true,"enabledHostNames":["cli000002op0z.azurewebsites.net","cli000002op0z.scm.azurewebsites.net"],"siteProperties":{"metadata":null,"properties":[{"name":"LinuxFxVersion","value":""},{"name":"WindowsFxVersion","value":null}],"appSettings":null},"availabilityState":"Normal","sslCertificates":null,"csrs":[],"cers":null,"siteMode":null,"hostNameSslStates":[{"name":"cli000002op0z.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Standard"},{"name":"cli000002op0z.scm.azurewebsites.net","sslState":"Disabled","ipBasedSslResult":null,"virtualIP":null,"thumbprint":null,"toUpdate":null,"toUpdateIpBasedSsl":null,"ipBasedSslState":"NotConfigured","hostType":"Repository"}],"computeMode":null,"serverFarm":null,"serverFarmId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Web/serverfarms/cli000002","reserved":false,"isXenon":false,"lastModifiedTimeUtc":"2018-08-14T22:39:25.5766667","storageRecoveryDefaultState":"Running","contentAvailabilityState":"Normal","runtimeAvailabilityState":"Normal","siteConfig":null,"deploymentId":"cli000002op0z","trafficManagerHostNames":null,"sku":"Standard","scmSiteAlsoStopped":false,"targetSwapSlot":null,"hostingEnvironment":null,"hostingEnvironmentProfile":null,"clientAffinityEnabled":true,"clientCertEnabled":false,"hostNamesDisabled":false,"domainVerificationIdentifiers":null,"kind":"app","outboundIpAddresses":"52.173.139.99,52.173.188.229,52.173.184.127,52.173.186.243,52.173.190.95","possibleOutboundIpAddresses":"52.173.139.99,52.173.188.229,52.173.184.127,52.173.186.243,52.173.190.95,52.176.107.202,52.173.184.202,52.173.190.226","containerSize":0,"dailyMemoryTimeQuota":0,"suspendedTill":null,"siteDisabledReason":0,"functionExecutionUnitsCache":null,"maxNumberOfWorkers":null,"homeStamp":"waws-prod-dm1-087","cloningInfo":null,"hostingEnvironmentId":null,"tags":null,"resourceGroup":"clitest.rg000001","defaultHostName":"cli000002op0z.azurewebsites.net","slotSwapStatus":null,"httpsOnly":false}}'} + headers: + cache-control: [no-cache] + content-length: ['2903'] + content-type: [application/json] + date: ['Tue, 14 Aug 2018 22:40:19 GMT'] + etag: ['"1D4341FA7488A8B"'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + x-aspnet-version: [4.0.30319] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: !!binary | + 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 + JmpX4eyvJNsq/YiCWyM6RbxTpbJTBStq9ewTbBPq5Bqgx+W5JTI8FKcOIfJ91lpir4j+n+N2goRC + UVDwaRn/7WGyi80TUEsDBBQAAAAIAAd9Dk04mFT9UAEAAGoCAAA1AAAAUG9zdERlcGxveVNjcmlw + dHMvY2xpN2ZuNXJyaHVydWV3b3Awei5QdWJsaXNoU2V0dGluZ3N9kstuwjAQRff9CsvqlgQoCBUR + JCCULkKVEqqg7vIYEquOHfwgIl/fvIpUNerKsu/M0b2eWeQ6pESmdqCC5QNCi+7uCn4mFFDenm9B + BhaOKJmd2VSIVAsNBc+H5cCHcGBDTvkNo6ofoQ6wB5Xy2MJ7r0/9ELQXZ8goM4JSCygglESBNBio + +WTy1PVnMm5wXqX1EjDSEkTr97FXbzh1kevbFj4WI+7TTTg+HU+r58/NdqpLmkyTC+elPh9cImb+ + end5ddR4F8tyWERst1o7h1G8ZR0rBqkICxThbJXnTbRUqXxumn0J/6TrKN6744G4grDXG84YRDXP + U4KwxMI/6W9V1T96ymsnSTW8K4lBvHChM4ewr3tBxJkSnLoBA9oKndOCsJgXsnVnRDzrGiqj3k0q + yCxcTbr+dYmXjbKIq5UJAwkSmc3mmL9XZ/lwf2mW6xtQSwMEFAAAAAgAB30OTeDPebiRAAAA3AAA + AC0AAABQb3N0RGVwbG95U2NyaXB0cy9naXRodWJQcm9qZWN0Lmpzb24udGVtcGxhdGVtjDEPgjAQ + RncT/sOls5GdDQyDgy6YOJJaTjgV2vSumEj47yrpYKLr+977pmQFoAbdo8pATaeyqKvdsawP+b6c + 1XpZG2TjyQnZ4Y8E+TN4hMIKVOhHMghb22BsO9uj0+3y3ok4ztK0JenCeWNsHyXnadTycS76zhhL + zTUxB+Q3Fx++sPP2ikZ+hwfdKMJkNb8AUEsDBBQAAAAIAAd9Dk325YcS3AAAAKYBAAAoAAAAUG9z + dERlcGxveVNjcmlwdHMvSW5jbHVkZVNvdXJjZXMudGFyZ2V0c4WRsU4DMQyG90q8QxQx0BvOFWyQ + 61Ik1AUqlbHLNWe4Q0kcxT5E354QQOWkqmzOb//259hsEr2hFfXhXeBG9yLxFoBtj77l2g82EdOL + 1JY8dPiOjiIm8LwfB9fB9WJxo5cXM6VMbpQzcnhINMYiZXFFCVfk4+DwHiOGjp/C8vLqlDy/Wwfr + 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 + apQ+jrS9rsHmD0m6McXvbrpsHVrxKXDPPYdf7r2R6sqWmSahls6vrxCKToVcyzfWAlL+XVMOMf4s + 0uWGPLykm/UiS78mBZSTBFQrDxj1ZoRO7gxsI+sYZ+RP+VW3o7DAVDygH52GPZSGWTCBADubTm/P + Zm7qYxhx4siOUWdAe8ybkeYD+o68SJw3XxBSPD4ng1SDsUxQy6RYKHXka6xVszD8jTlCPEeQpxUB + vQOdLO+kEFD1YcRqJrYxHv5wcG3/NTSyB9m68e9YDfpe6o6vmHi/dFRSWC3bnApovXIi3TNRy73x + hEEl+dnhaMnBWOAxdhvrx2fw3EtR7RZfUgMGhX7/4c8DcMWhdDySb1BLAwQUAAAACAAHfQ5NovUr + KdQAAAB7AQAAHQAAAFBvc3REZXBsb3lTY3JpcHRzL3J1bkd1bHAuY21kfZDPbsIwDMbvkfIOPsJh + RTwAaBP0gFT+CLbDJKSqJC4EkjpKgrq9/ZpsWjkAvsSyf/78xa8oTgRU15x5DJpEpTlLOczzTbH+ + XOar93K3/tjO8slvfbEqN8XbLC97YDKOQ6oG/FI+QJbt27Z1RGEv0Wr6zoSRMOAMwF79Sd4AsebQ + QLdXQw8nlGz3DqNyJC5KXDqjcLgqLWMivHV0ju30B4eCnPzTMNgECMqgD5WxnMkqIIwCTKdxd89k + mo6cRfBxN6m/3I1nE/PeiKQGk89G/l+Ysx9QSwMEFAAAAAgAB30OTaHoB0OKAgAAQwYAACsAAABQ + b3N0RGVwbG95U2NyaXB0cy9zZXR1cEdpdGh1YlJlbW90ZVJlcG8uY21ktVVRT9swEH6v1P9wqmQV + HpJo21ulTi1bpfEAVLRjkyiajHOhASf2bEcVAv77znZDU0H3Rh6c5HL33Xef75wJirUCVRT9nkUn + leCy3zNYQfJhV8SnbI2+suoSK+XwErWCaxOef1o0N3Ct0VhVczkVAq1dqgesvdWo+3Ne4ZPSrvSf + X24injDIHQKvc9BKN9K/XC0u4K50YDx6oQy4NcL0ZAFC5QhlbR2vBcb4uO4YjKChFbgQqqkd1JST + ZAoILTP/kaiB89xi/DukR4djfIqcHlsjcV03t3A5WyxhOj+FI4N/m9KgDRVYsEJpPN5m2goR0PfY + 0QcUzsNuNTnKseCNDKZfs5PF6XL2Jyzn07PZ8cdvN211K6yR47Vz2o6yjOsyjQWnQlV7XiT8mH3q + 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 + b2Z0LkJvdC5TYW1wbGUuU2ltcGxlRWNob0JvdC5jc3Byb2pQSwECFAAUAAAACAAHfQ5NLFaHmn4B + AAAHBAAAJgAAAAAAAAAAAAAAtoFvGAAATWljcm9zb2Z0LkJvdC5TYW1wbGUuU2ltcGxlRWNob0Jv + dC5zbG5QSwECFAAUAAAACAAHfQ5N+QNyYxICAABnCgAADwAAAAAAAAAAAAAAtoExGgAAcGFja2Fn + ZXMuY29uZmlnUEsBAhQAFAAAAAgAB30OTdls5S20AAAA1QAAAAsAAAAAAAAAAAAAAP+BcBwAAHB1 + Ymxpc2guY21kUEsBAhQAFAAAAAgAB30OTS/gHEbuAQAAfwMAAAkAAAAAAAAAAAAAALaBTR0AAHJl + YWRtZS5tZFBLAQIUABQAAAAIAAd9Dk1K1bvu3wUAAJUZAAAKAAAAAAAAAAAAAAC2gWIfAABXZWIu + Y29uZmlnUEsBAhQAFAAAAAgAB30OTahlJ+lnAgAAEwUAABAAAAAAAAAAAAAAALaBaSUAAFdlYi5E + ZWJ1Zy5jb25maWdQSwECFAAUAAAACAAHfQ5NY6Yds30CAABQBQAAEgAAAAAAAAAAAAAAtoH+JwAA + V2ViLlJlbGVhc2UuY29uZmlnUEsBAhQAFAAAAAgAB30OTQ4IrhvVAQAAUwUAABkAAAAAAAAAAAAA + ALaBqyoAAEFwcF9TdGFydC9XZWJBcGlDb25maWcuY3NQSwECFAAUAAAACAAHfQ5NnH6Ao/QCAADG + CAAAIQAAAAAAAAAAAAAAtoG3LAAAQ29udHJvbGxlcnMvTWVzc2FnZXNDb250cm9sbGVyLmNzUEsB + AhQAFAAAAAgAB30OTY6/+E8IAgAAWQYAABUAAAAAAAAAAAAAALaB6i8AAERpYWxvZ3MvRWNob0Rp + YWxvZy5jc1BLAQIUABQAAAAIAAd9Dk04mFT9UAEAAGoCAAA1AAAAAAAAAAAAAAC2gSUyAABQb3N0 + RGVwbG95U2NyaXB0cy9jbGk3Zm41cnJodXJ1ZXdvcDB6LlB1Ymxpc2hTZXR0aW5nc1BLAQIUABQA + AAAIAAd9Dk3gz3m4kQAAANwAAAAtAAAAAAAAAAAAAAC2gcgzAABQb3N0RGVwbG95U2NyaXB0cy9n + aXRodWJQcm9qZWN0Lmpzb24udGVtcGxhdGVQSwECFAAUAAAACAAHfQ5N9uWHEtwAAACmAQAAKAAA + AAAAAAAAAAAAtoGkNAAAUG9zdERlcGxveVNjcmlwdHMvSW5jbHVkZVNvdXJjZXMudGFyZ2V0c1BL + AQIUABQAAAAIAAd9Dk1kQE21sAIAACEHAAAgAAAAAAAAAAAAAAD/gcY1AABQb3N0RGVwbG95U2Ny + aXB0cy9wcmVwYXJlU3JjLmNtZFBLAQIUABQAAAAIAAd9Dk3va091cwAAAHsAAAAmAAAAAAAAAAAA + AAC2gbQ4AABQb3N0RGVwbG95U2NyaXB0cy9wdWJsaXNoLmNtZC50ZW1wbGF0ZVBLAQIUABQAAAAI + AAd9Dk02K7FwdQIAAEQFAAAtAAAAAAAAAAAAAAC2gWs5AABQb3N0RGVwbG95U2NyaXB0cy9wdWJs + aXNoUHJvZmlsZS54bWwudGVtcGxhdGVQSwECFAAUAAAACAAHfQ5NyiLg0SUBAAAyAgAALgAAAAAA + AAAAAAAAtoErPAAAUG9zdERlcGxveVNjcmlwdHMvcHVibGlzaFNldHRpbmdzLnhtbC50ZW1wbGF0 + ZVBLAQIUABQAAAAIAAd9Dk2i9Ssp1AAAAHsBAAAdAAAAAAAAAAAAAAD/gZw9AABQb3N0RGVwbG95 + U2NyaXB0cy9ydW5HdWxwLmNtZFBLAQIUABQAAAAIAAd9Dk2h6AdDigIAAEMGAAArAAAAAAAAAAAA + AAD/gas+AABQb3N0RGVwbG95U2NyaXB0cy9zZXR1cEdpdGh1YlJlbW90ZVJlcG8uY21kUEsBAhQA + FAAAAAgAB30OTefISQUIAwAAMgcAACgAAAAAAAAAAAAAAP+BfkEAAFBvc3REZXBsb3lTY3JpcHRz + L3NldHVwVnNvUmVtb3RlUmVwby5jbWRQSwECFAAUAAAACAAHfQ5NAAXq5r8AAAAcAQAAKgAAAAAA + AAAAAAAAtoHMRAAAUG9zdERlcGxveVNjcmlwdHMvdnNvUHJvamVjdC5qc29uLnRlbXBsYXRlUEsB + AhQAFAAAAAAAB30OTQAAAAAAAAAAAAAAABsAAAAAAAAAAAAQAP9B00UAAFByb3BlcnRpZXMvUHVi + bGlzaFByb2ZpbGVzL1BLAQIUABQAAAAIAAd9Dk0SWQphawIAAHIFAAAaAAAAAAAAAAAAAAC2gQxG + AABQcm9wZXJ0aWVzL0Fzc2VtYmx5SW5mby5jc1BLAQIUABQAAAAIAAd9Dk1NEJRgcAIAADwFAABA + AAAAAAAAAAAAAAC2ga9IAABQcm9wZXJ0aWVzL1B1Ymxpc2hQcm9maWxlcy9jbGk3Zm41cnJodXJ1 + ZXdvcDB6LVdlYi1EZXBsb3kucHVieG1sUEsFBgAAAAAlACUAVAoAAH1LAAAAAA== + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['21991'] + User-Agent: [python-requests/2.19.1] + content-type: [application/octet-stream] + method: POST + uri: https://cli000002op0z.scm.azurewebsites.net/api/zipdeploy + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 22:41:32 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + set-cookie: [ARRAffinity=7d1d1d94161133c2c1257779d1c4af3b85fe3dcfe5d7d2072cd743f58200646e;Path=/;HttpOnly;Domain=cli7fn5rrhuruewop0z.scm.azurewebsites.net] + x-aspnet-version: [4.0.30319] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + User-Agent: [python-requests/2.19.1] + content-type: [application/octet-stream] + method: GET + uri: https://cli000002op0z.scm.azurewebsites.net/api/deployments/mock-deployment + response: + body: {string: '{"id":"873ed4c69f9f433fb9c5bdc10bf1f031","status":4,"status_text":"","author_email":"N/A","author":"N/A","deployer":"Push-Deployer","message":"Created + via a push deployment","progress":"","received_time":"2018-08-14T22:40:20.4570664Z","start_time":"2018-08-14T22:40:20.6133253Z","end_time":"2018-08-14T22:41:32.0667822Z","last_success_end_time":"2018-08-14T22:41:32.0667822Z","complete":true,"active":true,"is_temp":false,"is_readonly":true,"url":"https://cli000002op0z.scm.azurewebsites.net/api/deployments/latest","log_url":"https://cli000002op0z.scm.azurewebsites.net/api/deployments/latest/log","site_name":"cli000002op0z"}'} + headers: + cache-control: [no-cache] + content-length: ['645'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 22:41:32 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + set-cookie: [ARRAffinity=7d1d1d94161133c2c1257779d1c4af3b85fe3dcfe5d7d2072cd743f58200646e;Path=/;HttpOnly;Domain=cli7fn5rrhuruewop0z.scm.azurewebsites.net] + vary: [Accept-Encoding] + x-aspnet-version: [4.0.30319] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group delete] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 22:41:34 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdYUVczV0E2RFdWLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2018-05-01'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-deletes: ['14999'] + status: {code: 202, message: Accepted} +version: 1 diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_webchat_channel.yaml b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_webchat_channel.yaml new file mode 100644 index 00000000000..b0b6231f0c3 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/recordings/test_webchat_channel.yaml @@ -0,0 +1,242 @@ +interactions: +- request: + body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation", + "date": "2018-08-14T21:19:59Z"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group create] + Connection: [keep-alive] + Content-Length: ['110'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-08-14T21:19:59Z"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['274'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 21:20:00 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [unknown] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 subscriptionclient/2.0.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/locations?api-version=2016-06-01 + response: + body: {string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastasia","name":"eastasia","displayName":"East + Asia","longitude":"114.188","latitude":"22.267"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southeastasia","name":"southeastasia","displayName":"Southeast + Asia","longitude":"103.833","latitude":"1.283"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralus","name":"centralus","displayName":"Central + US","longitude":"-93.6208","latitude":"41.5908"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus","name":"eastus","displayName":"East + US","longitude":"-79.8164","latitude":"37.3719"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus2","name":"eastus2","displayName":"East + US 2","longitude":"-78.3889","latitude":"36.6681"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus","name":"westus","displayName":"West + US","longitude":"-122.417","latitude":"37.783"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northcentralus","name":"northcentralus","displayName":"North + Central US","longitude":"-87.6278","latitude":"41.8819"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southcentralus","name":"southcentralus","displayName":"South + Central US","longitude":"-98.5","latitude":"29.4167"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/northeurope","name":"northeurope","displayName":"North + Europe","longitude":"-6.2597","latitude":"53.3478"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westeurope","name":"westeurope","displayName":"West + Europe","longitude":"4.9","latitude":"52.3667"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japanwest","name":"japanwest","displayName":"Japan + West","longitude":"135.5022","latitude":"34.6939"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/japaneast","name":"japaneast","displayName":"Japan + East","longitude":"139.77","latitude":"35.68"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/brazilsouth","name":"brazilsouth","displayName":"Brazil + South","longitude":"-46.633","latitude":"-23.55"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiaeast","name":"australiaeast","displayName":"Australia + East","longitude":"151.2094","latitude":"-33.86"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiasoutheast","name":"australiasoutheast","displayName":"Australia + Southeast","longitude":"144.9631","latitude":"-37.8136"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/southindia","name":"southindia","displayName":"South + India","longitude":"80.1636","latitude":"12.9822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/centralindia","name":"centralindia","displayName":"Central + India","longitude":"73.9197","latitude":"18.5822"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westindia","name":"westindia","displayName":"West + India","longitude":"72.868","latitude":"19.088"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadacentral","name":"canadacentral","displayName":"Canada + Central","longitude":"-79.383","latitude":"43.653"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/canadaeast","name":"canadaeast","displayName":"Canada + East","longitude":"-71.217","latitude":"46.817"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/uksouth","name":"uksouth","displayName":"UK + South","longitude":"-0.799","latitude":"50.941"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/ukwest","name":"ukwest","displayName":"UK + West","longitude":"-3.084","latitude":"53.427"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westcentralus","name":"westcentralus","displayName":"West + Central US","longitude":"-110.234","latitude":"40.890"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2","name":"westus2","displayName":"West + US 2","longitude":"-119.852","latitude":"47.233"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral","name":"koreacentral","displayName":"Korea + Central","longitude":"126.9780","latitude":"37.5665"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth","name":"koreasouth","displayName":"Korea + South","longitude":"129.0756","latitude":"35.1796"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral","name":"francecentral","displayName":"France + Central","longitude":"2.3730","latitude":"46.3772"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth","name":"francesouth","displayName":"France + South","longitude":"2.1972","latitude":"43.8345"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral","name":"australiacentral","displayName":"Australia + Central","longitude":"149.1244","latitude":"-35.3075"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2","name":"australiacentral2","displayName":"Australia + Central 2","longitude":"149.1244","latitude":"-35.3075"}]}'} + headers: + cache-control: [no-cache] + content-length: ['5269'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 21:20:01 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + status: {code: 200, message: OK} +- request: + body: 'b''{"name": "cli000002", "type": ""}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['34'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/providers/Microsoft.BotService/checkNameAvailability?api-version=2018-07-12 + response: + body: {string: '{"valid":true,"message":""}'} + headers: + cache-control: [no-cache] + content-length: ['27'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 21:20:01 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-tenant-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: 'b''{"location": "global", "sku": {"name": "F0"}, "kind": "bot", "properties": + {"displayName": "cli000002", "endpoint": "https://www.google.com/api/messages", + "msaAppId": "37ef8f18-a175-489b-8ec9-1dd933f4f5a8"}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot create] + Connection: [keep-alive] + Content-Length: ['208'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002","name":"cli000002","type":"Microsoft.BotService/botServices","etag":"W/\"datetime''2018-08-14T21%3A20%3A08.0213488Z''\"","location":"global","sku":{"name":"F0"},"kind":"bot","tags":{},"properties":{"displayName":"cli000002","description":"","iconUrl":"//bot-framework.azureedge.net/bot-icons-v1/bot-framework-default.png","endpoint":"https://www.google.com/api/messages","msaAppId":"37ef8f18-a175-489b-8ec9-1dd933f4f5a8","developerAppInsightKey":"","developerAppInsightsApplicationId":"","luisAppIds":[],"endpointVersion":"3.0","configuredChannels":["webchat"],"enabledChannels":["webchat","directline"],"isDeveloperAppInsightsApiKeySet":false,"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['827'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 21:20:08 GMT'] + etag: [W/"datetime'2018-08-14T21%3A20%3A08.0213488Z'"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-powered-by: [ASP.NET] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot webchat show] + Connection: [keep-alive] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/WebChatChannel?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/WebChatChannel","name":"cli000002/WebChatChannel","type":"Microsoft.BotService/botServices/channels","etag":"W/\"7e0790cba284cee37bffc7e8aad1a08a8/14/2018 + 9:20:10 PM\"","location":"global","properties":{"properties":{"webChatEmbedCode":null,"sites":[]},"etag":"W/\"7e0790cba284cee37bffc7e8aad1a08a8/14/2018 + 9:20:10 PM\"","channelName":"WebChatChannel","location":"global","provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['564'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 21:20:09 GMT'] + etag: ['W/"7e0790cba284cee37bffc7e8aad1a08a8/14/2018 9:20:10 PM"'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: ['Accept-Encoding,Accept-Encoding'] + x-content-type-options: [nosniff] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [bot webchat show] + Connection: [keep-alive] + Content-Length: ['0'] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 azure-mgmt-botservice/0.1.0 Azure-SDK-For-Python AZURECLI/2.0.45] + accept-language: [en-US] + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/WebChatChannel/listChannelWithKeys?api-version=2018-07-12 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.BotService/botServices/cli000002/channels/WebChatChannel","location":"global","properties":{"properties":{"webChatEmbedCode":null,"sites":[{"siteId":"u_iZwOno3iQ","siteName":"Default + Site","key":"u_iZwOno3iQ.cwA.Gf4.19ydruuWQ6M8pfsv0O00d92tXdlm7ZIwvGupZ4viyC4","key2":"u_iZwOno3iQ.cwA.I78.eQvxl7tyFnq3dnB5iMbyi4rP-yX0R8dVNgcWOUUYlB4","isEnabled":true,"isWebchatPreviewEnabled":true}]},"etag":"W/\"a144f3c5ce214ede6d5cc155c77ae4ae8/14/2018 + 9:20:12 PM\"","channelName":"WebChatChannel","location":"global"},"provisioningState":"Succeeded","entityTag":"W/\"4d6f6f60245d3e0fdb544677b93a18d18/14/2018 + 9:20:12 PM\"","changedTime":"0001-01-01T00:00:00Z"}'} + headers: + cache-control: [no-cache] + content-length: ['763'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 14 Aug 2018 21:20:13 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-IIS/10.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-writes: ['1198'] + x-powered-by: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group delete] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.6.1 (Windows-10-10.0.17134-SP0) requests/2.19.1 msrest/0.5.4 + msrest_azure/0.4.34 resourcemanagementclient/2.0.0 Azure-SDK-For-Python + AZURECLI/2.0.45] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2018-05-01 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 14 Aug 2018 21:20:15 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdFUVlGTldLS05FLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2018-05-01'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-content-type-options: [nosniff] + x-ms-ratelimit-remaining-subscription-deletes: ['14999'] + status: {code: 202, message: Accepted} +version: 1 diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/test_authsetting_commands.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/test_authsetting_commands.py new file mode 100644 index 00000000000..9487368ed70 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/test_authsetting_commands.py @@ -0,0 +1,56 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +from azure.cli.testsdk import ScenarioTest, ResourceGroupPreparer +import uuid + + +class AuthSettingTests(ScenarioTest): + + @ResourceGroupPreparer(random_name_length=20) + def test_auth_setting(self, resource_group): + self.kwargs.update({ + 'botname': self.create_random_name(prefix='cli', length=10), + 'endpoint': 'https://www.google.com/api/messages', + 'app_id': str(uuid.uuid4()), + 'setting_name': self.create_random_name(prefix='auth', length=10), + 'clientid': 'clientid', + 'secret': 'secret' + }) + + self.cmd('az bot create -k registration -g {rg} -n {botname} -e {endpoint} --appid {app_id}', checks=[ + self.check('name', '{botname}'), + self.check('resourceGroup', '{rg}'), + self.check('location', 'global') + ]) + + self.cmd('az bot authsetting create -g {rg} -n {botname} --client-id {clientid} --client-secret {secret} --provider-scope-string "scope1 scope2" --service google -c myconnname', checks=[ + self.check('properties.clientId', '{clientid}') + ]) + + self.cmd('az bot authsetting show -c myconnname -g {rg} -n {botname}', checks=[ + self.check('properties.clientId', '{clientid}') + ]) + + self.cmd('az bot authsetting list -n {botname} -g {rg}', checks=[ + self.check('length(@)', 1), + self.check('[0].properties.name', 'myconnname') + ]) + + self.cmd('az bot authsetting delete -g {rg} -n {botname} -c myconnname') + + def test_service_providers(self): + self.kwargs.update({ + 'service_provider': 'google' + }) + + self.cmd('az bot authsetting list-providers', checks=[ + self.greater_than('length(@)', 0) + ]) + + self.cmd('az bot authsetting list-providers --provider-name {service_provider}', checks=[ + self.check('length(@)', 1), + self.check('properties.serviceProviderName', '{service_provider}') + ]) diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/test_bot_commands.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/test_bot_commands.py new file mode 100644 index 00000000000..3c125d87a21 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/test_bot_commands.py @@ -0,0 +1,73 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +from azure.cli.testsdk import ScenarioTest, ResourceGroupPreparer +import uuid +import os +import shutil + + +class BotTests(ScenarioTest): + + @ResourceGroupPreparer(random_name_length=20) + def test_registration_bot(self, resource_group): + self.kwargs.update({ + 'botname': self.create_random_name(prefix='cli', length=10), + 'description': 'description1', + 'endpoint': 'https://www.google.com/api/messages', + 'app_id': str(uuid.uuid4()) + }) + + self.cmd('az bot create -k registration -g {rg} -n {botname} -d {description} -e {endpoint} --appid {app_id} --tags key1=value1', checks=[ + self.check('name', '{botname}'), + self.check('properties.description', '{description}'), + self.check('resourceGroup', '{rg}'), + self.check('location', 'global'), + self.check('tags.key1', 'value1') + ]) + + self.cmd('az bot show -g {rg} -n {botname}', checks=[ + self.check('name', '{botname}') + ]) + + self.cmd('az bot update --set properties.description=description2 -g {rg} -n {botname}', checks=[ + self.check('name', '{botname}'), + self.check('properties.description', 'description2') + ]) + + self.cmd('az bot delete -g {rg} -n {botname}') + + @ResourceGroupPreparer(random_name_length=20) + def test_webapp_bot(self, resource_group): + self.kwargs.update({ + 'botname': self.create_random_name(prefix='cli', length=15), + 'app_id': '0cc66483-d276-4830-9afd-9fe6b654a255', + 'password': 'testpassword' + }) + dir_path = os.path.join('.', self.kwargs.get('botname')) + if os.path.exists(dir_path): + # clean up the folder + shutil.rmtree(dir_path) + + self.cmd('az bot create -k webapp -g {rg} -n {botname} --appid {app_id} -p {password}', checks=[ + self.check('appId', '{app_id}'), + self.check('appPassword', '{password}'), + self.check('resourceGroup', '{rg}'), + self.check('id', '{botname}'), + self.check('type', 'abs') + ]) + + # download the bot + self.cmd('az bot download -g {rg} -n {botname}', checks=[ + self.exists('downloadPath') + ]) + self.check(os.path.isdir(os.path.join('dir_path', 'postDeployScripts')), True) + + # publish it back + self.cmd('az bot publish -g {rg} -n {botname} --code-dir {botname}', checks=[ + self.check('active', True) + ]) + # clean up the folder + shutil.rmtree(dir_path) diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/test_channel_commands.py b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/test_channel_commands.py new file mode 100644 index 00000000000..29411dc5853 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/tests/latest/test_channel_commands.py @@ -0,0 +1,103 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +from azure.cli.testsdk import ScenarioTest, ResourceGroupPreparer +import uuid + + +class ChannelTests(ScenarioTest): + + def create_bot(self, resource_group): + self.kwargs.update({ + 'botname': self.create_random_name(prefix='cli', length=10), + 'endpoint': 'https://www.google.com/api/messages', + 'app_id': str(uuid.uuid4()), + 'setting_name': self.create_random_name(prefix='auth', length=10), + 'clientid': 'clientid', + 'secret': 'secret' + }) + + self.cmd('az bot create -k registration -g {rg} -n {botname} -e {endpoint} --appid {app_id}', checks=[ + self.check('name', '{botname}'), + self.check('resourceGroup', '{rg}'), + self.check('location', 'global') + ]) + + @ResourceGroupPreparer(random_name_length=20) + def test_webchat_channel(self, resource_group): + self.create_bot(resource_group) + + self.cmd('az bot webchat show -g {rg} -n {botname}', checks=[ + self.check('properties.properties.sites.length(@)', 0), + ]) + + self.cmd('az bot webchat show -g {rg} -n {botname} --with-secrets', checks=[ + self.check('properties.properties.sites.length(@)', 1), + self.check('properties.properties.sites[0].isEnabled', True), + ]) + + @ResourceGroupPreparer(random_name_length=20) + def test_skype_channel(self, resource_group): + self.create_bot(resource_group) + self.cmd('az bot skype create -g {rg} -n {botname} --enable-calling true --enable-media-cards true --enable-messaging true --enable-video true --calling-web-hook https://www.google.com', checks=[ + self.check('properties.properties.enableMessaging', True), + self.check('properties.properties.enableMediaCards', True), + self.check('properties.properties.enableVideo', True) + ]) + + self.cmd('az bot skype show -g {rg} -n {botname}', checks=[ + self.check('properties.properties.enableMessaging', True), + self.check('properties.properties.enableMediaCards', True), + self.check('properties.properties.enableVideo', True) + ]) + + self.cmd('az bot skype show -g {rg} -n {botname} --with-secrets', checks=[ + self.check('properties.properties.enableMessaging', True), + self.check('properties.properties.enableMediaCards', True), + self.check('properties.properties.enableVideo', True) + ]) + + self.cmd('az bot skype delete -g {rg} -n {botname}') + + @ResourceGroupPreparer(random_name_length=20) + def test_msteams_channel(self, resource_group): + self.create_bot(resource_group) + self.cmd('az bot msteams create -g {rg} -n {botname} --enable-calling true --calling-web-hook https://www.google.com', checks=[ + self.check('properties.properties.enableCalling', True), + self.check('properties.properties.isEnabled', True) + ]) + + self.cmd('az bot msteams show -g {rg} -n {botname}', checks=[ + self.check('properties.properties.enableCalling', True), + self.check('properties.properties.isEnabled', True) + ]) + + self.cmd('az bot msteams show -g {rg} -n {botname} --with-secrets', checks=[ + self.check('properties.properties.enableCalling', True), + self.check('properties.properties.isEnabled', True) + ]) + + self.cmd('az bot msteams delete -g {rg} -n {botname}') + + @ResourceGroupPreparer(random_name_length=20) + def test_directline_channel(self, resource_group): + self.create_bot(resource_group) + self.cmd('az bot directline create -g {rg} -n {botname}', checks=[ + self.check('properties.properties.sites[0].siteName', 'Default Site'), + self.check('properties.properties.sites[0].isEnabled', True) + ]) + + self.cmd('az bot directline show -g {rg} -n {botname}', checks=[ + self.check('properties.properties.sites[0].siteName', 'Default Site'), + self.check('properties.properties.sites[0].isEnabled', True), + self.check('properties.properties.sites[0].key', '') + ]) + + self.cmd('az bot directline show -g {rg} -n {botname} --with-secrets', checks=[ + self.check('properties.properties.sites[0].siteName', 'Default Site'), + self.check('properties.properties.sites[0].isEnabled', True) + ]) + + self.cmd('az bot directline delete -g {rg} -n {botname}') diff --git a/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/webapp.template.json b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/webapp.template.json new file mode 100644 index 00000000000..9db896c5ee4 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure/cli/command_modules/botservice/webapp.template.json @@ -0,0 +1,414 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "botEnv": { + "type": "string", + "defaultValue": "prod" + }, + "botId": { + "type": "string" + }, + "description": { + "type": "string", + "defaultValue": "" + }, + "location": { + "type": "string" + }, + "sku": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "siteName": { + "type": "string" + }, + "createNewStorage": { + "type": "bool" + }, + "storageAccountName": { + "type": "string" + }, + "storageAccountResourceId": { + "type": "string", + "defaultValue": "" + }, + "appId": { + "type": "string", + "defaultValue": "1234" + }, + "appSecret": { + "type": "string", + "defaultValue": "blank" + }, + "azureWebJobsBotFrameworkDirectLineSecret": { + "type": "string", + "defaultValue": "" + }, + "zipUrl": { + "type": "string", + "defaultValue": "" + }, + "proactiveZipUrl": { + "type": "string", + "defaultValue": "" + }, + "useAppInsights": { + "type": "bool" + }, + "appInsightsLocation": { + "type": "string" + }, + "serverFarmId": { + "type": "string" + }, + "createServerFarm": { + "type": "bool" + }, + "serverFarmLocation": { + "type": "string", + "defaultValue": "" + }, + "serverFarmSku": { + "type": "object", + "defaultValue": { + "name": "S1", + "tier": "Standard", + "size": "S1", + "family": "S", + "capacity": 1 + } + }, + "endpoint": { + "type": "string", + "defaultValue": "" + }, + "luisApiLocation": { + "type": "string", + "defaultValue": "Global" + } + }, + "variables": { + "storageAccountType": "Standard_LRS", + "storageAccountId": "[if(or(parameters('createNewStorage'), equals('', parameters('storageAccountResourceId'))), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), parameters('storageAccountResourceId'))]", + "serverFarmName": "[last(split(parameters('serverFarmId'), '/'))]", + "myWorkerSize": 0, + "proactiveFunctionName": "[concat(parameters('siteName'), '-function')]", + "insightsName": "[concat(parameters('botId'), substring(uniqueString(resourceGroup().id), 0, 6))]", + "config": { + "scratch": { + "stateEndpoint": "https://intercom-api-scratch.azurewebsites.net", + "azureWebJobsBotFrameworkDirectLineEndpoint": "https://directline.scratch.botframework.com/", + "blobStoreName": "icscratch", + "openIdMetadata": "https://intercom-api-ppe.azurewebsites.net/v1/.well-known/openidconfiguration" + }, + "ppe": { + "stateEndpoint": "https://intercom-api-ppe.azurewebsites.net", + "azureWebJobsBotFrameworkDirectLineEndpoint": "https://directline.ppe.botframework.com/", + "blobStoreName": "intercomppe", + "openIdMetadata": "https://intercom-api-ppe.azurewebsites.net/v1/.well-known/openidconfiguration" + }, + "prod": { + "stateEndpoint": "", + "azureWebJobsBotFrameworkDirectLineEndpoint": "https://directline.botframework.com/", + "blobStoreName": "connectorprod", + "openIdMetadata": "" + } + }, + "botAppKinds": { + "function": "functionapp", + "sdk": "app", + "designer": "app", + "bot": "" + }, + "botAppKind": "[variables('botAppKinds')[parameters('kind')]]", + "currentConfig": "[variables('config')[toLower(parameters('botEnv'))]]", + "siteHost": "[concat(parameters('siteName'), '.azurewebsites.net')]", + "botEndpointConfig": { + "bot": "[parameters('endpoint')]", + "sdk": "[concat('https://', variables('siteHost'), '/api/messages')]", + "designer": "[concat('https://', variables('siteHost'), '/api/messages')]", + "function": "[concat('https://', variables('siteHost'), '/api/messages?code=', 'NYI')]" + }, + "botEndpoint": "[variables('botEndpointConfig')[parameters('kind')]]", + "luisApiName": "", + "luisApiResId": "[resourceId('Microsoft.CognitiveServices/accounts/', variables('luisApiName'))]" + }, + "resources": [ + { + "name": "[if(equals('', variables('luisApiName')), 'nosuch', variables('luisApiName'))]", + "apiVersion": "2017-04-18", + "condition": "[not(equals(variables('luisApiName'), ''))]", + "type": "Microsoft.CognitiveServices/accounts", + "location": "[parameters('luisApiLocation')]", + "sku": { + "name": "F0" + }, + "kind": "LUIS", + "properties": {} + }, + { + "type": "Microsoft.Storage/storageAccounts", + "condition": "[parameters('createNewStorage')]", + "name": "[parameters('storageAccountName')]", + "apiVersion": "2015-05-01-preview", + "location": "[parameters('location')]", + "properties": { + "accountType": "[variables('storageAccountType')]" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "condition": "[parameters('createServerFarm')]", + "name": "[variables('serverFarmName')]", + "apiVersion": "2016-09-01", + "location": "[parameters('serverFarmLocation')]", + "sku": "[parameters('serverFarmSku')]", + "properties": { + "name": "[variables('serverFarmName')]" + } + }, + { + "name": "[variables('insightsName')]", + "type": "microsoft.insights/components", + "kind": "web", + "apiVersion": "2014-04-01", + "condition": "[parameters('useAppInsights')]", + "location": "[parameters('appInsightsLocation')]", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.BotService/botServices/', parameters('botId')))]": "Resource", + "[concat('hidden-link:', resourceId('Microsoft.Web/sites/', parameters('siteName')))]": "Resource" + }, + "properties": { + "ApplicationId": "[parameters('botId')]" + } + }, + { + "name": "[parameters('siteName')]", + "type": "Microsoft.Web/sites", + "apiVersion": "2015-08-01", + "condition": "[not(equals(parameters('zipUrl'), ''))]", + "location": "[parameters('location')]", + "kind": "[variables('botAppKind')]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", + "[parameters('serverFarmId')]" + ], + "properties": { + "name": "[parameters('siteName')]", + "serverFarmId": "[parameters('serverFarmId')]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listkeys(variables('storageAccountId'), '2015-05-01-preview').key1,';')]" + }, + { + "name": "AzureWebJobsDashboard", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listkeys(variables('storageAccountId'), '2015-05-01-preview').key1,';')]" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "6.9.1" + }, + { + "name": "BotEnv", + "value": "[parameters('botEnv')]" + }, + { + "name": "BotId", + "value": "[parameters('botId')]" + }, + { + "name": "MicrosoftAppId", + "value": "[parameters('appId')]" + }, + { + "name": "MicrosoftAppPassword", + "value": "[parameters('appSecret')]" + }, + { + "name": "BotStateEndpoint", + "value": "[variables('currentConfig').stateEndpoint]" + }, + { + "name": "BotOpenIdMetadata", + "value": "[variables('currentConfig').openIdMetadata]" + }, + { + "name": "UseTableStorageForConversationState", + "value": "true" + }, + { + "name": "BotDevAppInsightsKey", + "value": "[reference(resourceId('microsoft.insights/components/', variables('insightsName')), '2015-05-01').InstrumentationKey]" + }, + { + "name": "BotDevAppInsightsName", + "value": "[variables('insightsName')]" + }, + { + "name": "BotDevAppInsightsAppId", + "value": "[reference(resourceId('microsoft.insights/components/', variables('insightsName')), '2015-05-01').AppId]" + } + ], + "cors": { + "allowedOrigins": [ + "https://localhost:44300", + "https://botservice.hosting.portal.azure.net", + "https://hosting.onecloud.azure-test.net/" + ] + } + } + }, + "resources": [ + { + "name": "MSDeploy", + "type": "Extensions", + "apiVersion": "2015-02-01", + "condition": "[not(equals(parameters('zipUrl'), ''))]", + "dependsOn": [ + "[concat('Microsoft.Web/Sites/', parameters('siteName'))]" + ], + "properties": { + "packageUri": "[parameters('zipUrl')]", + "dbType": "None", + "connectionString": "", + "setParameters": { + "IIS Web Application Name": "[parameters('siteName')]" + } + } + }, + { + "apiVersion": "2015-08-01", + "name": "logs", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites', parameters('siteName'))]", + "[resourceId('Microsoft.Web/Sites/extensions', parameters('siteName'), 'MSDeploy')]" + ], + "properties": { + "applicationLogs": { + "fileSystem": { + "level": "Error" + }, + "azureTableStorage": { + "level": "Off", + "sasUrl": null + }, + "azureBlobStorage": { + "level": "Error", + "sasUrl": null, + "retentionInDays": 1 + } + }, + "httpLogs": { + "fileSystem": { + "retentionInMb": 35, + "retentionInDays": 1, + "enabled": true + }, + "azureBlobStorage": { + + "enabled": false + } + }, + "failedRequestsTracing": { + "enabled": true + }, + "detailedErrorMessages": { + "enabled": true + } + } + } + ] + }, + { + "apiVersion": "2016-03-01", + "type": "Microsoft.Web/sites", + "condition": "[not(equals(parameters('proactiveZipUrl'), ''))]", + "name": "[variables('proactiveFunctionName')]", + "location": "[parameters('location')]", + "kind": "functionapp", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", + "[parameters('serverFarmId')]" + ], + "properties": { + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsDashboard", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listkeys(variables('storageAccountId'), '2015-05-01-preview').key1,';')]" + }, + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listkeys(variables('storageAccountId'), '2015-05-01-preview').key1,';')]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listkeys(variables('storageAccountId'), '2015-05-01-preview').key1,';')]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[toLower(variables('proactiveFunctionName'))]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~1" + }, + { + "name": "AzureWebJobsBotFrameworkDirectLineSecret", + "value": "[parameters('azureWebJobsBotFrameworkDirectLineSecret')]" + }, + { + "name": "AzureWebJobsBotFrameworkDirectLineEndpoint", + "value": "[variables('currentConfig').azureWebJobsBotFrameworkDirectLineEndpoint]" + } + ] + } + }, + "resources": [ + { + "name": "MSDeploy", + "type": "Extensions", + "apiVersion": "2015-02-01", + "condition": "[not(equals(parameters('proactiveZipUrl'), ''))]", + "dependsOn": [ + "[concat('Microsoft.Web/Sites/', variables('proactiveFunctionName'))]" + ], + "properties": { + "packageUri": "[parameters('proactiveZipUrl')]" + } + } + ] + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.BotService/botServices", + "name": "[parameters('botId')]", + "location": "global", + "kind": "[parameters('kind')]", + "sku": { + "name": "[parameters('sku')]" + }, + "properties": { + "name": "[parameters('botId')]", + "description": "[parameters('description')]", + "displayName": "[parameters('botId')]", + "endpoint": "[variables('botEndpoint')]", + "msaAppId": "[parameters('appId')]", + "developerAppInsightsApplicationId": "[variables('insightsName')]", + "developerAppInsightKey": "[reference(resourceId('microsoft.insights/components/', variables('insightsName')), '2015-05-01').InstrumentationKey]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", + "[parameters('serverFarmId')]", + "[resourceId('Microsoft.Web/sites/', parameters('siteName'))]", + "[resourceId('microsoft.insights/components/', variables('insightsName'))]" + ] + } + ] +} \ No newline at end of file diff --git a/src/command_modules/azure-cli-botservice/azure_bdist_wheel.py b/src/command_modules/azure-cli-botservice/azure_bdist_wheel.py new file mode 100644 index 00000000000..8a81d1b6177 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/azure_bdist_wheel.py @@ -0,0 +1,54 @@ +#------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +#-------------------------------------------------------------------------- + +from distutils import log as logger +import os.path + +from wheel.bdist_wheel import bdist_wheel +class azure_bdist_wheel(bdist_wheel): + """The purpose of this class is to build wheel a little differently than the sdist, + without requiring to build the wheel from the sdist (i.e. you can build the wheel + directly from source). + """ + + description = "Create an Azure wheel distribution" + + user_options = bdist_wheel.user_options + \ + [('azure-namespace-package=', None, + "Name of the deepest nspkg used")] + + def initialize_options(self): + bdist_wheel.initialize_options(self) + self.azure_namespace_package = None + + def finalize_options(self): + bdist_wheel.finalize_options(self) + if self.azure_namespace_package and not self.azure_namespace_package.endswith("-nspkg"): + raise ValueError("azure_namespace_package must finish by -nspkg") + + def run(self): + if not self.distribution.install_requires: + self.distribution.install_requires = [] + self.distribution.install_requires.append( + "{}>=2.0.0".format(self.azure_namespace_package)) + bdist_wheel.run(self) + + def write_record(self, bdist_dir, distinfo_dir): + if self.azure_namespace_package: + # Split and remove last part, assuming it's "nspkg" + subparts = self.azure_namespace_package.split('-')[0:-1] + folder_with_init = [os.path.join(*subparts[0:i+1]) for i in range(len(subparts))] + for azure_sub_package in folder_with_init: + init_file = os.path.join(bdist_dir, azure_sub_package, '__init__.py') + if os.path.isfile(init_file): + logger.info("manually remove {} while building the wheel".format(init_file)) + os.remove(init_file) + else: + raise ValueError("Unable to find {}. Are you sure of your namespace package?".format(init_file)) + bdist_wheel.write_record(self, bdist_dir, distinfo_dir) +cmdclass = { + 'bdist_wheel': azure_bdist_wheel, +} diff --git a/src/command_modules/azure-cli-botservice/setup.cfg b/src/command_modules/azure-cli-botservice/setup.cfg new file mode 100644 index 00000000000..a943e1bea02 --- /dev/null +++ b/src/command_modules/azure-cli-botservice/setup.cfg @@ -0,0 +1,4 @@ +[bdist_wheel] +universal=1 +azure-namespace-package=azure-cli-command_modules-nspkg + diff --git a/src/command_modules/azure-cli-botservice/setup.py b/src/command_modules/azure-cli-botservice/setup.py new file mode 100644 index 00000000000..8d9cffe82ba --- /dev/null +++ b/src/command_modules/azure-cli-botservice/setup.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python + +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + + +from codecs import open +from setuptools import setup + +try: + from azure_bdist_wheel import cmdclass +except ImportError: + from distutils import log as logger + logger.warn("Wheel is not available, disabling bdist_wheel hook") + cmdclass = {} + + +VERSION = "0.1.0" +# The full list of classifiers is available at +# https://pypi.python.org/pypi?%3Aaction=list_classifiers +CLASSIFIERS = [ + 'Development Status :: 4 - Beta', + 'Intended Audience :: Developers', + 'Intended Audience :: System Administrators', + 'Programming Language :: Python', + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'License :: OSI Approved :: MIT License', +] + +DEPENDENCIES = [ + 'azure-cli-core', + 'azure-mgmt-web>=0.34.1', + 'azure-mgmt-botservice' +] + +with open('README.rst', 'r', encoding='utf-8') as f: + README = f.read() +with open('HISTORY.rst', 'r', encoding='utf-8') as f: + HISTORY = f.read() + +setup( + name='azure-cli-botservice', + version=VERSION, + description='Microsoft Azure Command-Line Tools Bot Services Command Module', + long_description=README + '\n\n' + HISTORY, + license='MIT', + author='Microsoft Corporation', + author_email='azpycli@microsoft.com', + url='https://github.com/azure/azure-cli', + classifiers=CLASSIFIERS, + packages=[ + 'azure', + 'azure.cli', + 'azure.cli.command_modules', + 'azure.cli.command_modules.botservice', + ], + package_data={'azure.cli.command_modules.botservice': ['*.json']}, + install_requires=DEPENDENCIES, + cmdclass=cmdclass, + include_package_data=True +)