url( r'^teams/(?P<tenantName>[\w\-]+)/apps/(?P<serviceAlias>[\w\-]+)/plugins/(?P<plugin_id>[\w\-]+)/install$', ServicePluginInstallView.as_view()), url( r'^teams/(?P<tenantName>[\w\-]+)/apps/(?P<serviceAlias>[\w\-]+)/plugins/(?P<plugin_id>[\w\-]+)/open$', ServicePluginOperationView.as_view()), url( r'^teams/(?P<tenantName>[\w\-]+)/apps/(?P<serviceAlias>[\w\-]+)/plugins/(?P<plugin_id>[\w\-]+)/configs$', ServicePluginConfigView.as_view()), # 插件分享 url( r'^teams/(?P<team_name>[\w\-]+)/plugins/(?P<plugin_id>[\w\-]+)/share/record$', PluginShareRecordView.as_view()), url(r'^teams/(?P<team_name>[\w\-]+)/plugin-share/(?P<share_id>[\w\-]+)$', PluginShareInfoView.as_view()), url( r'^teams/(?P<team_name>[\w\-]+)/plugin-share/(?P<share_id>[\w\-]+)/events$', PluginShareEventsView.as_view()), url( r'^teams/(?P<team_name>[\w\-]+)/plugin-share/(?P<share_id>[\w\-]+)/events/(?P<event_id>[\w\-]+)', PluginShareEventView.as_view()), url( r'^teams/(?P<team_name>[\w\-]+)/plugin-share/(?P<share_id>[\w\-]+)/complete$', PluginShareCompletionView.as_view()), # 插件市场 url(r'^market/plugins$', MarketPluginsView.as_view()), url(r'^market/plugins/sync$', SyncMarketPluginsView.as_view()), url(r'^market/plugins/sync-template$', SyncMarketPluginTemplatesView.as_view()),
# 获取插件构建状态 url(r'^teams/(?P<tenantName>[\w\-]+)/plugins/(?P<plugin_id>[\w\-]+)/version/(?P<build_version>[\w\-]+)/status$', PluginBuildStatusView.as_view()), # 插件与应用相关API url(r'^teams/(?P<tenantName>[\w\-]+)/apps/(?P<serviceAlias>[\w\-]+)/pluginlist$', ServicePluginsView.as_view()), url(r'^teams/(?P<tenantName>[\w\-]+)/apps/(?P<serviceAlias>[\w\-]+)/plugins/(?P<plugin_id>[\w\-]+)/install$', ServicePluginInstallView.as_view()), url(r'^teams/(?P<tenantName>[\w\-]+)/apps/(?P<serviceAlias>[\w\-]+)/plugins/(?P<plugin_id>[\w\-]+)/open$', ServicePluginOperationView.as_view()), url(r'^teams/(?P<tenantName>[\w\-]+)/apps/(?P<serviceAlias>[\w\-]+)/plugins/(?P<plugin_id>[\w\-]+)/configs$', ServicePluginConfigView.as_view()), # 插件分享 url(r'^teams/(?P<team_name>[\w\-]+)/plugins/(?P<plugin_id>[\w\-]+)/share/record$', PluginShareRecordView.as_view()), url(r'^teams/(?P<team_name>[\w\-]+)/plugin-share/(?P<share_id>[\w\-]+)$', PluginShareInfoView.as_view()), url(r'^teams/(?P<team_name>[\w\-]+)/plugin-share/(?P<share_id>[\w\-]+)/events$', PluginShareEventsView.as_view()), url(r'^teams/(?P<team_name>[\w\-]+)/plugin-share/(?P<share_id>[\w\-]+)/events/(?P<event_id>[\w\-]+)', PluginShareEventView.as_view()), url(r'^teams/(?P<team_name>[\w\-]+)/plugin-share/(?P<share_id>[\w\-]+)/complete$', PluginShareCompletionView.as_view()), # 插件市场 url(r'^market/plugins$', MarketPluginsView.as_view()), url(r'^market/plugins/sync$', SyncMarketPluginsView.as_view()), url(r'^market/plugins/sync-template$', SyncMarketPluginTemplatesView.as_view()), url(r'^market/plugins/uninstall-template$', UninstallPluginTemplateView.as_view()), url(r'^market/plugins/install$', InstallMarketPlugin.as_view()), url(r'^plugins$', InternalMarketPluginsView.as_view()), url(r'^plugins/installable$', InstallableInteralPluginsView.as_view()),