Merge pull request #39 from Microsoft/users/tedchamb/regen
generate new 4.0 and 4.1 REST Areas at M127, and update resource ids
This commit is contained in:
Коммит
c3c71cc3b0
|
@ -23,7 +23,7 @@ class AccountsClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '0d55247a-1c47-4462-9b1f-5e2125590ee6'
|
||||
|
||||
def create_account(self, info, use_precreated=None):
|
||||
"""CreateAccount.
|
||||
|
|
|
@ -23,7 +23,7 @@ class AccountsClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '0d55247a-1c47-4462-9b1f-5e2125590ee6'
|
||||
|
||||
def get_accounts(self, owner_id=None, member_id=None, properties=None):
|
||||
"""GetAccounts.
|
||||
|
|
|
@ -23,7 +23,7 @@ class ContributionsClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '8477aec9-a4c7-4bd4-a456-ba4c53c989cb'
|
||||
|
||||
def query_contribution_nodes(self, query):
|
||||
"""QueryContributionNodes.
|
||||
|
|
|
@ -23,7 +23,7 @@ class ContributionsClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '8477aec9-a4c7-4bd4-a456-ba4c53c989cb'
|
||||
|
||||
def query_contribution_nodes(self, query):
|
||||
"""QueryContributionNodes.
|
||||
|
|
|
@ -23,7 +23,7 @@ class DashboardClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '31c84e0a-3ece-48fd-a29d-100849af99ba'
|
||||
|
||||
def create_dashboard(self, dashboard, team_context):
|
||||
"""CreateDashboard.
|
||||
|
|
|
@ -23,7 +23,7 @@ class DashboardClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '31c84e0a-3ece-48fd-a29d-100849af99ba'
|
||||
|
||||
def create_dashboard(self, dashboard, team_context):
|
||||
"""CreateDashboard.
|
||||
|
|
|
@ -23,7 +23,7 @@ class ExtensionManagementClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '6c2b0933-3600-42ae-bf8b-93d4f7e83594'
|
||||
|
||||
def get_acquisition_options(self, item_id, test_commerce=None, is_free_or_trial_install=None):
|
||||
"""GetAcquisitionOptions.
|
||||
|
|
|
@ -23,7 +23,7 @@ class ExtensionManagementClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '6c2b0933-3600-42ae-bf8b-93d4f7e83594'
|
||||
|
||||
def get_installed_extensions(self, include_disabled_extensions=None, include_errors=None, asset_types=None, include_installation_issues=None):
|
||||
"""GetInstalledExtensions.
|
||||
|
|
|
@ -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.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
|
@ -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.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
|
@ -0,0 +1,127 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest import Serializer, Deserializer
|
||||
from ...vss_client import VssClient
|
||||
from . import models
|
||||
|
||||
|
||||
class FeatureAvailabilityClient(VssClient):
|
||||
"""FeatureAvailability
|
||||
:param str base_url: Service URL
|
||||
:param Authentication creds: Authenticated credentials.
|
||||
"""
|
||||
|
||||
def __init__(self, base_url=None, creds=None):
|
||||
super(FeatureAvailabilityClient, self).__init__(base_url, creds)
|
||||
client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
|
||||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
|
||||
def get_all_feature_flags(self, user_email=None):
|
||||
"""GetAllFeatureFlags.
|
||||
[Preview API] Retrieve a listing of all feature flags and their current states for a user
|
||||
:param str user_email: The email of the user to check
|
||||
:rtype: [FeatureFlag]
|
||||
"""
|
||||
query_parameters = {}
|
||||
if user_email is not None:
|
||||
query_parameters['userEmail'] = self._serialize.query('user_email', user_email, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='3e2b80f8-9e6f-441e-8393-005610692d9c',
|
||||
version='4.0-preview.1',
|
||||
query_parameters=query_parameters,
|
||||
returns_collection=True)
|
||||
return self._deserialize('[FeatureFlag]', response)
|
||||
|
||||
def get_feature_flag_by_name(self, name):
|
||||
"""GetFeatureFlagByName.
|
||||
[Preview API] Retrieve information on a single feature flag and its current states
|
||||
:param str name: The name of the feature to retrieve
|
||||
:rtype: :class:`<FeatureFlag> <feature-availability.v4_0.models.FeatureFlag>`
|
||||
"""
|
||||
route_values = {}
|
||||
if name is not None:
|
||||
route_values['name'] = self._serialize.url('name', name, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='3e2b80f8-9e6f-441e-8393-005610692d9c',
|
||||
version='4.0-preview.1',
|
||||
route_values=route_values)
|
||||
return self._deserialize('FeatureFlag', response)
|
||||
|
||||
def get_feature_flag_by_name_and_user_email(self, name, user_email):
|
||||
"""GetFeatureFlagByNameAndUserEmail.
|
||||
[Preview API] Retrieve information on a single feature flag and its current states for a user
|
||||
:param str name: The name of the feature to retrieve
|
||||
:param str user_email: The email of the user to check
|
||||
:rtype: :class:`<FeatureFlag> <feature-availability.v4_0.models.FeatureFlag>`
|
||||
"""
|
||||
route_values = {}
|
||||
if name is not None:
|
||||
route_values['name'] = self._serialize.url('name', name, 'str')
|
||||
query_parameters = {}
|
||||
if user_email is not None:
|
||||
query_parameters['userEmail'] = self._serialize.query('user_email', user_email, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='3e2b80f8-9e6f-441e-8393-005610692d9c',
|
||||
version='4.0-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters)
|
||||
return self._deserialize('FeatureFlag', response)
|
||||
|
||||
def get_feature_flag_by_name_and_user_id(self, name, user_id):
|
||||
"""GetFeatureFlagByNameAndUserId.
|
||||
[Preview API] Retrieve information on a single feature flag and its current states for a user
|
||||
:param str name: The name of the feature to retrieve
|
||||
:param str user_id: The id of the user to check
|
||||
:rtype: :class:`<FeatureFlag> <feature-availability.v4_0.models.FeatureFlag>`
|
||||
"""
|
||||
route_values = {}
|
||||
if name is not None:
|
||||
route_values['name'] = self._serialize.url('name', name, 'str')
|
||||
query_parameters = {}
|
||||
if user_id is not None:
|
||||
query_parameters['userId'] = self._serialize.query('user_id', user_id, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='3e2b80f8-9e6f-441e-8393-005610692d9c',
|
||||
version='4.0-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters)
|
||||
return self._deserialize('FeatureFlag', response)
|
||||
|
||||
def update_feature_flag(self, state, name, user_email=None, check_feature_exists=None, set_at_application_level_also=None):
|
||||
"""UpdateFeatureFlag.
|
||||
[Preview API] Change the state of an individual feature flag for a name
|
||||
:param :class:`<FeatureFlagPatch> <feature-availability.v4_0.models.FeatureFlagPatch>` state: State that should be set
|
||||
:param str name: The name of the feature to change
|
||||
:param str user_email:
|
||||
:param bool check_feature_exists: Checks if the feature exists before setting the state
|
||||
:param bool set_at_application_level_also:
|
||||
:rtype: :class:`<FeatureFlag> <feature-availability.v4_0.models.FeatureFlag>`
|
||||
"""
|
||||
route_values = {}
|
||||
if name is not None:
|
||||
route_values['name'] = self._serialize.url('name', name, 'str')
|
||||
query_parameters = {}
|
||||
if user_email is not None:
|
||||
query_parameters['userEmail'] = self._serialize.query('user_email', user_email, 'str')
|
||||
if check_feature_exists is not None:
|
||||
query_parameters['checkFeatureExists'] = self._serialize.query('check_feature_exists', check_feature_exists, 'bool')
|
||||
if set_at_application_level_also is not None:
|
||||
query_parameters['setAtApplicationLevelAlso'] = self._serialize.query('set_at_application_level_also', set_at_application_level_also, 'bool')
|
||||
content = self._serialize.body(state, 'FeatureFlagPatch')
|
||||
response = self._send(http_method='PATCH',
|
||||
location_id='3e2b80f8-9e6f-441e-8393-005610692d9c',
|
||||
version='4.0-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters,
|
||||
content=content)
|
||||
return self._deserialize('FeatureFlag', response)
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from .feature_flag import FeatureFlag
|
||||
from .feature_flag_patch import FeatureFlagPatch
|
||||
|
||||
__all__ = [
|
||||
'FeatureFlag',
|
||||
'FeatureFlagPatch',
|
||||
]
|
|
@ -0,0 +1,41 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class FeatureFlag(Model):
|
||||
"""FeatureFlag.
|
||||
|
||||
:param description:
|
||||
:type description: str
|
||||
:param effective_state:
|
||||
:type effective_state: str
|
||||
:param explicit_state:
|
||||
:type explicit_state: str
|
||||
:param name:
|
||||
:type name: str
|
||||
:param uri:
|
||||
:type uri: str
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'description': {'key': 'description', 'type': 'str'},
|
||||
'effective_state': {'key': 'effectiveState', 'type': 'str'},
|
||||
'explicit_state': {'key': 'explicitState', 'type': 'str'},
|
||||
'name': {'key': 'name', 'type': 'str'},
|
||||
'uri': {'key': 'uri', 'type': 'str'}
|
||||
}
|
||||
|
||||
def __init__(self, description=None, effective_state=None, explicit_state=None, name=None, uri=None):
|
||||
super(FeatureFlag, self).__init__()
|
||||
self.description = description
|
||||
self.effective_state = effective_state
|
||||
self.explicit_state = explicit_state
|
||||
self.name = name
|
||||
self.uri = uri
|
|
@ -0,0 +1,25 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class FeatureFlagPatch(Model):
|
||||
"""FeatureFlagPatch.
|
||||
|
||||
:param state:
|
||||
:type state: str
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'state': {'key': 'state', 'type': 'str'}
|
||||
}
|
||||
|
||||
def __init__(self, state=None):
|
||||
super(FeatureFlagPatch, self).__init__()
|
||||
self.state = state
|
|
@ -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.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
|
@ -0,0 +1,127 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest import Serializer, Deserializer
|
||||
from ...vss_client import VssClient
|
||||
from . import models
|
||||
|
||||
|
||||
class FeatureAvailabilityClient(VssClient):
|
||||
"""FeatureAvailability
|
||||
:param str base_url: Service URL
|
||||
:param Authentication creds: Authenticated credentials.
|
||||
"""
|
||||
|
||||
def __init__(self, base_url=None, creds=None):
|
||||
super(FeatureAvailabilityClient, self).__init__(base_url, creds)
|
||||
client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
|
||||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
|
||||
def get_all_feature_flags(self, user_email=None):
|
||||
"""GetAllFeatureFlags.
|
||||
[Preview API] Retrieve a listing of all feature flags and their current states for a user
|
||||
:param str user_email: The email of the user to check
|
||||
:rtype: [FeatureFlag]
|
||||
"""
|
||||
query_parameters = {}
|
||||
if user_email is not None:
|
||||
query_parameters['userEmail'] = self._serialize.query('user_email', user_email, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='3e2b80f8-9e6f-441e-8393-005610692d9c',
|
||||
version='4.1-preview.1',
|
||||
query_parameters=query_parameters,
|
||||
returns_collection=True)
|
||||
return self._deserialize('[FeatureFlag]', response)
|
||||
|
||||
def get_feature_flag_by_name(self, name):
|
||||
"""GetFeatureFlagByName.
|
||||
[Preview API] Retrieve information on a single feature flag and its current states
|
||||
:param str name: The name of the feature to retrieve
|
||||
:rtype: :class:`<FeatureFlag> <feature-availability.v4_1.models.FeatureFlag>`
|
||||
"""
|
||||
route_values = {}
|
||||
if name is not None:
|
||||
route_values['name'] = self._serialize.url('name', name, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='3e2b80f8-9e6f-441e-8393-005610692d9c',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values)
|
||||
return self._deserialize('FeatureFlag', response)
|
||||
|
||||
def get_feature_flag_by_name_and_user_email(self, name, user_email):
|
||||
"""GetFeatureFlagByNameAndUserEmail.
|
||||
[Preview API] Retrieve information on a single feature flag and its current states for a user
|
||||
:param str name: The name of the feature to retrieve
|
||||
:param str user_email: The email of the user to check
|
||||
:rtype: :class:`<FeatureFlag> <feature-availability.v4_1.models.FeatureFlag>`
|
||||
"""
|
||||
route_values = {}
|
||||
if name is not None:
|
||||
route_values['name'] = self._serialize.url('name', name, 'str')
|
||||
query_parameters = {}
|
||||
if user_email is not None:
|
||||
query_parameters['userEmail'] = self._serialize.query('user_email', user_email, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='3e2b80f8-9e6f-441e-8393-005610692d9c',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters)
|
||||
return self._deserialize('FeatureFlag', response)
|
||||
|
||||
def get_feature_flag_by_name_and_user_id(self, name, user_id):
|
||||
"""GetFeatureFlagByNameAndUserId.
|
||||
[Preview API] Retrieve information on a single feature flag and its current states for a user
|
||||
:param str name: The name of the feature to retrieve
|
||||
:param str user_id: The id of the user to check
|
||||
:rtype: :class:`<FeatureFlag> <feature-availability.v4_1.models.FeatureFlag>`
|
||||
"""
|
||||
route_values = {}
|
||||
if name is not None:
|
||||
route_values['name'] = self._serialize.url('name', name, 'str')
|
||||
query_parameters = {}
|
||||
if user_id is not None:
|
||||
query_parameters['userId'] = self._serialize.query('user_id', user_id, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='3e2b80f8-9e6f-441e-8393-005610692d9c',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters)
|
||||
return self._deserialize('FeatureFlag', response)
|
||||
|
||||
def update_feature_flag(self, state, name, user_email=None, check_feature_exists=None, set_at_application_level_also=None):
|
||||
"""UpdateFeatureFlag.
|
||||
[Preview API] Change the state of an individual feature flag for a name
|
||||
:param :class:`<FeatureFlagPatch> <feature-availability.v4_1.models.FeatureFlagPatch>` state: State that should be set
|
||||
:param str name: The name of the feature to change
|
||||
:param str user_email:
|
||||
:param bool check_feature_exists: Checks if the feature exists before setting the state
|
||||
:param bool set_at_application_level_also:
|
||||
:rtype: :class:`<FeatureFlag> <feature-availability.v4_1.models.FeatureFlag>`
|
||||
"""
|
||||
route_values = {}
|
||||
if name is not None:
|
||||
route_values['name'] = self._serialize.url('name', name, 'str')
|
||||
query_parameters = {}
|
||||
if user_email is not None:
|
||||
query_parameters['userEmail'] = self._serialize.query('user_email', user_email, 'str')
|
||||
if check_feature_exists is not None:
|
||||
query_parameters['checkFeatureExists'] = self._serialize.query('check_feature_exists', check_feature_exists, 'bool')
|
||||
if set_at_application_level_also is not None:
|
||||
query_parameters['setAtApplicationLevelAlso'] = self._serialize.query('set_at_application_level_also', set_at_application_level_also, 'bool')
|
||||
content = self._serialize.body(state, 'FeatureFlagPatch')
|
||||
response = self._send(http_method='PATCH',
|
||||
location_id='3e2b80f8-9e6f-441e-8393-005610692d9c',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters,
|
||||
content=content)
|
||||
return self._deserialize('FeatureFlag', response)
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from .feature_flag import FeatureFlag
|
||||
from .feature_flag_patch import FeatureFlagPatch
|
||||
|
||||
__all__ = [
|
||||
'FeatureFlag',
|
||||
'FeatureFlagPatch',
|
||||
]
|
|
@ -0,0 +1,41 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class FeatureFlag(Model):
|
||||
"""FeatureFlag.
|
||||
|
||||
:param description:
|
||||
:type description: str
|
||||
:param effective_state:
|
||||
:type effective_state: str
|
||||
:param explicit_state:
|
||||
:type explicit_state: str
|
||||
:param name:
|
||||
:type name: str
|
||||
:param uri:
|
||||
:type uri: str
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'description': {'key': 'description', 'type': 'str'},
|
||||
'effective_state': {'key': 'effectiveState', 'type': 'str'},
|
||||
'explicit_state': {'key': 'explicitState', 'type': 'str'},
|
||||
'name': {'key': 'name', 'type': 'str'},
|
||||
'uri': {'key': 'uri', 'type': 'str'}
|
||||
}
|
||||
|
||||
def __init__(self, description=None, effective_state=None, explicit_state=None, name=None, uri=None):
|
||||
super(FeatureFlag, self).__init__()
|
||||
self.description = description
|
||||
self.effective_state = effective_state
|
||||
self.explicit_state = explicit_state
|
||||
self.name = name
|
||||
self.uri = uri
|
|
@ -0,0 +1,25 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class FeatureFlagPatch(Model):
|
||||
"""FeatureFlagPatch.
|
||||
|
||||
:param state:
|
||||
:type state: str
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'state': {'key': 'state', 'type': 'str'}
|
||||
}
|
||||
|
||||
def __init__(self, state=None):
|
||||
super(FeatureFlagPatch, self).__init__()
|
||||
self.state = state
|
|
@ -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.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
|
@ -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.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
|
@ -0,0 +1,219 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest import Serializer, Deserializer
|
||||
from ...vss_client import VssClient
|
||||
from . import models
|
||||
|
||||
|
||||
class FeatureManagementClient(VssClient):
|
||||
"""FeatureManagement
|
||||
:param str base_url: Service URL
|
||||
:param Authentication creds: Authenticated credentials.
|
||||
"""
|
||||
|
||||
def __init__(self, base_url=None, creds=None):
|
||||
super(FeatureManagementClient, self).__init__(base_url, creds)
|
||||
client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
|
||||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
|
||||
def get_feature(self, feature_id):
|
||||
"""GetFeature.
|
||||
[Preview API] Get a specific feature by its id
|
||||
:param str feature_id: The contribution id of the feature
|
||||
:rtype: :class:`<ContributedFeature> <feature-management.v4_0.models.ContributedFeature>`
|
||||
"""
|
||||
route_values = {}
|
||||
if feature_id is not None:
|
||||
route_values['featureId'] = self._serialize.url('feature_id', feature_id, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='c4209f25-7a27-41dd-9f04-06080c7b6afd',
|
||||
version='4.0-preview.1',
|
||||
route_values=route_values)
|
||||
return self._deserialize('ContributedFeature', response)
|
||||
|
||||
def get_features(self, target_contribution_id=None):
|
||||
"""GetFeatures.
|
||||
[Preview API] Get a list of all defined features
|
||||
:param str target_contribution_id: Optional target contribution. If null/empty, return all features. If specified include the features that target the specified contribution.
|
||||
:rtype: [ContributedFeature]
|
||||
"""
|
||||
query_parameters = {}
|
||||
if target_contribution_id is not None:
|
||||
query_parameters['targetContributionId'] = self._serialize.query('target_contribution_id', target_contribution_id, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='c4209f25-7a27-41dd-9f04-06080c7b6afd',
|
||||
version='4.0-preview.1',
|
||||
query_parameters=query_parameters,
|
||||
returns_collection=True)
|
||||
return self._deserialize('[ContributedFeature]', response)
|
||||
|
||||
def get_feature_state(self, feature_id, user_scope):
|
||||
"""GetFeatureState.
|
||||
[Preview API] Get the state of the specified feature for the given user/all-users scope
|
||||
:param str feature_id: Contribution id of the feature
|
||||
:param str user_scope: User-Scope at which to get the value. Should be "me" for the current user or "host" for all users.
|
||||
:rtype: :class:`<ContributedFeatureState> <feature-management.v4_0.models.ContributedFeatureState>`
|
||||
"""
|
||||
route_values = {}
|
||||
if feature_id is not None:
|
||||
route_values['featureId'] = self._serialize.url('feature_id', feature_id, 'str')
|
||||
if user_scope is not None:
|
||||
route_values['userScope'] = self._serialize.url('user_scope', user_scope, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='98911314-3f9b-4eaf-80e8-83900d8e85d9',
|
||||
version='4.0-preview.1',
|
||||
route_values=route_values)
|
||||
return self._deserialize('ContributedFeatureState', response)
|
||||
|
||||
def set_feature_state(self, feature, feature_id, user_scope, reason=None, reason_code=None):
|
||||
"""SetFeatureState.
|
||||
[Preview API] Set the state of a feature
|
||||
:param :class:`<ContributedFeatureState> <feature-management.v4_0.models.ContributedFeatureState>` feature: Posted feature state object. Should specify the effective value.
|
||||
:param str feature_id: Contribution id of the feature
|
||||
:param str user_scope: User-Scope at which to set the value. Should be "me" for the current user or "host" for all users.
|
||||
:param str reason: Reason for changing the state
|
||||
:param str reason_code: Short reason code
|
||||
:rtype: :class:`<ContributedFeatureState> <feature-management.v4_0.models.ContributedFeatureState>`
|
||||
"""
|
||||
route_values = {}
|
||||
if feature_id is not None:
|
||||
route_values['featureId'] = self._serialize.url('feature_id', feature_id, 'str')
|
||||
if user_scope is not None:
|
||||
route_values['userScope'] = self._serialize.url('user_scope', user_scope, 'str')
|
||||
query_parameters = {}
|
||||
if reason is not None:
|
||||
query_parameters['reason'] = self._serialize.query('reason', reason, 'str')
|
||||
if reason_code is not None:
|
||||
query_parameters['reasonCode'] = self._serialize.query('reason_code', reason_code, 'str')
|
||||
content = self._serialize.body(feature, 'ContributedFeatureState')
|
||||
response = self._send(http_method='PATCH',
|
||||
location_id='98911314-3f9b-4eaf-80e8-83900d8e85d9',
|
||||
version='4.0-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters,
|
||||
content=content)
|
||||
return self._deserialize('ContributedFeatureState', response)
|
||||
|
||||
def get_feature_state_for_scope(self, feature_id, user_scope, scope_name, scope_value):
|
||||
"""GetFeatureStateForScope.
|
||||
[Preview API] Get the state of the specified feature for the given named scope
|
||||
:param str feature_id: Contribution id of the feature
|
||||
:param str user_scope: User-Scope at which to get the value. Should be "me" for the current user or "host" for all users.
|
||||
:param str scope_name: Scope at which to get the feature setting for (e.g. "project" or "team")
|
||||
:param str scope_value: Value of the scope (e.g. the project or team id)
|
||||
:rtype: :class:`<ContributedFeatureState> <feature-management.v4_0.models.ContributedFeatureState>`
|
||||
"""
|
||||
route_values = {}
|
||||
if feature_id is not None:
|
||||
route_values['featureId'] = self._serialize.url('feature_id', feature_id, 'str')
|
||||
if user_scope is not None:
|
||||
route_values['userScope'] = self._serialize.url('user_scope', user_scope, 'str')
|
||||
if scope_name is not None:
|
||||
route_values['scopeName'] = self._serialize.url('scope_name', scope_name, 'str')
|
||||
if scope_value is not None:
|
||||
route_values['scopeValue'] = self._serialize.url('scope_value', scope_value, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='dd291e43-aa9f-4cee-8465-a93c78e414a4',
|
||||
version='4.0-preview.1',
|
||||
route_values=route_values)
|
||||
return self._deserialize('ContributedFeatureState', response)
|
||||
|
||||
def set_feature_state_for_scope(self, feature, feature_id, user_scope, scope_name, scope_value, reason=None, reason_code=None):
|
||||
"""SetFeatureStateForScope.
|
||||
[Preview API] Set the state of a feature at a specific scope
|
||||
:param :class:`<ContributedFeatureState> <feature-management.v4_0.models.ContributedFeatureState>` feature: Posted feature state object. Should specify the effective value.
|
||||
:param str feature_id: Contribution id of the feature
|
||||
:param str user_scope: User-Scope at which to set the value. Should be "me" for the current user or "host" for all users.
|
||||
:param str scope_name: Scope at which to get the feature setting for (e.g. "project" or "team")
|
||||
:param str scope_value: Value of the scope (e.g. the project or team id)
|
||||
:param str reason: Reason for changing the state
|
||||
:param str reason_code: Short reason code
|
||||
:rtype: :class:`<ContributedFeatureState> <feature-management.v4_0.models.ContributedFeatureState>`
|
||||
"""
|
||||
route_values = {}
|
||||
if feature_id is not None:
|
||||
route_values['featureId'] = self._serialize.url('feature_id', feature_id, 'str')
|
||||
if user_scope is not None:
|
||||
route_values['userScope'] = self._serialize.url('user_scope', user_scope, 'str')
|
||||
if scope_name is not None:
|
||||
route_values['scopeName'] = self._serialize.url('scope_name', scope_name, 'str')
|
||||
if scope_value is not None:
|
||||
route_values['scopeValue'] = self._serialize.url('scope_value', scope_value, 'str')
|
||||
query_parameters = {}
|
||||
if reason is not None:
|
||||
query_parameters['reason'] = self._serialize.query('reason', reason, 'str')
|
||||
if reason_code is not None:
|
||||
query_parameters['reasonCode'] = self._serialize.query('reason_code', reason_code, 'str')
|
||||
content = self._serialize.body(feature, 'ContributedFeatureState')
|
||||
response = self._send(http_method='PATCH',
|
||||
location_id='dd291e43-aa9f-4cee-8465-a93c78e414a4',
|
||||
version='4.0-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters,
|
||||
content=content)
|
||||
return self._deserialize('ContributedFeatureState', response)
|
||||
|
||||
def query_feature_states(self, query):
|
||||
"""QueryFeatureStates.
|
||||
[Preview API] Get the effective state for a list of feature ids
|
||||
:param :class:`<ContributedFeatureStateQuery> <feature-management.v4_0.models.ContributedFeatureStateQuery>` query: Features to query along with current scope values
|
||||
:rtype: :class:`<ContributedFeatureStateQuery> <feature-management.v4_0.models.ContributedFeatureStateQuery>`
|
||||
"""
|
||||
content = self._serialize.body(query, 'ContributedFeatureStateQuery')
|
||||
response = self._send(http_method='POST',
|
||||
location_id='2b4486ad-122b-400c-ae65-17b6672c1f9d',
|
||||
version='4.0-preview.1',
|
||||
content=content)
|
||||
return self._deserialize('ContributedFeatureStateQuery', response)
|
||||
|
||||
def query_feature_states_for_default_scope(self, query, user_scope):
|
||||
"""QueryFeatureStatesForDefaultScope.
|
||||
[Preview API] Get the states of the specified features for the default scope
|
||||
:param :class:`<ContributedFeatureStateQuery> <feature-management.v4_0.models.ContributedFeatureStateQuery>` query: Query describing the features to query.
|
||||
:param str user_scope:
|
||||
:rtype: :class:`<ContributedFeatureStateQuery> <feature-management.v4_0.models.ContributedFeatureStateQuery>`
|
||||
"""
|
||||
route_values = {}
|
||||
if user_scope is not None:
|
||||
route_values['userScope'] = self._serialize.url('user_scope', user_scope, 'str')
|
||||
content = self._serialize.body(query, 'ContributedFeatureStateQuery')
|
||||
response = self._send(http_method='POST',
|
||||
location_id='3f810f28-03e2-4239-b0bc-788add3005e5',
|
||||
version='4.0-preview.1',
|
||||
route_values=route_values,
|
||||
content=content)
|
||||
return self._deserialize('ContributedFeatureStateQuery', response)
|
||||
|
||||
def query_feature_states_for_named_scope(self, query, user_scope, scope_name, scope_value):
|
||||
"""QueryFeatureStatesForNamedScope.
|
||||
[Preview API] Get the states of the specified features for the specific named scope
|
||||
:param :class:`<ContributedFeatureStateQuery> <feature-management.v4_0.models.ContributedFeatureStateQuery>` query: Query describing the features to query.
|
||||
:param str user_scope:
|
||||
:param str scope_name:
|
||||
:param str scope_value:
|
||||
:rtype: :class:`<ContributedFeatureStateQuery> <feature-management.v4_0.models.ContributedFeatureStateQuery>`
|
||||
"""
|
||||
route_values = {}
|
||||
if user_scope is not None:
|
||||
route_values['userScope'] = self._serialize.url('user_scope', user_scope, 'str')
|
||||
if scope_name is not None:
|
||||
route_values['scopeName'] = self._serialize.url('scope_name', scope_name, 'str')
|
||||
if scope_value is not None:
|
||||
route_values['scopeValue'] = self._serialize.url('scope_value', scope_value, 'str')
|
||||
content = self._serialize.body(query, 'ContributedFeatureStateQuery')
|
||||
response = self._send(http_method='POST',
|
||||
location_id='f29e997b-c2da-4d15-8380-765788a1a74c',
|
||||
version='4.0-preview.1',
|
||||
route_values=route_values,
|
||||
content=content)
|
||||
return self._deserialize('ContributedFeatureStateQuery', response)
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from .contributed_feature import ContributedFeature
|
||||
from .contributed_feature_setting_scope import ContributedFeatureSettingScope
|
||||
from .contributed_feature_state import ContributedFeatureState
|
||||
from .contributed_feature_state_query import ContributedFeatureStateQuery
|
||||
from .contributed_feature_value_rule import ContributedFeatureValueRule
|
||||
from .reference_links import ReferenceLinks
|
||||
|
||||
__all__ = [
|
||||
'ContributedFeature',
|
||||
'ContributedFeatureSettingScope',
|
||||
'ContributedFeatureState',
|
||||
'ContributedFeatureStateQuery',
|
||||
'ContributedFeatureValueRule',
|
||||
'ReferenceLinks',
|
||||
]
|
|
@ -0,0 +1,57 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ContributedFeature(Model):
|
||||
"""ContributedFeature.
|
||||
|
||||
:param _links: Named links describing the feature
|
||||
:type _links: :class:`ReferenceLinks <feature-management.v4_0.models.ReferenceLinks>`
|
||||
:param default_state: If true, the feature is enabled unless overridden at some scope
|
||||
:type default_state: bool
|
||||
:param default_value_rules: Rules for setting the default value if not specified by any setting/scope. Evaluated in order until a rule returns an Enabled or Disabled state (not Undefined)
|
||||
:type default_value_rules: list of :class:`ContributedFeatureValueRule <feature-management.v4_0.models.ContributedFeatureValueRule>`
|
||||
:param description: The description of the feature
|
||||
:type description: str
|
||||
:param id: The full contribution id of the feature
|
||||
:type id: str
|
||||
:param name: The friendly name of the feature
|
||||
:type name: str
|
||||
:param override_rules: Rules for overriding a feature value. These rules are run before explicit user/host state values are checked. They are evaluated in order until a rule returns an Enabled or Disabled state (not Undefined)
|
||||
:type override_rules: list of :class:`ContributedFeatureValueRule <feature-management.v4_0.models.ContributedFeatureValueRule>`
|
||||
:param scopes: The scopes/levels at which settings can set the enabled/disabled state of this feature
|
||||
:type scopes: list of :class:`ContributedFeatureSettingScope <feature-management.v4_0.models.ContributedFeatureSettingScope>`
|
||||
:param service_instance_type: The service instance id of the service that owns this feature
|
||||
:type service_instance_type: str
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'_links': {'key': '_links', 'type': 'ReferenceLinks'},
|
||||
'default_state': {'key': 'defaultState', 'type': 'bool'},
|
||||
'default_value_rules': {'key': 'defaultValueRules', 'type': '[ContributedFeatureValueRule]'},
|
||||
'description': {'key': 'description', 'type': 'str'},
|
||||
'id': {'key': 'id', 'type': 'str'},
|
||||
'name': {'key': 'name', 'type': 'str'},
|
||||
'override_rules': {'key': 'overrideRules', 'type': '[ContributedFeatureValueRule]'},
|
||||
'scopes': {'key': 'scopes', 'type': '[ContributedFeatureSettingScope]'},
|
||||
'service_instance_type': {'key': 'serviceInstanceType', 'type': 'str'}
|
||||
}
|
||||
|
||||
def __init__(self, _links=None, default_state=None, default_value_rules=None, description=None, id=None, name=None, override_rules=None, scopes=None, service_instance_type=None):
|
||||
super(ContributedFeature, self).__init__()
|
||||
self._links = _links
|
||||
self.default_state = default_state
|
||||
self.default_value_rules = default_value_rules
|
||||
self.description = description
|
||||
self.id = id
|
||||
self.name = name
|
||||
self.override_rules = override_rules
|
||||
self.scopes = scopes
|
||||
self.service_instance_type = service_instance_type
|
|
@ -0,0 +1,29 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ContributedFeatureSettingScope(Model):
|
||||
"""ContributedFeatureSettingScope.
|
||||
|
||||
:param setting_scope: The name of the settings scope to use when reading/writing the setting
|
||||
:type setting_scope: str
|
||||
:param user_scoped: Whether this is a user-scope or this is a host-wide (all users) setting
|
||||
:type user_scoped: bool
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'setting_scope': {'key': 'settingScope', 'type': 'str'},
|
||||
'user_scoped': {'key': 'userScoped', 'type': 'bool'}
|
||||
}
|
||||
|
||||
def __init__(self, setting_scope=None, user_scoped=None):
|
||||
super(ContributedFeatureSettingScope, self).__init__()
|
||||
self.setting_scope = setting_scope
|
||||
self.user_scoped = user_scoped
|
|
@ -0,0 +1,33 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ContributedFeatureState(Model):
|
||||
"""ContributedFeatureState.
|
||||
|
||||
:param feature_id: The full contribution id of the feature
|
||||
:type feature_id: str
|
||||
:param scope: The scope at which this state applies
|
||||
:type scope: :class:`ContributedFeatureSettingScope <feature-management.v4_0.models.ContributedFeatureSettingScope>`
|
||||
:param state: The current state of this feature
|
||||
:type state: object
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'feature_id': {'key': 'featureId', 'type': 'str'},
|
||||
'scope': {'key': 'scope', 'type': 'ContributedFeatureSettingScope'},
|
||||
'state': {'key': 'state', 'type': 'object'}
|
||||
}
|
||||
|
||||
def __init__(self, feature_id=None, scope=None, state=None):
|
||||
super(ContributedFeatureState, self).__init__()
|
||||
self.feature_id = feature_id
|
||||
self.scope = scope
|
||||
self.state = state
|
|
@ -0,0 +1,33 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ContributedFeatureStateQuery(Model):
|
||||
"""ContributedFeatureStateQuery.
|
||||
|
||||
:param feature_ids: The list of feature ids to query
|
||||
:type feature_ids: list of str
|
||||
:param feature_states: The query result containing the current feature states for each of the queried feature ids
|
||||
:type feature_states: dict
|
||||
:param scope_values: A dictionary of scope values (project name, etc.) to use in the query (if querying across scopes)
|
||||
:type scope_values: dict
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'feature_ids': {'key': 'featureIds', 'type': '[str]'},
|
||||
'feature_states': {'key': 'featureStates', 'type': '{ContributedFeatureState}'},
|
||||
'scope_values': {'key': 'scopeValues', 'type': '{str}'}
|
||||
}
|
||||
|
||||
def __init__(self, feature_ids=None, feature_states=None, scope_values=None):
|
||||
super(ContributedFeatureStateQuery, self).__init__()
|
||||
self.feature_ids = feature_ids
|
||||
self.feature_states = feature_states
|
||||
self.scope_values = scope_values
|
|
@ -0,0 +1,29 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ContributedFeatureValueRule(Model):
|
||||
"""ContributedFeatureValueRule.
|
||||
|
||||
:param name: Name of the IContributedFeatureValuePlugin to run
|
||||
:type name: str
|
||||
:param properties: Properties to feed to the IContributedFeatureValuePlugin
|
||||
:type properties: dict
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'name': {'key': 'name', 'type': 'str'},
|
||||
'properties': {'key': 'properties', 'type': '{object}'}
|
||||
}
|
||||
|
||||
def __init__(self, name=None, properties=None):
|
||||
super(ContributedFeatureValueRule, self).__init__()
|
||||
self.name = name
|
||||
self.properties = properties
|
|
@ -0,0 +1,25 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ReferenceLinks(Model):
|
||||
"""ReferenceLinks.
|
||||
|
||||
:param links: The readonly view of the links. Because Reference links are readonly, we only want to expose them as read only.
|
||||
:type links: dict
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'links': {'key': 'links', 'type': '{object}'}
|
||||
}
|
||||
|
||||
def __init__(self, links=None):
|
||||
super(ReferenceLinks, self).__init__()
|
||||
self.links = links
|
|
@ -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.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
|
@ -0,0 +1,219 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest import Serializer, Deserializer
|
||||
from ...vss_client import VssClient
|
||||
from . import models
|
||||
|
||||
|
||||
class FeatureManagementClient(VssClient):
|
||||
"""FeatureManagement
|
||||
:param str base_url: Service URL
|
||||
:param Authentication creds: Authenticated credentials.
|
||||
"""
|
||||
|
||||
def __init__(self, base_url=None, creds=None):
|
||||
super(FeatureManagementClient, self).__init__(base_url, creds)
|
||||
client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
|
||||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
|
||||
def get_feature(self, feature_id):
|
||||
"""GetFeature.
|
||||
[Preview API] Get a specific feature by its id
|
||||
:param str feature_id: The contribution id of the feature
|
||||
:rtype: :class:`<ContributedFeature> <feature-management.v4_1.models.ContributedFeature>`
|
||||
"""
|
||||
route_values = {}
|
||||
if feature_id is not None:
|
||||
route_values['featureId'] = self._serialize.url('feature_id', feature_id, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='c4209f25-7a27-41dd-9f04-06080c7b6afd',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values)
|
||||
return self._deserialize('ContributedFeature', response)
|
||||
|
||||
def get_features(self, target_contribution_id=None):
|
||||
"""GetFeatures.
|
||||
[Preview API] Get a list of all defined features
|
||||
:param str target_contribution_id: Optional target contribution. If null/empty, return all features. If specified include the features that target the specified contribution.
|
||||
:rtype: [ContributedFeature]
|
||||
"""
|
||||
query_parameters = {}
|
||||
if target_contribution_id is not None:
|
||||
query_parameters['targetContributionId'] = self._serialize.query('target_contribution_id', target_contribution_id, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='c4209f25-7a27-41dd-9f04-06080c7b6afd',
|
||||
version='4.1-preview.1',
|
||||
query_parameters=query_parameters,
|
||||
returns_collection=True)
|
||||
return self._deserialize('[ContributedFeature]', response)
|
||||
|
||||
def get_feature_state(self, feature_id, user_scope):
|
||||
"""GetFeatureState.
|
||||
[Preview API] Get the state of the specified feature for the given user/all-users scope
|
||||
:param str feature_id: Contribution id of the feature
|
||||
:param str user_scope: User-Scope at which to get the value. Should be "me" for the current user or "host" for all users.
|
||||
:rtype: :class:`<ContributedFeatureState> <feature-management.v4_1.models.ContributedFeatureState>`
|
||||
"""
|
||||
route_values = {}
|
||||
if feature_id is not None:
|
||||
route_values['featureId'] = self._serialize.url('feature_id', feature_id, 'str')
|
||||
if user_scope is not None:
|
||||
route_values['userScope'] = self._serialize.url('user_scope', user_scope, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='98911314-3f9b-4eaf-80e8-83900d8e85d9',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values)
|
||||
return self._deserialize('ContributedFeatureState', response)
|
||||
|
||||
def set_feature_state(self, feature, feature_id, user_scope, reason=None, reason_code=None):
|
||||
"""SetFeatureState.
|
||||
[Preview API] Set the state of a feature
|
||||
:param :class:`<ContributedFeatureState> <feature-management.v4_1.models.ContributedFeatureState>` feature: Posted feature state object. Should specify the effective value.
|
||||
:param str feature_id: Contribution id of the feature
|
||||
:param str user_scope: User-Scope at which to set the value. Should be "me" for the current user or "host" for all users.
|
||||
:param str reason: Reason for changing the state
|
||||
:param str reason_code: Short reason code
|
||||
:rtype: :class:`<ContributedFeatureState> <feature-management.v4_1.models.ContributedFeatureState>`
|
||||
"""
|
||||
route_values = {}
|
||||
if feature_id is not None:
|
||||
route_values['featureId'] = self._serialize.url('feature_id', feature_id, 'str')
|
||||
if user_scope is not None:
|
||||
route_values['userScope'] = self._serialize.url('user_scope', user_scope, 'str')
|
||||
query_parameters = {}
|
||||
if reason is not None:
|
||||
query_parameters['reason'] = self._serialize.query('reason', reason, 'str')
|
||||
if reason_code is not None:
|
||||
query_parameters['reasonCode'] = self._serialize.query('reason_code', reason_code, 'str')
|
||||
content = self._serialize.body(feature, 'ContributedFeatureState')
|
||||
response = self._send(http_method='PATCH',
|
||||
location_id='98911314-3f9b-4eaf-80e8-83900d8e85d9',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters,
|
||||
content=content)
|
||||
return self._deserialize('ContributedFeatureState', response)
|
||||
|
||||
def get_feature_state_for_scope(self, feature_id, user_scope, scope_name, scope_value):
|
||||
"""GetFeatureStateForScope.
|
||||
[Preview API] Get the state of the specified feature for the given named scope
|
||||
:param str feature_id: Contribution id of the feature
|
||||
:param str user_scope: User-Scope at which to get the value. Should be "me" for the current user or "host" for all users.
|
||||
:param str scope_name: Scope at which to get the feature setting for (e.g. "project" or "team")
|
||||
:param str scope_value: Value of the scope (e.g. the project or team id)
|
||||
:rtype: :class:`<ContributedFeatureState> <feature-management.v4_1.models.ContributedFeatureState>`
|
||||
"""
|
||||
route_values = {}
|
||||
if feature_id is not None:
|
||||
route_values['featureId'] = self._serialize.url('feature_id', feature_id, 'str')
|
||||
if user_scope is not None:
|
||||
route_values['userScope'] = self._serialize.url('user_scope', user_scope, 'str')
|
||||
if scope_name is not None:
|
||||
route_values['scopeName'] = self._serialize.url('scope_name', scope_name, 'str')
|
||||
if scope_value is not None:
|
||||
route_values['scopeValue'] = self._serialize.url('scope_value', scope_value, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='dd291e43-aa9f-4cee-8465-a93c78e414a4',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values)
|
||||
return self._deserialize('ContributedFeatureState', response)
|
||||
|
||||
def set_feature_state_for_scope(self, feature, feature_id, user_scope, scope_name, scope_value, reason=None, reason_code=None):
|
||||
"""SetFeatureStateForScope.
|
||||
[Preview API] Set the state of a feature at a specific scope
|
||||
:param :class:`<ContributedFeatureState> <feature-management.v4_1.models.ContributedFeatureState>` feature: Posted feature state object. Should specify the effective value.
|
||||
:param str feature_id: Contribution id of the feature
|
||||
:param str user_scope: User-Scope at which to set the value. Should be "me" for the current user or "host" for all users.
|
||||
:param str scope_name: Scope at which to get the feature setting for (e.g. "project" or "team")
|
||||
:param str scope_value: Value of the scope (e.g. the project or team id)
|
||||
:param str reason: Reason for changing the state
|
||||
:param str reason_code: Short reason code
|
||||
:rtype: :class:`<ContributedFeatureState> <feature-management.v4_1.models.ContributedFeatureState>`
|
||||
"""
|
||||
route_values = {}
|
||||
if feature_id is not None:
|
||||
route_values['featureId'] = self._serialize.url('feature_id', feature_id, 'str')
|
||||
if user_scope is not None:
|
||||
route_values['userScope'] = self._serialize.url('user_scope', user_scope, 'str')
|
||||
if scope_name is not None:
|
||||
route_values['scopeName'] = self._serialize.url('scope_name', scope_name, 'str')
|
||||
if scope_value is not None:
|
||||
route_values['scopeValue'] = self._serialize.url('scope_value', scope_value, 'str')
|
||||
query_parameters = {}
|
||||
if reason is not None:
|
||||
query_parameters['reason'] = self._serialize.query('reason', reason, 'str')
|
||||
if reason_code is not None:
|
||||
query_parameters['reasonCode'] = self._serialize.query('reason_code', reason_code, 'str')
|
||||
content = self._serialize.body(feature, 'ContributedFeatureState')
|
||||
response = self._send(http_method='PATCH',
|
||||
location_id='dd291e43-aa9f-4cee-8465-a93c78e414a4',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters,
|
||||
content=content)
|
||||
return self._deserialize('ContributedFeatureState', response)
|
||||
|
||||
def query_feature_states(self, query):
|
||||
"""QueryFeatureStates.
|
||||
[Preview API] Get the effective state for a list of feature ids
|
||||
:param :class:`<ContributedFeatureStateQuery> <feature-management.v4_1.models.ContributedFeatureStateQuery>` query: Features to query along with current scope values
|
||||
:rtype: :class:`<ContributedFeatureStateQuery> <feature-management.v4_1.models.ContributedFeatureStateQuery>`
|
||||
"""
|
||||
content = self._serialize.body(query, 'ContributedFeatureStateQuery')
|
||||
response = self._send(http_method='POST',
|
||||
location_id='2b4486ad-122b-400c-ae65-17b6672c1f9d',
|
||||
version='4.1-preview.1',
|
||||
content=content)
|
||||
return self._deserialize('ContributedFeatureStateQuery', response)
|
||||
|
||||
def query_feature_states_for_default_scope(self, query, user_scope):
|
||||
"""QueryFeatureStatesForDefaultScope.
|
||||
[Preview API] Get the states of the specified features for the default scope
|
||||
:param :class:`<ContributedFeatureStateQuery> <feature-management.v4_1.models.ContributedFeatureStateQuery>` query: Query describing the features to query.
|
||||
:param str user_scope:
|
||||
:rtype: :class:`<ContributedFeatureStateQuery> <feature-management.v4_1.models.ContributedFeatureStateQuery>`
|
||||
"""
|
||||
route_values = {}
|
||||
if user_scope is not None:
|
||||
route_values['userScope'] = self._serialize.url('user_scope', user_scope, 'str')
|
||||
content = self._serialize.body(query, 'ContributedFeatureStateQuery')
|
||||
response = self._send(http_method='POST',
|
||||
location_id='3f810f28-03e2-4239-b0bc-788add3005e5',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
content=content)
|
||||
return self._deserialize('ContributedFeatureStateQuery', response)
|
||||
|
||||
def query_feature_states_for_named_scope(self, query, user_scope, scope_name, scope_value):
|
||||
"""QueryFeatureStatesForNamedScope.
|
||||
[Preview API] Get the states of the specified features for the specific named scope
|
||||
:param :class:`<ContributedFeatureStateQuery> <feature-management.v4_1.models.ContributedFeatureStateQuery>` query: Query describing the features to query.
|
||||
:param str user_scope:
|
||||
:param str scope_name:
|
||||
:param str scope_value:
|
||||
:rtype: :class:`<ContributedFeatureStateQuery> <feature-management.v4_1.models.ContributedFeatureStateQuery>`
|
||||
"""
|
||||
route_values = {}
|
||||
if user_scope is not None:
|
||||
route_values['userScope'] = self._serialize.url('user_scope', user_scope, 'str')
|
||||
if scope_name is not None:
|
||||
route_values['scopeName'] = self._serialize.url('scope_name', scope_name, 'str')
|
||||
if scope_value is not None:
|
||||
route_values['scopeValue'] = self._serialize.url('scope_value', scope_value, 'str')
|
||||
content = self._serialize.body(query, 'ContributedFeatureStateQuery')
|
||||
response = self._send(http_method='POST',
|
||||
location_id='f29e997b-c2da-4d15-8380-765788a1a74c',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
content=content)
|
||||
return self._deserialize('ContributedFeatureStateQuery', response)
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from .contributed_feature import ContributedFeature
|
||||
from .contributed_feature_setting_scope import ContributedFeatureSettingScope
|
||||
from .contributed_feature_state import ContributedFeatureState
|
||||
from .contributed_feature_state_query import ContributedFeatureStateQuery
|
||||
from .contributed_feature_value_rule import ContributedFeatureValueRule
|
||||
from .reference_links import ReferenceLinks
|
||||
|
||||
__all__ = [
|
||||
'ContributedFeature',
|
||||
'ContributedFeatureSettingScope',
|
||||
'ContributedFeatureState',
|
||||
'ContributedFeatureStateQuery',
|
||||
'ContributedFeatureValueRule',
|
||||
'ReferenceLinks',
|
||||
]
|
|
@ -0,0 +1,57 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ContributedFeature(Model):
|
||||
"""ContributedFeature.
|
||||
|
||||
:param _links: Named links describing the feature
|
||||
:type _links: :class:`ReferenceLinks <feature-management.v4_1.models.ReferenceLinks>`
|
||||
:param default_state: If true, the feature is enabled unless overridden at some scope
|
||||
:type default_state: bool
|
||||
:param default_value_rules: Rules for setting the default value if not specified by any setting/scope. Evaluated in order until a rule returns an Enabled or Disabled state (not Undefined)
|
||||
:type default_value_rules: list of :class:`ContributedFeatureValueRule <feature-management.v4_1.models.ContributedFeatureValueRule>`
|
||||
:param description: The description of the feature
|
||||
:type description: str
|
||||
:param id: The full contribution id of the feature
|
||||
:type id: str
|
||||
:param name: The friendly name of the feature
|
||||
:type name: str
|
||||
:param override_rules: Rules for overriding a feature value. These rules are run before explicit user/host state values are checked. They are evaluated in order until a rule returns an Enabled or Disabled state (not Undefined)
|
||||
:type override_rules: list of :class:`ContributedFeatureValueRule <feature-management.v4_1.models.ContributedFeatureValueRule>`
|
||||
:param scopes: The scopes/levels at which settings can set the enabled/disabled state of this feature
|
||||
:type scopes: list of :class:`ContributedFeatureSettingScope <feature-management.v4_1.models.ContributedFeatureSettingScope>`
|
||||
:param service_instance_type: The service instance id of the service that owns this feature
|
||||
:type service_instance_type: str
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'_links': {'key': '_links', 'type': 'ReferenceLinks'},
|
||||
'default_state': {'key': 'defaultState', 'type': 'bool'},
|
||||
'default_value_rules': {'key': 'defaultValueRules', 'type': '[ContributedFeatureValueRule]'},
|
||||
'description': {'key': 'description', 'type': 'str'},
|
||||
'id': {'key': 'id', 'type': 'str'},
|
||||
'name': {'key': 'name', 'type': 'str'},
|
||||
'override_rules': {'key': 'overrideRules', 'type': '[ContributedFeatureValueRule]'},
|
||||
'scopes': {'key': 'scopes', 'type': '[ContributedFeatureSettingScope]'},
|
||||
'service_instance_type': {'key': 'serviceInstanceType', 'type': 'str'}
|
||||
}
|
||||
|
||||
def __init__(self, _links=None, default_state=None, default_value_rules=None, description=None, id=None, name=None, override_rules=None, scopes=None, service_instance_type=None):
|
||||
super(ContributedFeature, self).__init__()
|
||||
self._links = _links
|
||||
self.default_state = default_state
|
||||
self.default_value_rules = default_value_rules
|
||||
self.description = description
|
||||
self.id = id
|
||||
self.name = name
|
||||
self.override_rules = override_rules
|
||||
self.scopes = scopes
|
||||
self.service_instance_type = service_instance_type
|
|
@ -0,0 +1,29 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ContributedFeatureSettingScope(Model):
|
||||
"""ContributedFeatureSettingScope.
|
||||
|
||||
:param setting_scope: The name of the settings scope to use when reading/writing the setting
|
||||
:type setting_scope: str
|
||||
:param user_scoped: Whether this is a user-scope or this is a host-wide (all users) setting
|
||||
:type user_scoped: bool
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'setting_scope': {'key': 'settingScope', 'type': 'str'},
|
||||
'user_scoped': {'key': 'userScoped', 'type': 'bool'}
|
||||
}
|
||||
|
||||
def __init__(self, setting_scope=None, user_scoped=None):
|
||||
super(ContributedFeatureSettingScope, self).__init__()
|
||||
self.setting_scope = setting_scope
|
||||
self.user_scoped = user_scoped
|
|
@ -0,0 +1,41 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ContributedFeatureState(Model):
|
||||
"""ContributedFeatureState.
|
||||
|
||||
:param feature_id: The full contribution id of the feature
|
||||
:type feature_id: str
|
||||
:param overridden: True if the effective state was set by an override rule (indicating that the state cannot be managed by the end user)
|
||||
:type overridden: bool
|
||||
:param reason: Reason that the state was set (by a plugin/rule).
|
||||
:type reason: str
|
||||
:param scope: The scope at which this state applies
|
||||
:type scope: :class:`ContributedFeatureSettingScope <feature-management.v4_1.models.ContributedFeatureSettingScope>`
|
||||
:param state: The current state of this feature
|
||||
:type state: object
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'feature_id': {'key': 'featureId', 'type': 'str'},
|
||||
'overridden': {'key': 'overridden', 'type': 'bool'},
|
||||
'reason': {'key': 'reason', 'type': 'str'},
|
||||
'scope': {'key': 'scope', 'type': 'ContributedFeatureSettingScope'},
|
||||
'state': {'key': 'state', 'type': 'object'}
|
||||
}
|
||||
|
||||
def __init__(self, feature_id=None, overridden=None, reason=None, scope=None, state=None):
|
||||
super(ContributedFeatureState, self).__init__()
|
||||
self.feature_id = feature_id
|
||||
self.overridden = overridden
|
||||
self.reason = reason
|
||||
self.scope = scope
|
||||
self.state = state
|
|
@ -0,0 +1,33 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ContributedFeatureStateQuery(Model):
|
||||
"""ContributedFeatureStateQuery.
|
||||
|
||||
:param feature_ids: The list of feature ids to query
|
||||
:type feature_ids: list of str
|
||||
:param feature_states: The query result containing the current feature states for each of the queried feature ids
|
||||
:type feature_states: dict
|
||||
:param scope_values: A dictionary of scope values (project name, etc.) to use in the query (if querying across scopes)
|
||||
:type scope_values: dict
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'feature_ids': {'key': 'featureIds', 'type': '[str]'},
|
||||
'feature_states': {'key': 'featureStates', 'type': '{ContributedFeatureState}'},
|
||||
'scope_values': {'key': 'scopeValues', 'type': '{str}'}
|
||||
}
|
||||
|
||||
def __init__(self, feature_ids=None, feature_states=None, scope_values=None):
|
||||
super(ContributedFeatureStateQuery, self).__init__()
|
||||
self.feature_ids = feature_ids
|
||||
self.feature_states = feature_states
|
||||
self.scope_values = scope_values
|
|
@ -0,0 +1,29 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ContributedFeatureValueRule(Model):
|
||||
"""ContributedFeatureValueRule.
|
||||
|
||||
:param name: Name of the IContributedFeatureValuePlugin to run
|
||||
:type name: str
|
||||
:param properties: Properties to feed to the IContributedFeatureValuePlugin
|
||||
:type properties: dict
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'name': {'key': 'name', 'type': 'str'},
|
||||
'properties': {'key': 'properties', 'type': '{object}'}
|
||||
}
|
||||
|
||||
def __init__(self, name=None, properties=None):
|
||||
super(ContributedFeatureValueRule, self).__init__()
|
||||
self.name = name
|
||||
self.properties = properties
|
|
@ -0,0 +1,25 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ReferenceLinks(Model):
|
||||
"""ReferenceLinks.
|
||||
|
||||
:param links: The readonly view of the links. Because Reference links are readonly, we only want to expose them as read only.
|
||||
:type links: dict
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'links': {'key': 'links', 'type': '{object}'}
|
||||
}
|
||||
|
||||
def __init__(self, links=None):
|
||||
super(ReferenceLinks, self).__init__()
|
||||
self.links = links
|
|
@ -23,7 +23,7 @@ class GalleryClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '69d21c00-f135-441b-b5ce-3626378e0819'
|
||||
|
||||
def share_extension_by_id(self, extension_id, account_name):
|
||||
"""ShareExtensionById.
|
||||
|
|
|
@ -23,7 +23,7 @@ class GalleryClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '69d21c00-f135-441b-b5ce-3626378e0819'
|
||||
|
||||
def share_extension_by_id(self, extension_id, account_name):
|
||||
"""ShareExtensionById.
|
||||
|
|
|
@ -23,7 +23,7 @@ class IdentityClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = '8A3D49B8-91F0-46EF-B33D-DDA338C25DB3'
|
||||
resource_area_identifier = '8a3d49b8-91f0-46ef-b33d-dda338c25db3'
|
||||
|
||||
def create_or_bind_with_claims(self, source_identity):
|
||||
"""CreateOrBindWithClaims.
|
||||
|
|
|
@ -23,7 +23,7 @@ class IdentityClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = '8A3D49B8-91F0-46EF-B33D-DDA338C25DB3'
|
||||
resource_area_identifier = '8a3d49b8-91f0-46ef-b33d-dda338c25db3'
|
||||
|
||||
def create_or_bind_with_claims(self, source_identity):
|
||||
"""CreateOrBindWithClaims.
|
||||
|
|
|
@ -23,7 +23,7 @@ class LicensingClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = 'c73a23a1-59bb-458c-8ce3-02c83215e015'
|
||||
|
||||
def get_extension_license_usage(self):
|
||||
"""GetExtensionLicenseUsage.
|
||||
|
|
|
@ -23,7 +23,7 @@ class LicensingClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = 'c73a23a1-59bb-458c-8ce3-02c83215e015'
|
||||
|
||||
def get_extension_license_usage(self):
|
||||
"""GetExtensionLicenseUsage.
|
||||
|
|
|
@ -23,7 +23,7 @@ class ProjectAnalysisClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '7658fa33-b1bf-4580-990f-fac5896773d3'
|
||||
|
||||
def get_project_language_analytics(self, project):
|
||||
"""GetProjectLanguageAnalytics.
|
||||
|
|
|
@ -23,7 +23,7 @@ class ProjectAnalysisClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '7658fa33-b1bf-4580-990f-fac5896773d3'
|
||||
|
||||
def get_project_language_analytics(self, project):
|
||||
"""GetProjectLanguageAnalytics.
|
||||
|
|
|
@ -23,7 +23,7 @@ class ReleaseClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = 'efc2f575-36ef-48e9-b672-0c6fb4a48ac5'
|
||||
|
||||
def get_agent_artifact_definitions(self, project, release_id):
|
||||
"""GetAgentArtifactDefinitions.
|
||||
|
|
|
@ -23,7 +23,7 @@ class ReleaseClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = 'efc2f575-36ef-48e9-b672-0c6fb4a48ac5'
|
||||
|
||||
def get_approvals(self, project, assigned_to_filter=None, status_filter=None, release_ids_filter=None, type_filter=None, top=None, continuation_token=None, query_order=None, include_my_group_approvals=None):
|
||||
"""GetApprovals.
|
||||
|
|
|
@ -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.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
|
@ -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.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
|
@ -0,0 +1,27 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from .access_control_entry import AccessControlEntry
|
||||
from .access_control_list import AccessControlList
|
||||
from .access_control_lists_collection import AccessControlListsCollection
|
||||
from .ace_extended_information import AceExtendedInformation
|
||||
from .action_definition import ActionDefinition
|
||||
from .permission_evaluation import PermissionEvaluation
|
||||
from .permission_evaluation_batch import PermissionEvaluationBatch
|
||||
from .security_namespace_description import SecurityNamespaceDescription
|
||||
|
||||
__all__ = [
|
||||
'AccessControlEntry',
|
||||
'AccessControlList',
|
||||
'AccessControlListsCollection',
|
||||
'AceExtendedInformation',
|
||||
'ActionDefinition',
|
||||
'PermissionEvaluation',
|
||||
'PermissionEvaluationBatch',
|
||||
'SecurityNamespaceDescription',
|
||||
]
|
|
@ -0,0 +1,37 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class AccessControlEntry(Model):
|
||||
"""AccessControlEntry.
|
||||
|
||||
:param allow: The set of permission bits that represent the actions that the associated descriptor is allowed to perform.
|
||||
:type allow: int
|
||||
:param deny: The set of permission bits that represent the actions that the associated descriptor is not allowed to perform.
|
||||
:type deny: int
|
||||
:param descriptor: The descriptor for the user this AccessControlEntry applies to.
|
||||
:type descriptor: :class:`str <security.v4_0.models.str>`
|
||||
:param extended_info: This value, when set, reports the inherited and effective information for the associated descriptor. This value is only set on AccessControlEntries returned by the QueryAccessControlList(s) call when its includeExtendedInfo parameter is set to true.
|
||||
:type extended_info: :class:`AceExtendedInformation <security.v4_0.models.AceExtendedInformation>`
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'allow': {'key': 'allow', 'type': 'int'},
|
||||
'deny': {'key': 'deny', 'type': 'int'},
|
||||
'descriptor': {'key': 'descriptor', 'type': 'str'},
|
||||
'extended_info': {'key': 'extendedInfo', 'type': 'AceExtendedInformation'}
|
||||
}
|
||||
|
||||
def __init__(self, allow=None, deny=None, descriptor=None, extended_info=None):
|
||||
super(AccessControlEntry, self).__init__()
|
||||
self.allow = allow
|
||||
self.deny = deny
|
||||
self.descriptor = descriptor
|
||||
self.extended_info = extended_info
|
|
@ -0,0 +1,37 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class AccessControlList(Model):
|
||||
"""AccessControlList.
|
||||
|
||||
:param aces_dictionary: Storage of permissions keyed on the identity the permission is for.
|
||||
:type aces_dictionary: dict
|
||||
:param include_extended_info: True if this ACL holds ACEs that have extended information.
|
||||
:type include_extended_info: bool
|
||||
:param inherit_permissions: True if the given token inherits permissions from parents.
|
||||
:type inherit_permissions: bool
|
||||
:param token: The token that this AccessControlList is for.
|
||||
:type token: str
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'aces_dictionary': {'key': 'acesDictionary', 'type': '{AccessControlEntry}'},
|
||||
'include_extended_info': {'key': 'includeExtendedInfo', 'type': 'bool'},
|
||||
'inherit_permissions': {'key': 'inheritPermissions', 'type': 'bool'},
|
||||
'token': {'key': 'token', 'type': 'str'}
|
||||
}
|
||||
|
||||
def __init__(self, aces_dictionary=None, include_extended_info=None, inherit_permissions=None, token=None):
|
||||
super(AccessControlList, self).__init__()
|
||||
self.aces_dictionary = aces_dictionary
|
||||
self.include_extended_info = include_extended_info
|
||||
self.inherit_permissions = inherit_permissions
|
||||
self.token = token
|
|
@ -0,0 +1,21 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class AccessControlListsCollection(Model):
|
||||
"""AccessControlListsCollection.
|
||||
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
super(AccessControlListsCollection, self).__init__()
|
|
@ -0,0 +1,37 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class AceExtendedInformation(Model):
|
||||
"""AceExtendedInformation.
|
||||
|
||||
:param effective_allow: This is the combination of all of the explicit and inherited permissions for this identity on this token. These are the permissions used when determining if a given user has permission to perform an action.
|
||||
:type effective_allow: int
|
||||
:param effective_deny: This is the combination of all of the explicit and inherited permissions for this identity on this token. These are the permissions used when determining if a given user has permission to perform an action.
|
||||
:type effective_deny: int
|
||||
:param inherited_allow: These are the permissions that are inherited for this identity on this token. If the token does not inherit permissions this will be 0. Note that any permissions that have been explicitly set on this token for this identity, or any groups that this identity is a part of, are not included here.
|
||||
:type inherited_allow: int
|
||||
:param inherited_deny: These are the permissions that are inherited for this identity on this token. If the token does not inherit permissions this will be 0. Note that any permissions that have been explicitly set on this token for this identity, or any groups that this identity is a part of, are not included here.
|
||||
:type inherited_deny: int
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'effective_allow': {'key': 'effectiveAllow', 'type': 'int'},
|
||||
'effective_deny': {'key': 'effectiveDeny', 'type': 'int'},
|
||||
'inherited_allow': {'key': 'inheritedAllow', 'type': 'int'},
|
||||
'inherited_deny': {'key': 'inheritedDeny', 'type': 'int'}
|
||||
}
|
||||
|
||||
def __init__(self, effective_allow=None, effective_deny=None, inherited_allow=None, inherited_deny=None):
|
||||
super(AceExtendedInformation, self).__init__()
|
||||
self.effective_allow = effective_allow
|
||||
self.effective_deny = effective_deny
|
||||
self.inherited_allow = inherited_allow
|
||||
self.inherited_deny = inherited_deny
|
|
@ -0,0 +1,37 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ActionDefinition(Model):
|
||||
"""ActionDefinition.
|
||||
|
||||
:param bit: The bit mask integer for this action. Must be a power of 2.
|
||||
:type bit: int
|
||||
:param display_name: The localized display name for this action.
|
||||
:type display_name: str
|
||||
:param name: The non-localized name for this action.
|
||||
:type name: str
|
||||
:param namespace_id: The namespace that this action belongs to. This will only be used for reading from the database.
|
||||
:type namespace_id: str
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'bit': {'key': 'bit', 'type': 'int'},
|
||||
'display_name': {'key': 'displayName', 'type': 'str'},
|
||||
'name': {'key': 'name', 'type': 'str'},
|
||||
'namespace_id': {'key': 'namespaceId', 'type': 'str'}
|
||||
}
|
||||
|
||||
def __init__(self, bit=None, display_name=None, name=None, namespace_id=None):
|
||||
super(ActionDefinition, self).__init__()
|
||||
self.bit = bit
|
||||
self.display_name = display_name
|
||||
self.name = name
|
||||
self.namespace_id = namespace_id
|
|
@ -0,0 +1,37 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class PermissionEvaluation(Model):
|
||||
"""PermissionEvaluation.
|
||||
|
||||
:param permissions: Permission bit for this evaluated permission.
|
||||
:type permissions: int
|
||||
:param security_namespace_id: Security namespace identifier for this evaluated permission.
|
||||
:type security_namespace_id: str
|
||||
:param token: Security namespace-specific token for this evaluated permission.
|
||||
:type token: str
|
||||
:param value: Permission evaluation value.
|
||||
:type value: bool
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'permissions': {'key': 'permissions', 'type': 'int'},
|
||||
'security_namespace_id': {'key': 'securityNamespaceId', 'type': 'str'},
|
||||
'token': {'key': 'token', 'type': 'str'},
|
||||
'value': {'key': 'value', 'type': 'bool'}
|
||||
}
|
||||
|
||||
def __init__(self, permissions=None, security_namespace_id=None, token=None, value=None):
|
||||
super(PermissionEvaluation, self).__init__()
|
||||
self.permissions = permissions
|
||||
self.security_namespace_id = security_namespace_id
|
||||
self.token = token
|
||||
self.value = value
|
|
@ -0,0 +1,29 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class PermissionEvaluationBatch(Model):
|
||||
"""PermissionEvaluationBatch.
|
||||
|
||||
:param always_allow_administrators:
|
||||
:type always_allow_administrators: bool
|
||||
:param evaluations: Array of permission evaluations to evaluate.
|
||||
:type evaluations: list of :class:`PermissionEvaluation <security.v4_0.models.PermissionEvaluation>`
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'always_allow_administrators': {'key': 'alwaysAllowAdministrators', 'type': 'bool'},
|
||||
'evaluations': {'key': 'evaluations', 'type': '[PermissionEvaluation]'}
|
||||
}
|
||||
|
||||
def __init__(self, always_allow_administrators=None, evaluations=None):
|
||||
super(PermissionEvaluationBatch, self).__init__()
|
||||
self.always_allow_administrators = always_allow_administrators
|
||||
self.evaluations = evaluations
|
|
@ -0,0 +1,77 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class SecurityNamespaceDescription(Model):
|
||||
"""SecurityNamespaceDescription.
|
||||
|
||||
:param actions: The list of actions that this Security Namespace is responsible for securing.
|
||||
:type actions: list of :class:`ActionDefinition <security.v4_0.models.ActionDefinition>`
|
||||
:param dataspace_category: This is the dataspace category that describes where the security information for this SecurityNamespace should be stored.
|
||||
:type dataspace_category: str
|
||||
:param display_name: This localized name for this namespace.
|
||||
:type display_name: str
|
||||
:param element_length: If the security tokens this namespace will be operating on need to be split on certain character lengths to determine its elements, that length should be specified here. If not, this value will be -1.
|
||||
:type element_length: int
|
||||
:param extension_type: This is the type of the extension that should be loaded from the plugins directory for extending this security namespace.
|
||||
:type extension_type: str
|
||||
:param is_remotable: If true, the security namespace is remotable, allowing another service to proxy the namespace.
|
||||
:type is_remotable: bool
|
||||
:param name: This non-localized for this namespace.
|
||||
:type name: str
|
||||
:param namespace_id: The unique identifier for this namespace.
|
||||
:type namespace_id: str
|
||||
:param read_permission: The permission bits needed by a user in order to read security data on the Security Namespace.
|
||||
:type read_permission: int
|
||||
:param separator_value: If the security tokens this namespace will be operating on need to be split on certain characters to determine its elements that character should be specified here. If not, this value will be the null character.
|
||||
:type separator_value: str
|
||||
:param structure_value: Used to send information about the structure of the security namespace over the web service.
|
||||
:type structure_value: int
|
||||
:param system_bit_mask: The bits reserved by system store
|
||||
:type system_bit_mask: int
|
||||
:param use_token_translator: If true, the security service will expect an ISecurityDataspaceTokenTranslator plugin to exist for this namespace
|
||||
:type use_token_translator: bool
|
||||
:param write_permission: The permission bits needed by a user in order to modify security data on the Security Namespace.
|
||||
:type write_permission: int
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'actions': {'key': 'actions', 'type': '[ActionDefinition]'},
|
||||
'dataspace_category': {'key': 'dataspaceCategory', 'type': 'str'},
|
||||
'display_name': {'key': 'displayName', 'type': 'str'},
|
||||
'element_length': {'key': 'elementLength', 'type': 'int'},
|
||||
'extension_type': {'key': 'extensionType', 'type': 'str'},
|
||||
'is_remotable': {'key': 'isRemotable', 'type': 'bool'},
|
||||
'name': {'key': 'name', 'type': 'str'},
|
||||
'namespace_id': {'key': 'namespaceId', 'type': 'str'},
|
||||
'read_permission': {'key': 'readPermission', 'type': 'int'},
|
||||
'separator_value': {'key': 'separatorValue', 'type': 'str'},
|
||||
'structure_value': {'key': 'structureValue', 'type': 'int'},
|
||||
'system_bit_mask': {'key': 'systemBitMask', 'type': 'int'},
|
||||
'use_token_translator': {'key': 'useTokenTranslator', 'type': 'bool'},
|
||||
'write_permission': {'key': 'writePermission', 'type': 'int'}
|
||||
}
|
||||
|
||||
def __init__(self, actions=None, dataspace_category=None, display_name=None, element_length=None, extension_type=None, is_remotable=None, name=None, namespace_id=None, read_permission=None, separator_value=None, structure_value=None, system_bit_mask=None, use_token_translator=None, write_permission=None):
|
||||
super(SecurityNamespaceDescription, self).__init__()
|
||||
self.actions = actions
|
||||
self.dataspace_category = dataspace_category
|
||||
self.display_name = display_name
|
||||
self.element_length = element_length
|
||||
self.extension_type = extension_type
|
||||
self.is_remotable = is_remotable
|
||||
self.name = name
|
||||
self.namespace_id = namespace_id
|
||||
self.read_permission = read_permission
|
||||
self.separator_value = separator_value
|
||||
self.structure_value = structure_value
|
||||
self.system_bit_mask = system_bit_mask
|
||||
self.use_token_translator = use_token_translator
|
||||
self.write_permission = write_permission
|
|
@ -0,0 +1,235 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest import Serializer, Deserializer
|
||||
from ...vss_client import VssClient
|
||||
from . import models
|
||||
|
||||
|
||||
class SecurityClient(VssClient):
|
||||
"""Security
|
||||
:param str base_url: Service URL
|
||||
:param Authentication creds: Authenticated credentials.
|
||||
"""
|
||||
|
||||
def __init__(self, base_url=None, creds=None):
|
||||
super(SecurityClient, self).__init__(base_url, creds)
|
||||
client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
|
||||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
|
||||
def remove_access_control_entries(self, security_namespace_id, token=None, descriptors=None):
|
||||
"""RemoveAccessControlEntries.
|
||||
:param str security_namespace_id:
|
||||
:param str token:
|
||||
:param str descriptors:
|
||||
:rtype: bool
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
query_parameters = {}
|
||||
if token is not None:
|
||||
query_parameters['token'] = self._serialize.query('token', token, 'str')
|
||||
if descriptors is not None:
|
||||
query_parameters['descriptors'] = self._serialize.query('descriptors', descriptors, 'str')
|
||||
response = self._send(http_method='DELETE',
|
||||
location_id='ac08c8ff-4323-4b08-af90-bcd018d380ce',
|
||||
version='4.0',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters)
|
||||
return self._deserialize('bool', response)
|
||||
|
||||
def set_access_control_entries(self, container, security_namespace_id):
|
||||
"""SetAccessControlEntries.
|
||||
:param :class:`<object> <security.v4_0.models.object>` container:
|
||||
:param str security_namespace_id:
|
||||
:rtype: [AccessControlEntry]
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
content = self._serialize.body(container, 'object')
|
||||
response = self._send(http_method='POST',
|
||||
location_id='ac08c8ff-4323-4b08-af90-bcd018d380ce',
|
||||
version='4.0',
|
||||
route_values=route_values,
|
||||
content=content,
|
||||
returns_collection=True)
|
||||
return self._deserialize('[AccessControlEntry]', response)
|
||||
|
||||
def query_access_control_lists(self, security_namespace_id, token=None, descriptors=None, include_extended_info=None, recurse=None):
|
||||
"""QueryAccessControlLists.
|
||||
:param str security_namespace_id:
|
||||
:param str token:
|
||||
:param str descriptors:
|
||||
:param bool include_extended_info:
|
||||
:param bool recurse:
|
||||
:rtype: [AccessControlList]
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
query_parameters = {}
|
||||
if token is not None:
|
||||
query_parameters['token'] = self._serialize.query('token', token, 'str')
|
||||
if descriptors is not None:
|
||||
query_parameters['descriptors'] = self._serialize.query('descriptors', descriptors, 'str')
|
||||
if include_extended_info is not None:
|
||||
query_parameters['includeExtendedInfo'] = self._serialize.query('include_extended_info', include_extended_info, 'bool')
|
||||
if recurse is not None:
|
||||
query_parameters['recurse'] = self._serialize.query('recurse', recurse, 'bool')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='18a2ad18-7571-46ae-bec7-0c7da1495885',
|
||||
version='4.0',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters,
|
||||
returns_collection=True)
|
||||
return self._deserialize('[AccessControlList]', response)
|
||||
|
||||
def remove_access_control_lists(self, security_namespace_id, tokens=None, recurse=None):
|
||||
"""RemoveAccessControlLists.
|
||||
:param str security_namespace_id:
|
||||
:param str tokens:
|
||||
:param bool recurse:
|
||||
:rtype: bool
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
query_parameters = {}
|
||||
if tokens is not None:
|
||||
query_parameters['tokens'] = self._serialize.query('tokens', tokens, 'str')
|
||||
if recurse is not None:
|
||||
query_parameters['recurse'] = self._serialize.query('recurse', recurse, 'bool')
|
||||
response = self._send(http_method='DELETE',
|
||||
location_id='18a2ad18-7571-46ae-bec7-0c7da1495885',
|
||||
version='4.0',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters)
|
||||
return self._deserialize('bool', response)
|
||||
|
||||
def set_access_control_lists(self, access_control_lists, security_namespace_id):
|
||||
"""SetAccessControlLists.
|
||||
:param :class:`<VssJsonCollectionWrapper> <security.v4_0.models.VssJsonCollectionWrapper>` access_control_lists:
|
||||
:param str security_namespace_id:
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
content = self._serialize.body(access_control_lists, 'VssJsonCollectionWrapper')
|
||||
self._send(http_method='POST',
|
||||
location_id='18a2ad18-7571-46ae-bec7-0c7da1495885',
|
||||
version='4.0',
|
||||
route_values=route_values,
|
||||
content=content)
|
||||
|
||||
def has_permissions_batch(self, eval_batch):
|
||||
"""HasPermissionsBatch.
|
||||
Perform a batch of "has permission" checks. This methods does not aggregate the results nor does it shortcircut if one of the permissions evaluates to false.
|
||||
:param :class:`<PermissionEvaluationBatch> <security.v4_0.models.PermissionEvaluationBatch>` eval_batch:
|
||||
:rtype: :class:`<PermissionEvaluationBatch> <security.v4_0.models.PermissionEvaluationBatch>`
|
||||
"""
|
||||
content = self._serialize.body(eval_batch, 'PermissionEvaluationBatch')
|
||||
response = self._send(http_method='POST',
|
||||
location_id='cf1faa59-1b63-4448-bf04-13d981a46f5d',
|
||||
version='4.0',
|
||||
content=content)
|
||||
return self._deserialize('PermissionEvaluationBatch', response)
|
||||
|
||||
def has_permissions(self, security_namespace_id, permissions=None, tokens=None, always_allow_administrators=None, delimiter=None):
|
||||
"""HasPermissions.
|
||||
:param str security_namespace_id:
|
||||
:param int permissions:
|
||||
:param str tokens:
|
||||
:param bool always_allow_administrators:
|
||||
:param str delimiter:
|
||||
:rtype: [bool]
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
if permissions is not None:
|
||||
route_values['permissions'] = self._serialize.url('permissions', permissions, 'int')
|
||||
query_parameters = {}
|
||||
if tokens is not None:
|
||||
query_parameters['tokens'] = self._serialize.query('tokens', tokens, 'str')
|
||||
if always_allow_administrators is not None:
|
||||
query_parameters['alwaysAllowAdministrators'] = self._serialize.query('always_allow_administrators', always_allow_administrators, 'bool')
|
||||
if delimiter is not None:
|
||||
query_parameters['delimiter'] = self._serialize.query('delimiter', delimiter, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='dd3b8bd6-c7fc-4cbd-929a-933d9c011c9d',
|
||||
version='4.0',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters,
|
||||
returns_collection=True)
|
||||
return self._deserialize('[bool]', response)
|
||||
|
||||
def remove_permission(self, security_namespace_id, permissions=None, token=None, descriptor=None):
|
||||
"""RemovePermission.
|
||||
:param str security_namespace_id:
|
||||
:param int permissions:
|
||||
:param str token:
|
||||
:param str descriptor:
|
||||
:rtype: :class:`<AccessControlEntry> <security.v4_0.models.AccessControlEntry>`
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
if permissions is not None:
|
||||
route_values['permissions'] = self._serialize.url('permissions', permissions, 'int')
|
||||
query_parameters = {}
|
||||
if token is not None:
|
||||
query_parameters['token'] = self._serialize.query('token', token, 'str')
|
||||
if descriptor is not None:
|
||||
query_parameters['descriptor'] = self._serialize.query('descriptor', descriptor, 'str')
|
||||
response = self._send(http_method='DELETE',
|
||||
location_id='dd3b8bd6-c7fc-4cbd-929a-933d9c011c9d',
|
||||
version='4.0',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters)
|
||||
return self._deserialize('AccessControlEntry', response)
|
||||
|
||||
def query_security_namespaces(self, security_namespace_id, local_only=None):
|
||||
"""QuerySecurityNamespaces.
|
||||
:param str security_namespace_id:
|
||||
:param bool local_only:
|
||||
:rtype: [SecurityNamespaceDescription]
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
query_parameters = {}
|
||||
if local_only is not None:
|
||||
query_parameters['localOnly'] = self._serialize.query('local_only', local_only, 'bool')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='ce7b9f95-fde9-4be8-a86d-83b366f0b87a',
|
||||
version='4.0',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters,
|
||||
returns_collection=True)
|
||||
return self._deserialize('[SecurityNamespaceDescription]', response)
|
||||
|
||||
def set_inherit_flag(self, container, security_namespace_id):
|
||||
"""SetInheritFlag.
|
||||
:param :class:`<object> <security.v4_0.models.object>` container:
|
||||
:param str security_namespace_id:
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
content = self._serialize.body(container, 'object')
|
||||
self._send(http_method='POST',
|
||||
location_id='ce7b9f95-fde9-4be8-a86d-83b366f0b87a',
|
||||
version='4.0',
|
||||
route_values=route_values,
|
||||
content=content)
|
||||
|
|
@ -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.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
|
@ -0,0 +1,27 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from .access_control_entry import AccessControlEntry
|
||||
from .access_control_list import AccessControlList
|
||||
from .access_control_lists_collection import AccessControlListsCollection
|
||||
from .ace_extended_information import AceExtendedInformation
|
||||
from .action_definition import ActionDefinition
|
||||
from .permission_evaluation import PermissionEvaluation
|
||||
from .permission_evaluation_batch import PermissionEvaluationBatch
|
||||
from .security_namespace_description import SecurityNamespaceDescription
|
||||
|
||||
__all__ = [
|
||||
'AccessControlEntry',
|
||||
'AccessControlList',
|
||||
'AccessControlListsCollection',
|
||||
'AceExtendedInformation',
|
||||
'ActionDefinition',
|
||||
'PermissionEvaluation',
|
||||
'PermissionEvaluationBatch',
|
||||
'SecurityNamespaceDescription',
|
||||
]
|
|
@ -0,0 +1,37 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class AccessControlEntry(Model):
|
||||
"""AccessControlEntry.
|
||||
|
||||
:param allow: The set of permission bits that represent the actions that the associated descriptor is allowed to perform.
|
||||
:type allow: int
|
||||
:param deny: The set of permission bits that represent the actions that the associated descriptor is not allowed to perform.
|
||||
:type deny: int
|
||||
:param descriptor: The descriptor for the user this AccessControlEntry applies to.
|
||||
:type descriptor: :class:`str <security.v4_1.models.str>`
|
||||
:param extended_info: This value, when set, reports the inherited and effective information for the associated descriptor. This value is only set on AccessControlEntries returned by the QueryAccessControlList(s) call when its includeExtendedInfo parameter is set to true.
|
||||
:type extended_info: :class:`AceExtendedInformation <security.v4_1.models.AceExtendedInformation>`
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'allow': {'key': 'allow', 'type': 'int'},
|
||||
'deny': {'key': 'deny', 'type': 'int'},
|
||||
'descriptor': {'key': 'descriptor', 'type': 'str'},
|
||||
'extended_info': {'key': 'extendedInfo', 'type': 'AceExtendedInformation'}
|
||||
}
|
||||
|
||||
def __init__(self, allow=None, deny=None, descriptor=None, extended_info=None):
|
||||
super(AccessControlEntry, self).__init__()
|
||||
self.allow = allow
|
||||
self.deny = deny
|
||||
self.descriptor = descriptor
|
||||
self.extended_info = extended_info
|
|
@ -0,0 +1,37 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class AccessControlList(Model):
|
||||
"""AccessControlList.
|
||||
|
||||
:param aces_dictionary: Storage of permissions keyed on the identity the permission is for.
|
||||
:type aces_dictionary: dict
|
||||
:param include_extended_info: True if this ACL holds ACEs that have extended information.
|
||||
:type include_extended_info: bool
|
||||
:param inherit_permissions: True if the given token inherits permissions from parents.
|
||||
:type inherit_permissions: bool
|
||||
:param token: The token that this AccessControlList is for.
|
||||
:type token: str
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'aces_dictionary': {'key': 'acesDictionary', 'type': '{AccessControlEntry}'},
|
||||
'include_extended_info': {'key': 'includeExtendedInfo', 'type': 'bool'},
|
||||
'inherit_permissions': {'key': 'inheritPermissions', 'type': 'bool'},
|
||||
'token': {'key': 'token', 'type': 'str'}
|
||||
}
|
||||
|
||||
def __init__(self, aces_dictionary=None, include_extended_info=None, inherit_permissions=None, token=None):
|
||||
super(AccessControlList, self).__init__()
|
||||
self.aces_dictionary = aces_dictionary
|
||||
self.include_extended_info = include_extended_info
|
||||
self.inherit_permissions = inherit_permissions
|
||||
self.token = token
|
|
@ -0,0 +1,21 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class AccessControlListsCollection(Model):
|
||||
"""AccessControlListsCollection.
|
||||
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
super(AccessControlListsCollection, self).__init__()
|
|
@ -0,0 +1,37 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class AceExtendedInformation(Model):
|
||||
"""AceExtendedInformation.
|
||||
|
||||
:param effective_allow: This is the combination of all of the explicit and inherited permissions for this identity on this token. These are the permissions used when determining if a given user has permission to perform an action.
|
||||
:type effective_allow: int
|
||||
:param effective_deny: This is the combination of all of the explicit and inherited permissions for this identity on this token. These are the permissions used when determining if a given user has permission to perform an action.
|
||||
:type effective_deny: int
|
||||
:param inherited_allow: These are the permissions that are inherited for this identity on this token. If the token does not inherit permissions this will be 0. Note that any permissions that have been explicitly set on this token for this identity, or any groups that this identity is a part of, are not included here.
|
||||
:type inherited_allow: int
|
||||
:param inherited_deny: These are the permissions that are inherited for this identity on this token. If the token does not inherit permissions this will be 0. Note that any permissions that have been explicitly set on this token for this identity, or any groups that this identity is a part of, are not included here.
|
||||
:type inherited_deny: int
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'effective_allow': {'key': 'effectiveAllow', 'type': 'int'},
|
||||
'effective_deny': {'key': 'effectiveDeny', 'type': 'int'},
|
||||
'inherited_allow': {'key': 'inheritedAllow', 'type': 'int'},
|
||||
'inherited_deny': {'key': 'inheritedDeny', 'type': 'int'}
|
||||
}
|
||||
|
||||
def __init__(self, effective_allow=None, effective_deny=None, inherited_allow=None, inherited_deny=None):
|
||||
super(AceExtendedInformation, self).__init__()
|
||||
self.effective_allow = effective_allow
|
||||
self.effective_deny = effective_deny
|
||||
self.inherited_allow = inherited_allow
|
||||
self.inherited_deny = inherited_deny
|
|
@ -0,0 +1,37 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class ActionDefinition(Model):
|
||||
"""ActionDefinition.
|
||||
|
||||
:param bit: The bit mask integer for this action. Must be a power of 2.
|
||||
:type bit: int
|
||||
:param display_name: The localized display name for this action.
|
||||
:type display_name: str
|
||||
:param name: The non-localized name for this action.
|
||||
:type name: str
|
||||
:param namespace_id: The namespace that this action belongs to. This will only be used for reading from the database.
|
||||
:type namespace_id: str
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'bit': {'key': 'bit', 'type': 'int'},
|
||||
'display_name': {'key': 'displayName', 'type': 'str'},
|
||||
'name': {'key': 'name', 'type': 'str'},
|
||||
'namespace_id': {'key': 'namespaceId', 'type': 'str'}
|
||||
}
|
||||
|
||||
def __init__(self, bit=None, display_name=None, name=None, namespace_id=None):
|
||||
super(ActionDefinition, self).__init__()
|
||||
self.bit = bit
|
||||
self.display_name = display_name
|
||||
self.name = name
|
||||
self.namespace_id = namespace_id
|
|
@ -0,0 +1,37 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class PermissionEvaluation(Model):
|
||||
"""PermissionEvaluation.
|
||||
|
||||
:param permissions: Permission bit for this evaluated permission.
|
||||
:type permissions: int
|
||||
:param security_namespace_id: Security namespace identifier for this evaluated permission.
|
||||
:type security_namespace_id: str
|
||||
:param token: Security namespace-specific token for this evaluated permission.
|
||||
:type token: str
|
||||
:param value: Permission evaluation value.
|
||||
:type value: bool
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'permissions': {'key': 'permissions', 'type': 'int'},
|
||||
'security_namespace_id': {'key': 'securityNamespaceId', 'type': 'str'},
|
||||
'token': {'key': 'token', 'type': 'str'},
|
||||
'value': {'key': 'value', 'type': 'bool'}
|
||||
}
|
||||
|
||||
def __init__(self, permissions=None, security_namespace_id=None, token=None, value=None):
|
||||
super(PermissionEvaluation, self).__init__()
|
||||
self.permissions = permissions
|
||||
self.security_namespace_id = security_namespace_id
|
||||
self.token = token
|
||||
self.value = value
|
|
@ -0,0 +1,29 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class PermissionEvaluationBatch(Model):
|
||||
"""PermissionEvaluationBatch.
|
||||
|
||||
:param always_allow_administrators:
|
||||
:type always_allow_administrators: bool
|
||||
:param evaluations: Array of permission evaluations to evaluate.
|
||||
:type evaluations: list of :class:`PermissionEvaluation <security.v4_1.models.PermissionEvaluation>`
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'always_allow_administrators': {'key': 'alwaysAllowAdministrators', 'type': 'bool'},
|
||||
'evaluations': {'key': 'evaluations', 'type': '[PermissionEvaluation]'}
|
||||
}
|
||||
|
||||
def __init__(self, always_allow_administrators=None, evaluations=None):
|
||||
super(PermissionEvaluationBatch, self).__init__()
|
||||
self.always_allow_administrators = always_allow_administrators
|
||||
self.evaluations = evaluations
|
|
@ -0,0 +1,77 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest.serialization import Model
|
||||
|
||||
|
||||
class SecurityNamespaceDescription(Model):
|
||||
"""SecurityNamespaceDescription.
|
||||
|
||||
:param actions: The list of actions that this Security Namespace is responsible for securing.
|
||||
:type actions: list of :class:`ActionDefinition <security.v4_1.models.ActionDefinition>`
|
||||
:param dataspace_category: This is the dataspace category that describes where the security information for this SecurityNamespace should be stored.
|
||||
:type dataspace_category: str
|
||||
:param display_name: This localized name for this namespace.
|
||||
:type display_name: str
|
||||
:param element_length: If the security tokens this namespace will be operating on need to be split on certain character lengths to determine its elements, that length should be specified here. If not, this value will be -1.
|
||||
:type element_length: int
|
||||
:param extension_type: This is the type of the extension that should be loaded from the plugins directory for extending this security namespace.
|
||||
:type extension_type: str
|
||||
:param is_remotable: If true, the security namespace is remotable, allowing another service to proxy the namespace.
|
||||
:type is_remotable: bool
|
||||
:param name: This non-localized for this namespace.
|
||||
:type name: str
|
||||
:param namespace_id: The unique identifier for this namespace.
|
||||
:type namespace_id: str
|
||||
:param read_permission: The permission bits needed by a user in order to read security data on the Security Namespace.
|
||||
:type read_permission: int
|
||||
:param separator_value: If the security tokens this namespace will be operating on need to be split on certain characters to determine its elements that character should be specified here. If not, this value will be the null character.
|
||||
:type separator_value: str
|
||||
:param structure_value: Used to send information about the structure of the security namespace over the web service.
|
||||
:type structure_value: int
|
||||
:param system_bit_mask: The bits reserved by system store
|
||||
:type system_bit_mask: int
|
||||
:param use_token_translator: If true, the security service will expect an ISecurityDataspaceTokenTranslator plugin to exist for this namespace
|
||||
:type use_token_translator: bool
|
||||
:param write_permission: The permission bits needed by a user in order to modify security data on the Security Namespace.
|
||||
:type write_permission: int
|
||||
"""
|
||||
|
||||
_attribute_map = {
|
||||
'actions': {'key': 'actions', 'type': '[ActionDefinition]'},
|
||||
'dataspace_category': {'key': 'dataspaceCategory', 'type': 'str'},
|
||||
'display_name': {'key': 'displayName', 'type': 'str'},
|
||||
'element_length': {'key': 'elementLength', 'type': 'int'},
|
||||
'extension_type': {'key': 'extensionType', 'type': 'str'},
|
||||
'is_remotable': {'key': 'isRemotable', 'type': 'bool'},
|
||||
'name': {'key': 'name', 'type': 'str'},
|
||||
'namespace_id': {'key': 'namespaceId', 'type': 'str'},
|
||||
'read_permission': {'key': 'readPermission', 'type': 'int'},
|
||||
'separator_value': {'key': 'separatorValue', 'type': 'str'},
|
||||
'structure_value': {'key': 'structureValue', 'type': 'int'},
|
||||
'system_bit_mask': {'key': 'systemBitMask', 'type': 'int'},
|
||||
'use_token_translator': {'key': 'useTokenTranslator', 'type': 'bool'},
|
||||
'write_permission': {'key': 'writePermission', 'type': 'int'}
|
||||
}
|
||||
|
||||
def __init__(self, actions=None, dataspace_category=None, display_name=None, element_length=None, extension_type=None, is_remotable=None, name=None, namespace_id=None, read_permission=None, separator_value=None, structure_value=None, system_bit_mask=None, use_token_translator=None, write_permission=None):
|
||||
super(SecurityNamespaceDescription, self).__init__()
|
||||
self.actions = actions
|
||||
self.dataspace_category = dataspace_category
|
||||
self.display_name = display_name
|
||||
self.element_length = element_length
|
||||
self.extension_type = extension_type
|
||||
self.is_remotable = is_remotable
|
||||
self.name = name
|
||||
self.namespace_id = namespace_id
|
||||
self.read_permission = read_permission
|
||||
self.separator_value = separator_value
|
||||
self.structure_value = structure_value
|
||||
self.system_bit_mask = system_bit_mask
|
||||
self.use_token_translator = use_token_translator
|
||||
self.write_permission = write_permission
|
|
@ -0,0 +1,228 @@
|
|||
# --------------------------------------------------------------------------------------------
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# Generated file, DO NOT EDIT
|
||||
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||
# --------------------------------------------------------------------------------------------
|
||||
|
||||
from msrest import Serializer, Deserializer
|
||||
from ...vss_client import VssClient
|
||||
from . import models
|
||||
|
||||
|
||||
class SecurityClient(VssClient):
|
||||
"""Security
|
||||
:param str base_url: Service URL
|
||||
:param Authentication creds: Authenticated credentials.
|
||||
"""
|
||||
|
||||
def __init__(self, base_url=None, creds=None):
|
||||
super(SecurityClient, self).__init__(base_url, creds)
|
||||
client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
|
||||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
|
||||
def remove_access_control_entries(self, security_namespace_id, token=None, descriptors=None):
|
||||
"""RemoveAccessControlEntries.
|
||||
[Preview API] Remove the specified ACEs from the ACL belonging to the specified token.
|
||||
:param str security_namespace_id:
|
||||
:param str token:
|
||||
:param str descriptors:
|
||||
:rtype: bool
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
query_parameters = {}
|
||||
if token is not None:
|
||||
query_parameters['token'] = self._serialize.query('token', token, 'str')
|
||||
if descriptors is not None:
|
||||
query_parameters['descriptors'] = self._serialize.query('descriptors', descriptors, 'str')
|
||||
response = self._send(http_method='DELETE',
|
||||
location_id='ac08c8ff-4323-4b08-af90-bcd018d380ce',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters)
|
||||
return self._deserialize('bool', response)
|
||||
|
||||
def set_access_control_entries(self, container, security_namespace_id):
|
||||
"""SetAccessControlEntries.
|
||||
[Preview API] Add or update ACEs in the ACL for the provided token. In the case of a collision (by identity descriptor) with an existing ACE in the ACL, the "merge" parameter determines the behavior. If set, the existing ACE has its allow and deny merged with the incoming ACE's allow and deny. If unset, the existing ACE is displaced.
|
||||
:param :class:`<object> <security.v4_1.models.object>` container:
|
||||
:param str security_namespace_id:
|
||||
:rtype: [AccessControlEntry]
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
content = self._serialize.body(container, 'object')
|
||||
response = self._send(http_method='POST',
|
||||
location_id='ac08c8ff-4323-4b08-af90-bcd018d380ce',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
content=content,
|
||||
returns_collection=True)
|
||||
return self._deserialize('[AccessControlEntry]', response)
|
||||
|
||||
def query_access_control_lists(self, security_namespace_id, token=None, descriptors=None, include_extended_info=None, recurse=None):
|
||||
"""QueryAccessControlLists.
|
||||
[Preview API] Return a list of access control lists for the specified security namespace and token.
|
||||
:param str security_namespace_id: Security namespace identifier.
|
||||
:param str token: Security token
|
||||
:param str descriptors:
|
||||
:param bool include_extended_info: If true, populate the extended information properties for the access control entries contained in the returned lists.
|
||||
:param bool recurse: If true and this is a hierarchical namespace, return child ACLs of the specified token.
|
||||
:rtype: [AccessControlList]
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
query_parameters = {}
|
||||
if token is not None:
|
||||
query_parameters['token'] = self._serialize.query('token', token, 'str')
|
||||
if descriptors is not None:
|
||||
query_parameters['descriptors'] = self._serialize.query('descriptors', descriptors, 'str')
|
||||
if include_extended_info is not None:
|
||||
query_parameters['includeExtendedInfo'] = self._serialize.query('include_extended_info', include_extended_info, 'bool')
|
||||
if recurse is not None:
|
||||
query_parameters['recurse'] = self._serialize.query('recurse', recurse, 'bool')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='18a2ad18-7571-46ae-bec7-0c7da1495885',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters,
|
||||
returns_collection=True)
|
||||
return self._deserialize('[AccessControlList]', response)
|
||||
|
||||
def remove_access_control_lists(self, security_namespace_id, tokens=None, recurse=None):
|
||||
"""RemoveAccessControlLists.
|
||||
[Preview API] Remove access control lists under the specfied security namespace.
|
||||
:param str security_namespace_id: Security namespace identifier.
|
||||
:param str tokens: One or more comma-separated security tokens
|
||||
:param bool recurse: If true and this is a hierarchical namespace, also remove child ACLs of the specified tokens.
|
||||
:rtype: bool
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
query_parameters = {}
|
||||
if tokens is not None:
|
||||
query_parameters['tokens'] = self._serialize.query('tokens', tokens, 'str')
|
||||
if recurse is not None:
|
||||
query_parameters['recurse'] = self._serialize.query('recurse', recurse, 'bool')
|
||||
response = self._send(http_method='DELETE',
|
||||
location_id='18a2ad18-7571-46ae-bec7-0c7da1495885',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters)
|
||||
return self._deserialize('bool', response)
|
||||
|
||||
def set_access_control_lists(self, access_control_lists, security_namespace_id):
|
||||
"""SetAccessControlLists.
|
||||
[Preview API] Create one or more access control lists.
|
||||
:param :class:`<VssJsonCollectionWrapper> <security.v4_1.models.VssJsonCollectionWrapper>` access_control_lists:
|
||||
:param str security_namespace_id: Security namespace identifier.
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
content = self._serialize.body(access_control_lists, 'VssJsonCollectionWrapper')
|
||||
self._send(http_method='POST',
|
||||
location_id='18a2ad18-7571-46ae-bec7-0c7da1495885',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
content=content)
|
||||
|
||||
def has_permissions_batch(self, eval_batch):
|
||||
"""HasPermissionsBatch.
|
||||
[Preview API] Evaluates multiple permissions for the callign user. Note: This methods does not aggregate the results nor does it short-circut if one of the permissions evaluates to false.
|
||||
:param :class:`<PermissionEvaluationBatch> <security.v4_1.models.PermissionEvaluationBatch>` eval_batch: The set of permissions to check.
|
||||
:rtype: :class:`<PermissionEvaluationBatch> <security.v4_1.models.PermissionEvaluationBatch>`
|
||||
"""
|
||||
content = self._serialize.body(eval_batch, 'PermissionEvaluationBatch')
|
||||
response = self._send(http_method='POST',
|
||||
location_id='cf1faa59-1b63-4448-bf04-13d981a46f5d',
|
||||
version='4.1-preview.1',
|
||||
content=content)
|
||||
return self._deserialize('PermissionEvaluationBatch', response)
|
||||
|
||||
def has_permissions(self, security_namespace_id, permissions=None, tokens=None, always_allow_administrators=None, delimiter=None):
|
||||
"""HasPermissions.
|
||||
[Preview API] Evaluates whether the caller has the specified permissions on the specified set of security tokens.
|
||||
:param str security_namespace_id: Security namespace identifier.
|
||||
:param int permissions: Permissions to evaluate.
|
||||
:param str tokens: One or more security tokens to evaluate.
|
||||
:param bool always_allow_administrators: If true and if the caller is an administrator, always return true.
|
||||
:param str delimiter: Optional security token separator. Defaults to ",".
|
||||
:rtype: [bool]
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
if permissions is not None:
|
||||
route_values['permissions'] = self._serialize.url('permissions', permissions, 'int')
|
||||
query_parameters = {}
|
||||
if tokens is not None:
|
||||
query_parameters['tokens'] = self._serialize.query('tokens', tokens, 'str')
|
||||
if always_allow_administrators is not None:
|
||||
query_parameters['alwaysAllowAdministrators'] = self._serialize.query('always_allow_administrators', always_allow_administrators, 'bool')
|
||||
if delimiter is not None:
|
||||
query_parameters['delimiter'] = self._serialize.query('delimiter', delimiter, 'str')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='dd3b8bd6-c7fc-4cbd-929a-933d9c011c9d',
|
||||
version='4.1-preview.2',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters,
|
||||
returns_collection=True)
|
||||
return self._deserialize('[bool]', response)
|
||||
|
||||
def remove_permission(self, security_namespace_id, permissions=None, token=None, descriptor=None):
|
||||
"""RemovePermission.
|
||||
[Preview API] Removes the specified permissions from the caller or specified user or group.
|
||||
:param str security_namespace_id: Security namespace identifier.
|
||||
:param int permissions: Permissions to remove.
|
||||
:param str token: Security token to remove permissions for.
|
||||
:param str descriptor: Identity descriptor of the user to remove permissions for. Defaults to the caller.
|
||||
:rtype: :class:`<AccessControlEntry> <security.v4_1.models.AccessControlEntry>`
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
if permissions is not None:
|
||||
route_values['permissions'] = self._serialize.url('permissions', permissions, 'int')
|
||||
query_parameters = {}
|
||||
if token is not None:
|
||||
query_parameters['token'] = self._serialize.query('token', token, 'str')
|
||||
if descriptor is not None:
|
||||
query_parameters['descriptor'] = self._serialize.query('descriptor', descriptor, 'str')
|
||||
response = self._send(http_method='DELETE',
|
||||
location_id='dd3b8bd6-c7fc-4cbd-929a-933d9c011c9d',
|
||||
version='4.1-preview.2',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters)
|
||||
return self._deserialize('AccessControlEntry', response)
|
||||
|
||||
def query_security_namespaces(self, security_namespace_id, local_only=None):
|
||||
"""QuerySecurityNamespaces.
|
||||
[Preview API]
|
||||
:param str security_namespace_id:
|
||||
:param bool local_only:
|
||||
:rtype: [SecurityNamespaceDescription]
|
||||
"""
|
||||
route_values = {}
|
||||
if security_namespace_id is not None:
|
||||
route_values['securityNamespaceId'] = self._serialize.url('security_namespace_id', security_namespace_id, 'str')
|
||||
query_parameters = {}
|
||||
if local_only is not None:
|
||||
query_parameters['localOnly'] = self._serialize.query('local_only', local_only, 'bool')
|
||||
response = self._send(http_method='GET',
|
||||
location_id='ce7b9f95-fde9-4be8-a86d-83b366f0b87a',
|
||||
version='4.1-preview.1',
|
||||
route_values=route_values,
|
||||
query_parameters=query_parameters,
|
||||
returns_collection=True)
|
||||
return self._deserialize('[SecurityNamespaceDescription]', response)
|
||||
|
|
@ -23,7 +23,7 @@ class TaskAgentClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = 'a85b8835-c1a1-4aac-ae97-1c3d0ba72dbd'
|
||||
|
||||
def add_agent(self, agent, pool_id):
|
||||
"""AddAgent.
|
||||
|
|
|
@ -23,7 +23,7 @@ class TaskAgentClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = 'a85b8835-c1a1-4aac-ae97-1c3d0ba72dbd'
|
||||
|
||||
def add_agent(self, agent, pool_id):
|
||||
"""AddAgent.
|
||||
|
|
|
@ -23,7 +23,7 @@ class TestClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = 'c2aa639c-3ccc-4740-b3b6-ce2a1e1d984e'
|
||||
|
||||
def get_action_results(self, project, run_id, test_case_result_id, iteration_id, action_path=None):
|
||||
"""GetActionResults.
|
||||
|
|
|
@ -23,7 +23,7 @@ class TestClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = 'c2aa639c-3ccc-4740-b3b6-ce2a1e1d984e'
|
||||
|
||||
def get_action_results(self, project, run_id, test_case_result_id, iteration_id, action_path=None):
|
||||
"""GetActionResults.
|
||||
|
|
|
@ -23,7 +23,7 @@ class TfvcClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '8aa40520-446d-40e6-89f6-9c9f9ce44c48'
|
||||
|
||||
def get_branch(self, path, project=None, include_parent=None, include_children=None):
|
||||
"""GetBranch.
|
||||
|
|
|
@ -23,7 +23,7 @@ class TfvcClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = None
|
||||
resource_area_identifier = '8aa40520-446d-40e6-89f6-9c9f9ce44c48'
|
||||
|
||||
def get_branch(self, path, project=None, include_parent=None, include_children=None):
|
||||
"""GetBranch.
|
||||
|
|
|
@ -23,7 +23,7 @@ class WorkClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = '1D4F49F9-02B9-4E26-B826-2CDB6195F2A9'
|
||||
resource_area_identifier = '1d4f49f9-02b9-4e26-b826-2cdb6195f2a9'
|
||||
|
||||
def get_backlog_configurations(self, team_context):
|
||||
"""GetBacklogConfigurations.
|
||||
|
|
|
@ -23,7 +23,7 @@ class WorkClient(VssClient):
|
|||
self._serialize = Serializer(client_models)
|
||||
self._deserialize = Deserializer(client_models)
|
||||
|
||||
resource_area_identifier = '1D4F49F9-02B9-4E26-B826-2CDB6195F2A9'
|
||||
resource_area_identifier = '1d4f49f9-02b9-4e26-b826-2cdb6195f2a9'
|
||||
|
||||
def get_backlog_configurations(self, team_context):
|
||||
"""GetBacklogConfigurations.
|
||||
|
|
Загрузка…
Ссылка в новой задаче