diff --git a/azure-devops/azext_devops/dev/common/services.py b/azure-devops/azext_devops/dev/common/services.py index 865c0e1b..5810dfc3 100644 --- a/azure-devops/azext_devops/dev/common/services.py +++ b/azure-devops/azext_devops/dev/common/services.py @@ -190,6 +190,11 @@ def get_new_pipeline_client(organization=None): return connection.get_client(VSTS_MODULE + 'v5_1.build.build_client.BuildClient') +def get_new_pipeline_client_v60(organization=None): + connection = get_connection(organization) + return connection.get_client(VSTS_MODULE + 'v6_0.pipelines.pipelines_client.PipelinesClient') + + def get_new_task_agent_client(organization=None): connection = get_connection(organization) return connection.get_client(VSTS_MODULE + 'v5_1.task_agent.task_agent_client.TaskAgentClient') diff --git a/azure-devops/azext_devops/dev/pipelines/arguments.py b/azure-devops/azext_devops/dev/pipelines/arguments.py index abe52eeb..3d675999 100644 --- a/azure-devops/azext_devops/dev/pipelines/arguments.py +++ b/azure-devops/azext_devops/dev/pipelines/arguments.py @@ -68,6 +68,7 @@ def load_build_arguments(self, _): with self.argument_context('pipelines run') as context: context.argument('id', type=int) + context.argument('parameters', nargs='*') context.argument('variables', nargs='*') with self.argument_context('pipelines list') as context: diff --git a/azure-devops/azext_devops/dev/pipelines/pipeline.py b/azure-devops/azext_devops/dev/pipelines/pipeline.py index 0c677488..e856fb8f 100644 --- a/azure-devops/azext_devops/dev/pipelines/pipeline.py +++ b/azure-devops/azext_devops/dev/pipelines/pipeline.py @@ -8,13 +8,17 @@ from knack.util import CLIError from azext_devops.dev.common.services import (get_build_client, get_git_client, - resolve_instance_and_project) + resolve_instance_and_project, + get_new_pipeline_client_v60) from azext_devops.dev.common.uri import uri_quote from azext_devops.dev.common.uuid import is_uuid from azext_devops.dev.common.git import resolve_git_ref_heads from azext_devops.devops_sdk.v5_0.build.models import Build, DefinitionReference +from azext_devops.devops_sdk.v6_0.pipelines.models import (RunPipelineParameters, + RunResourcesParameters, + RepositoryResourceParameters) from .build_definition import get_definition_id_from_name, fix_path_for_api -from .pipeline_run import _open_pipeline_run +from .pipeline_run import _open_pipeline_run, _open_pipeline_run6_0 logger = get_logger(__name__) @@ -96,8 +100,25 @@ def pipeline_show(id=None, name=None, open=False, organization=None, project=Non return build_definition +def set_param_variable(variables, as_dict=False, argument='variables'): + param_variables = None + if variables is not None and variables: + param_variables = {} + for variable in variables: + separator_pos = variable.find('=') + if separator_pos >= 0: + if as_dict: + param_variables[variable[:separator_pos]] = {"value": variable[separator_pos + 1:]} + else: + param_variables[variable[:separator_pos]] = variable[separator_pos + 1:] + else: + raise ValueError( + f'The --{argument} argument should consist of space separated "name=value" pairs.') + return param_variables + + def pipeline_run(id=None, branch=None, commit_id=None, name=None, open=False, variables=None, # pylint: disable=redefined-builtin - folder_path=None, organization=None, project=None, detect=None): + folder_path=None, organization=None, project=None, detect=None, parameters=None): """ Queue (run) a pipeline. :param id: ID of the pipeline to queue. Required if --name is not supplied. :type id: int @@ -110,6 +131,8 @@ def pipeline_run(id=None, branch=None, commit_id=None, name=None, open=False, va :type folder_path: str :param variables: Space separated "name=value" pairs for the variables you would like to set. :type variables: [str] + :param parameters: Space separated "name=value" pairs for the parameters you would like to set. + :type parameters: [str] :param commit_id: Commit-id on which the pipeline run is to be queued. :type commit_id: str :param open: Open the pipeline results page in your web browser. @@ -123,20 +146,36 @@ def pipeline_run(id=None, branch=None, commit_id=None, name=None, open=False, va raise ValueError('Either the --id argument or the --name argument ' + 'must be supplied for this command.') client = get_build_client(organization) + if id is None: id = get_definition_id_from_name(name, client, project, folder_path) + + if parameters: + logger.debug('Using "pipelines client v6_0" to include parameters in run') + client = get_new_pipeline_client_v60(organization) + + repositories = {"self": RepositoryResourceParameters(ref_name=branch, version=commit_id)} + resources = RunResourcesParameters(repositories=repositories) + template_parameters = set_param_variable(parameters, argument='parameters') + + param_variables = set_param_variable(variables, as_dict=True) + run_parameters = RunPipelineParameters( + resources=resources, variables=param_variables, template_parameters=template_parameters) + + queued_pipeline = client.run_pipeline(run_parameters=run_parameters, project=project, pipeline_id=id) + if open: + _open_pipeline_run6_0(queued_pipeline, project, organization) + return queued_pipeline + definition_reference = DefinitionReference(id=id) branch = resolve_git_ref_heads(branch) build = Build(definition=definition_reference, source_branch=branch, source_version=commit_id) - if variables is not None and variables: - build.parameters = {} - for variable in variables: - separator_pos = variable.find('=') - if separator_pos >= 0: - build.parameters[variable[:separator_pos]] = variable[separator_pos + 1:] - else: - raise ValueError('The --variables argument should consist of space separated "name=value" pairs.') + + param_variables = set_param_variable(variables) + build.parameters = param_variables + queued_build = client.queue_build(build=build, project=project) + if open: _open_pipeline_run(queued_build, organization) return queued_build diff --git a/azure-devops/azext_devops/dev/pipelines/pipeline_run.py b/azure-devops/azext_devops/dev/pipelines/pipeline_run.py index 4b800632..1adc0668 100644 --- a/azure-devops/azext_devops/dev/pipelines/pipeline_run.py +++ b/azure-devops/azext_devops/dev/pipelines/pipeline_run.py @@ -152,3 +152,16 @@ def _open_pipeline_run(run, organization): + uri_quote(str(run.id)) logger.debug('Opening web page: %s', url) open_new(url=url) + + +def _open_pipeline_run6_0(run, project, organization): + """Open the build results page in your web browser. + :param :class:` ` + :param str project: + :param str organization: + """ + from webbrowser import open_new + from azext_devops.dev.common.uri import uri_quote + url = f"{organization.rstrip('/')}/{uri_quote(project)}/_build/results?buildid={uri_quote(str(run.id))}" + logger.debug('Opening web page: %s', url) + open_new(url=url) diff --git a/azure-devops/azext_devops/devops_sdk/v6_0/__init__.py b/azure-devops/azext_devops/devops_sdk/v6_0/__init__.py new file mode 100644 index 00000000..f885a96e --- /dev/null +++ b/azure-devops/azext_devops/devops_sdk/v6_0/__init__.py @@ -0,0 +1,7 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- +# Generated file, DO NOT EDIT +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------------------------- diff --git a/azure-devops/azext_devops/devops_sdk/v6_0/accounts/__init__.py b/azure-devops/azext_devops/devops_sdk/v6_0/accounts/__init__.py new file mode 100644 index 00000000..7b1322e4 --- /dev/null +++ b/azure-devops/azext_devops/devops_sdk/v6_0/accounts/__init__.py @@ -0,0 +1,17 @@ +# -------------------------------------------------------------------------------------------- +# 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 .models import * +from .accounts_client import AccountsClient + +__all__ = [ + 'Account', + 'AccountCreateInfoInternal', + 'AccountPreferencesInternal', + 'AccountsClient' +] diff --git a/azure-devops/azext_devops/devops_sdk/v6_0/accounts/accounts_client.py b/azure-devops/azext_devops/devops_sdk/v6_0/accounts/accounts_client.py new file mode 100644 index 00000000..1c8855d5 --- /dev/null +++ b/azure-devops/azext_devops/devops_sdk/v6_0/accounts/accounts_client.py @@ -0,0 +1,48 @@ +# -------------------------------------------------------------------------------------------- +# 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 ...client import Client +from . import models + + +class AccountsClient(Client): + """Accounts + :param str base_url: Service URL + :param Authentication creds: Authenticated credentials. + """ + + def __init__(self, base_url=None, creds=None): + super(AccountsClient, 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 = '0d55247a-1c47-4462-9b1f-5e2125590ee6' + + def get_accounts(self, owner_id=None, member_id=None, properties=None): + """GetAccounts. + [Preview API] Get a list of accounts for a specific owner or a specific member. One of the following parameters is required: ownerId, memberId. + :param str owner_id: ID for the owner of the accounts. + :param str member_id: ID for a member of the accounts. + :param str properties: + :rtype: [Account] + """ + query_parameters = {} + if owner_id is not None: + query_parameters['ownerId'] = self._serialize.query('owner_id', owner_id, 'str') + if member_id is not None: + query_parameters['memberId'] = self._serialize.query('member_id', member_id, 'str') + if properties is not None: + query_parameters['properties'] = self._serialize.query('properties', properties, 'str') + response = self._send(http_method='GET', + location_id='229a6a53-b428-4ffb-a835-e8f36b5b4b1e', + version='6.0-preview.1', + query_parameters=query_parameters) + return self._deserialize('[Account]', self._unwrap_collection(response)) + diff --git a/azure-devops/azext_devops/devops_sdk/v6_0/accounts/models.py b/azure-devops/azext_devops/devops_sdk/v6_0/accounts/models.py new file mode 100644 index 00000000..eabc2704 --- /dev/null +++ b/azure-devops/azext_devops/devops_sdk/v6_0/accounts/models.py @@ -0,0 +1,149 @@ +# -------------------------------------------------------------------------------------------- +# 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 Account(Model): + """ + :param account_id: Identifier for an Account + :type account_id: str + :param account_name: Name for an account + :type account_name: str + :param account_owner: Owner of account + :type account_owner: str + :param account_status: Current account status + :type account_status: object + :param account_type: Type of account: Personal, Organization + :type account_type: object + :param account_uri: Uri for an account + :type account_uri: str + :param created_by: Who created the account + :type created_by: str + :param created_date: Date account was created + :type created_date: datetime + :param has_moved: + :type has_moved: bool + :param last_updated_by: Identity of last person to update the account + :type last_updated_by: str + :param last_updated_date: Date account was last updated + :type last_updated_date: datetime + :param namespace_id: Namespace for an account + :type namespace_id: str + :param new_collection_id: + :type new_collection_id: str + :param organization_name: Organization that created the account + :type organization_name: str + :param properties: Extended properties + :type properties: :class:`object ` + :param status_reason: Reason for current status + :type status_reason: str + """ + + _attribute_map = { + 'account_id': {'key': 'accountId', 'type': 'str'}, + 'account_name': {'key': 'accountName', 'type': 'str'}, + 'account_owner': {'key': 'accountOwner', 'type': 'str'}, + 'account_status': {'key': 'accountStatus', 'type': 'object'}, + 'account_type': {'key': 'accountType', 'type': 'object'}, + 'account_uri': {'key': 'accountUri', 'type': 'str'}, + 'created_by': {'key': 'createdBy', 'type': 'str'}, + 'created_date': {'key': 'createdDate', 'type': 'iso-8601'}, + 'has_moved': {'key': 'hasMoved', 'type': 'bool'}, + 'last_updated_by': {'key': 'lastUpdatedBy', 'type': 'str'}, + 'last_updated_date': {'key': 'lastUpdatedDate', 'type': 'iso-8601'}, + 'namespace_id': {'key': 'namespaceId', 'type': 'str'}, + 'new_collection_id': {'key': 'newCollectionId', 'type': 'str'}, + 'organization_name': {'key': 'organizationName', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': 'object'}, + 'status_reason': {'key': 'statusReason', 'type': 'str'} + } + + def __init__(self, account_id=None, account_name=None, account_owner=None, account_status=None, account_type=None, account_uri=None, created_by=None, created_date=None, has_moved=None, last_updated_by=None, last_updated_date=None, namespace_id=None, new_collection_id=None, organization_name=None, properties=None, status_reason=None): + super(Account, self).__init__() + self.account_id = account_id + self.account_name = account_name + self.account_owner = account_owner + self.account_status = account_status + self.account_type = account_type + self.account_uri = account_uri + self.created_by = created_by + self.created_date = created_date + self.has_moved = has_moved + self.last_updated_by = last_updated_by + self.last_updated_date = last_updated_date + self.namespace_id = namespace_id + self.new_collection_id = new_collection_id + self.organization_name = organization_name + self.properties = properties + self.status_reason = status_reason + + +class AccountCreateInfoInternal(Model): + """ + :param account_name: + :type account_name: str + :param creator: + :type creator: str + :param organization: + :type organization: str + :param preferences: + :type preferences: :class:`AccountPreferencesInternal ` + :param properties: + :type properties: :class:`object ` + :param service_definitions: + :type service_definitions: list of { key: str; value: str } + """ + + _attribute_map = { + 'account_name': {'key': 'accountName', 'type': 'str'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'organization': {'key': 'organization', 'type': 'str'}, + 'preferences': {'key': 'preferences', 'type': 'AccountPreferencesInternal'}, + 'properties': {'key': 'properties', 'type': 'object'}, + 'service_definitions': {'key': 'serviceDefinitions', 'type': '[{ key: str; value: str }]'} + } + + def __init__(self, account_name=None, creator=None, organization=None, preferences=None, properties=None, service_definitions=None): + super(AccountCreateInfoInternal, self).__init__() + self.account_name = account_name + self.creator = creator + self.organization = organization + self.preferences = preferences + self.properties = properties + self.service_definitions = service_definitions + + +class AccountPreferencesInternal(Model): + """ + :param culture: + :type culture: object + :param language: + :type language: object + :param time_zone: + :type time_zone: object + """ + + _attribute_map = { + 'culture': {'key': 'culture', 'type': 'object'}, + 'language': {'key': 'language', 'type': 'object'}, + 'time_zone': {'key': 'timeZone', 'type': 'object'} + } + + def __init__(self, culture=None, language=None, time_zone=None): + super(AccountPreferencesInternal, self).__init__() + self.culture = culture + self.language = language + self.time_zone = time_zone + + +__all__ = [ + 'Account', + 'AccountCreateInfoInternal', + 'AccountPreferencesInternal', +] diff --git a/azure-devops/azext_devops/devops_sdk/v6_0/audit/__init__.py b/azure-devops/azext_devops/devops_sdk/v6_0/audit/__init__.py new file mode 100644 index 00000000..419e92ab --- /dev/null +++ b/azure-devops/azext_devops/devops_sdk/v6_0/audit/__init__.py @@ -0,0 +1,19 @@ +# -------------------------------------------------------------------------------------------- +# 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 .models import * +from .audit_client import AuditClient + +__all__ = [ + 'AuditActionInfo', + 'AuditLogEntry', + 'AuditLogQueryResult', + 'AuditStream', + 'DecoratedAuditLogEntry', + 'AuditClient' +] diff --git a/azure-devops/azext_devops/devops_sdk/v6_0/audit/audit_client.py b/azure-devops/azext_devops/devops_sdk/v6_0/audit/audit_client.py new file mode 100644 index 00000000..16a6ca2b --- /dev/null +++ b/azure-devops/azext_devops/devops_sdk/v6_0/audit/audit_client.py @@ -0,0 +1,184 @@ +# -------------------------------------------------------------------------------------------- +# 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 ...client import Client +from . import models + + +class AuditClient(Client): + """Audit + :param str base_url: Service URL + :param Authentication creds: Authenticated credentials. + """ + + def __init__(self, base_url=None, creds=None): + super(AuditClient, 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 = '94ff054d-5ee1-413d-9341-3f4a7827de2e' + + def get_actions(self, area_name=None): + """GetActions. + [Preview API] Get all auditable actions filterable by area. + :param str area_name: Optional. Get actions scoped to area + :rtype: [AuditActionInfo] + """ + query_parameters = {} + if area_name is not None: + query_parameters['areaName'] = self._serialize.query('area_name', area_name, 'str') + response = self._send(http_method='GET', + location_id='6fa30b9a-9558-4e3b-a95f-a12572caa6e6', + version='6.0-preview.1', + query_parameters=query_parameters) + return self._deserialize('[AuditActionInfo]', self._unwrap_collection(response)) + + def query_log(self, start_time=None, end_time=None, batch_size=None, continuation_token=None, skip_aggregation=None): + """QueryLog. + [Preview API] Queries audit log entries + :param datetime start_time: Start time of download window. Optional + :param datetime end_time: End time of download window. Optional + :param int batch_size: Max number of results to return. Optional + :param str continuation_token: Token used for returning next set of results from previous query. Optional + :param bool skip_aggregation: Skips aggregating events and leaves them as individual entries instead. By default events are aggregated. Event types that are aggregated: AuditLog.AccessLog. + :rtype: :class:` ` + """ + query_parameters = {} + if start_time is not None: + query_parameters['startTime'] = self._serialize.query('start_time', start_time, 'iso-8601') + if end_time is not None: + query_parameters['endTime'] = self._serialize.query('end_time', end_time, 'iso-8601') + if batch_size is not None: + query_parameters['batchSize'] = self._serialize.query('batch_size', batch_size, 'int') + if continuation_token is not None: + query_parameters['continuationToken'] = self._serialize.query('continuation_token', continuation_token, 'str') + if skip_aggregation is not None: + query_parameters['skipAggregation'] = self._serialize.query('skip_aggregation', skip_aggregation, 'bool') + response = self._send(http_method='GET', + location_id='4e5fa14f-7097-4b73-9c85-00abc7353c61', + version='6.0-preview.1', + query_parameters=query_parameters) + return self._deserialize('AuditLogQueryResult', response) + + def download_log(self, format, start_time=None, end_time=None, **kwargs): + """DownloadLog. + [Preview API] Downloads audit log entries. + :param str format: File format for download. Can be "json" or "csv". + :param datetime start_time: Start time of download window. Optional + :param datetime end_time: End time of download window. Optional + :rtype: object + """ + query_parameters = {} + if format is not None: + query_parameters['format'] = self._serialize.query('format', format, 'str') + if start_time is not None: + query_parameters['startTime'] = self._serialize.query('start_time', start_time, 'iso-8601') + if end_time is not None: + query_parameters['endTime'] = self._serialize.query('end_time', end_time, 'iso-8601') + response = self._send(http_method='GET', + location_id='b7b98a76-04e8-4f4d-ac72-9d46492caaac', + version='6.0-preview.1', + query_parameters=query_parameters, + accept_media_type='application/octet-stream') + if "callback" in kwargs: + callback = kwargs["callback"] + else: + callback = None + return self._client.stream_download(response, callback=callback) + + def create_stream(self, stream, days_to_backfill): + """CreateStream. + [Preview API] Create new Audit Stream + :param :class:` ` stream: Stream entry + :param int days_to_backfill: The number of days of previously recorded audit data that will be replayed into the stream. A value of zero will result in only new events being streamed. + :rtype: :class:` ` + """ + query_parameters = {} + if days_to_backfill is not None: + query_parameters['daysToBackfill'] = self._serialize.query('days_to_backfill', days_to_backfill, 'int') + content = self._serialize.body(stream, 'AuditStream') + response = self._send(http_method='POST', + location_id='77d60bf9-1882-41c5-a90d-3a6d3c13fd3b', + version='6.0-preview.1', + query_parameters=query_parameters, + content=content) + return self._deserialize('AuditStream', response) + + def delete_stream(self, stream_id): + """DeleteStream. + [Preview API] Delete Audit Stream + :param int stream_id: Id of stream entry to delete + """ + route_values = {} + if stream_id is not None: + route_values['streamId'] = self._serialize.url('stream_id', stream_id, 'int') + self._send(http_method='DELETE', + location_id='77d60bf9-1882-41c5-a90d-3a6d3c13fd3b', + version='6.0-preview.1', + route_values=route_values) + + def query_all_streams(self): + """QueryAllStreams. + [Preview API] Return all Audit Streams scoped to an organization + :rtype: [AuditStream] + """ + response = self._send(http_method='GET', + location_id='77d60bf9-1882-41c5-a90d-3a6d3c13fd3b', + version='6.0-preview.1') + return self._deserialize('[AuditStream]', self._unwrap_collection(response)) + + def query_stream_by_id(self, stream_id): + """QueryStreamById. + [Preview API] Return Audit Stream with id of streamId if one exists otherwise throw + :param int stream_id: Id of stream entry to retrieve + :rtype: :class:` ` + """ + route_values = {} + if stream_id is not None: + route_values['streamId'] = self._serialize.url('stream_id', stream_id, 'int') + response = self._send(http_method='GET', + location_id='77d60bf9-1882-41c5-a90d-3a6d3c13fd3b', + version='6.0-preview.1', + route_values=route_values) + return self._deserialize('AuditStream', response) + + def update_status(self, stream_id, status): + """UpdateStatus. + [Preview API] Update existing Audit Stream status + :param int stream_id: Id of stream entry to be updated + :param str status: Status of the stream + :rtype: :class:` ` + """ + route_values = {} + if stream_id is not None: + route_values['streamId'] = self._serialize.url('stream_id', stream_id, 'int') + query_parameters = {} + if status is not None: + query_parameters['status'] = self._serialize.query('status', status, 'str') + response = self._send(http_method='PUT', + location_id='77d60bf9-1882-41c5-a90d-3a6d3c13fd3b', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('AuditStream', response) + + def update_stream(self, stream): + """UpdateStream. + [Preview API] Update existing Audit Stream + :param :class:` ` stream: Stream entry + :rtype: :class:` ` + """ + content = self._serialize.body(stream, 'AuditStream') + response = self._send(http_method='PUT', + location_id='77d60bf9-1882-41c5-a90d-3a6d3c13fd3b', + version='6.0-preview.1', + content=content) + return self._deserialize('AuditStream', response) + diff --git a/azure-devops/azext_devops/devops_sdk/v6_0/audit/models.py b/azure-devops/azext_devops/devops_sdk/v6_0/audit/models.py new file mode 100644 index 00000000..c6df3726 --- /dev/null +++ b/azure-devops/azext_devops/devops_sdk/v6_0/audit/models.py @@ -0,0 +1,285 @@ +# -------------------------------------------------------------------------------------------- +# 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 AuditActionInfo(Model): + """ + :param action_id: The action id for the event, i.e Git.CreateRepo, Project.RenameProject + :type action_id: str + :param area: Area of Azure DevOps the action occurred + :type area: str + :param category: Type of action executed + :type category: object + """ + + _attribute_map = { + 'action_id': {'key': 'actionId', 'type': 'str'}, + 'area': {'key': 'area', 'type': 'str'}, + 'category': {'key': 'category', 'type': 'object'} + } + + def __init__(self, action_id=None, area=None, category=None): + super(AuditActionInfo, self).__init__() + self.action_id = action_id + self.area = area + self.category = category + + +class AuditLogEntry(Model): + """ + :param action_id: The action if for the event, i.e Git.CreateRepo, Project.RenameProject + :type action_id: str + :param activity_id: ActivityId + :type activity_id: str + :param actor_cUID: The Actor's CUID + :type actor_cUID: str + :param actor_uPN: The Actor's UPN + :type actor_uPN: str + :param actor_user_id: The Actor's User Id + :type actor_user_id: str + :param authentication_mechanism: Type of authentication used by the author + :type authentication_mechanism: str + :param correlation_id: This allows us to group things together, like one user action that caused a cascade of event entries (project creation). + :type correlation_id: str + :param data: External data such as CUIDs, item names, etc. + :type data: dict + :param id: EventId, should be unique + :type id: str + :param ip_address: IP Address where the event was originated + :type ip_address: str + :param project_id: When specified, the id of the project this event is associated to + :type project_id: str + :param scope_id: The organization Id (Organization is the only scope currently supported) + :type scope_id: str + :param scope_type: The type of the scope (Organization is only scope currently supported) + :type scope_type: object + :param timestamp: The time when the event occurred in UTC + :type timestamp: datetime + :param user_agent: The user agent from the request + :type user_agent: str + """ + + _attribute_map = { + 'action_id': {'key': 'actionId', 'type': 'str'}, + 'activity_id': {'key': 'activityId', 'type': 'str'}, + 'actor_cUID': {'key': 'actorCUID', 'type': 'str'}, + 'actor_uPN': {'key': 'actorUPN', 'type': 'str'}, + 'actor_user_id': {'key': 'actorUserId', 'type': 'str'}, + 'authentication_mechanism': {'key': 'authenticationMechanism', 'type': 'str'}, + 'correlation_id': {'key': 'correlationId', 'type': 'str'}, + 'data': {'key': 'data', 'type': '{object}'}, + 'id': {'key': 'id', 'type': 'str'}, + 'ip_address': {'key': 'ipAddress', 'type': 'str'}, + 'project_id': {'key': 'projectId', 'type': 'str'}, + 'scope_id': {'key': 'scopeId', 'type': 'str'}, + 'scope_type': {'key': 'scopeType', 'type': 'object'}, + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'user_agent': {'key': 'userAgent', 'type': 'str'} + } + + def __init__(self, action_id=None, activity_id=None, actor_cUID=None, actor_uPN=None, actor_user_id=None, authentication_mechanism=None, correlation_id=None, data=None, id=None, ip_address=None, project_id=None, scope_id=None, scope_type=None, timestamp=None, user_agent=None): + super(AuditLogEntry, self).__init__() + self.action_id = action_id + self.activity_id = activity_id + self.actor_cUID = actor_cUID + self.actor_uPN = actor_uPN + self.actor_user_id = actor_user_id + self.authentication_mechanism = authentication_mechanism + self.correlation_id = correlation_id + self.data = data + self.id = id + self.ip_address = ip_address + self.project_id = project_id + self.scope_id = scope_id + self.scope_type = scope_type + self.timestamp = timestamp + self.user_agent = user_agent + + +class AuditLogQueryResult(Model): + """ + The object returned when the audit log is queried. It contains the log and the information needed to query more audit entries. + + :param continuation_token: The continuation token to pass to get the next set of results + :type continuation_token: str + :param decorated_audit_log_entries: The list of audit log entries + :type decorated_audit_log_entries: list of :class:`DecoratedAuditLogEntry ` + :param has_more: True when there are more matching results to be fetched, false otherwise. + :type has_more: bool + """ + + _attribute_map = { + 'continuation_token': {'key': 'continuationToken', 'type': 'str'}, + 'decorated_audit_log_entries': {'key': 'decoratedAuditLogEntries', 'type': '[DecoratedAuditLogEntry]'}, + 'has_more': {'key': 'hasMore', 'type': 'bool'} + } + + def __init__(self, continuation_token=None, decorated_audit_log_entries=None, has_more=None): + super(AuditLogQueryResult, self).__init__() + self.continuation_token = continuation_token + self.decorated_audit_log_entries = decorated_audit_log_entries + self.has_more = has_more + + +class AuditStream(Model): + """ + This class represents an audit stream + + :param consumer_inputs: Inputs used to communicate with external service. Inputs could be url, a connection string, a token, etc. + :type consumer_inputs: dict + :param consumer_type: Type of the consumer, i.e. splunk, azureEventHub, etc. + :type consumer_type: str + :param created_time: The time when the stream was created + :type created_time: datetime + :param display_name: Used to identify individual streams + :type display_name: str + :param id: Unique stream identifier + :type id: int + :param status: Status of the stream, Enabled, Disabled + :type status: object + :param status_reason: Reason for the current stream status, i.e. Disabled by the system, Invalid credentials, etc. + :type status_reason: str + :param updated_time: The time when the stream was last updated + :type updated_time: datetime + """ + + _attribute_map = { + 'consumer_inputs': {'key': 'consumerInputs', 'type': '{str}'}, + 'consumer_type': {'key': 'consumerType', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'display_name': {'key': 'displayName', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'int'}, + 'status': {'key': 'status', 'type': 'object'}, + 'status_reason': {'key': 'statusReason', 'type': 'str'}, + 'updated_time': {'key': 'updatedTime', 'type': 'iso-8601'} + } + + def __init__(self, consumer_inputs=None, consumer_type=None, created_time=None, display_name=None, id=None, status=None, status_reason=None, updated_time=None): + super(AuditStream, self).__init__() + self.consumer_inputs = consumer_inputs + self.consumer_type = consumer_type + self.created_time = created_time + self.display_name = display_name + self.id = id + self.status = status + self.status_reason = status_reason + self.updated_time = updated_time + + +class DecoratedAuditLogEntry(Model): + """ + :param action_id: The action id for the event, i.e Git.CreateRepo, Project.RenameProject + :type action_id: str + :param activity_id: ActivityId + :type activity_id: str + :param actor_cUID: The Actor's CUID + :type actor_cUID: str + :param actor_display_name: DisplayName of the user who initiated the action + :type actor_display_name: str + :param actor_image_url: URL of Actor's Profile image + :type actor_image_url: str + :param actor_uPN: The Actor's UPN + :type actor_uPN: str + :param actor_user_id: The Actor's User Id + :type actor_user_id: str + :param area: Area of Azure DevOps the action occurred + :type area: str + :param authentication_mechanism: Type of authentication used by the actor + :type authentication_mechanism: str + :param category: Type of action executed + :type category: object + :param category_display_name: DisplayName of the category + :type category_display_name: str + :param correlation_id: This allows related audit entries to be grouped together. Generally this occurs when a single action causes a cascade of audit entries. For example, project creation. + :type correlation_id: str + :param data: External data such as CUIDs, item names, etc. + :type data: dict + :param details: Decorated details + :type details: str + :param id: EventId - Needs to be unique per service + :type id: str + :param ip_address: IP Address where the event was originated + :type ip_address: str + :param project_id: When specified, the id of the project this event is associated to + :type project_id: str + :param project_name: When specified, the name of the project this event is associated to + :type project_name: str + :param scope_display_name: DisplayName of the scope + :type scope_display_name: str + :param scope_id: The organization Id (Organization is the only scope currently supported) + :type scope_id: str + :param scope_type: The type of the scope (Organization is only scope currently supported) + :type scope_type: object + :param timestamp: The time when the event occurred in UTC + :type timestamp: datetime + :param user_agent: The user agent from the request + :type user_agent: str + """ + + _attribute_map = { + 'action_id': {'key': 'actionId', 'type': 'str'}, + 'activity_id': {'key': 'activityId', 'type': 'str'}, + 'actor_cUID': {'key': 'actorCUID', 'type': 'str'}, + 'actor_display_name': {'key': 'actorDisplayName', 'type': 'str'}, + 'actor_image_url': {'key': 'actorImageUrl', 'type': 'str'}, + 'actor_uPN': {'key': 'actorUPN', 'type': 'str'}, + 'actor_user_id': {'key': 'actorUserId', 'type': 'str'}, + 'area': {'key': 'area', 'type': 'str'}, + 'authentication_mechanism': {'key': 'authenticationMechanism', 'type': 'str'}, + 'category': {'key': 'category', 'type': 'object'}, + 'category_display_name': {'key': 'categoryDisplayName', 'type': 'str'}, + 'correlation_id': {'key': 'correlationId', 'type': 'str'}, + 'data': {'key': 'data', 'type': '{object}'}, + 'details': {'key': 'details', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'ip_address': {'key': 'ipAddress', 'type': 'str'}, + 'project_id': {'key': 'projectId', 'type': 'str'}, + 'project_name': {'key': 'projectName', 'type': 'str'}, + 'scope_display_name': {'key': 'scopeDisplayName', 'type': 'str'}, + 'scope_id': {'key': 'scopeId', 'type': 'str'}, + 'scope_type': {'key': 'scopeType', 'type': 'object'}, + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'user_agent': {'key': 'userAgent', 'type': 'str'} + } + + def __init__(self, action_id=None, activity_id=None, actor_cUID=None, actor_display_name=None, actor_image_url=None, actor_uPN=None, actor_user_id=None, area=None, authentication_mechanism=None, category=None, category_display_name=None, correlation_id=None, data=None, details=None, id=None, ip_address=None, project_id=None, project_name=None, scope_display_name=None, scope_id=None, scope_type=None, timestamp=None, user_agent=None): + super(DecoratedAuditLogEntry, self).__init__() + self.action_id = action_id + self.activity_id = activity_id + self.actor_cUID = actor_cUID + self.actor_display_name = actor_display_name + self.actor_image_url = actor_image_url + self.actor_uPN = actor_uPN + self.actor_user_id = actor_user_id + self.area = area + self.authentication_mechanism = authentication_mechanism + self.category = category + self.category_display_name = category_display_name + self.correlation_id = correlation_id + self.data = data + self.details = details + self.id = id + self.ip_address = ip_address + self.project_id = project_id + self.project_name = project_name + self.scope_display_name = scope_display_name + self.scope_id = scope_id + self.scope_type = scope_type + self.timestamp = timestamp + self.user_agent = user_agent + + +__all__ = [ + 'AuditActionInfo', + 'AuditLogEntry', + 'AuditLogQueryResult', + 'AuditStream', + 'DecoratedAuditLogEntry', +] diff --git a/azure-devops/azext_devops/devops_sdk/v6_0/build/__init__.py b/azure-devops/azext_devops/devops_sdk/v6_0/build/__init__.py new file mode 100644 index 00000000..16d1b55d --- /dev/null +++ b/azure-devops/azext_devops/devops_sdk/v6_0/build/__init__.py @@ -0,0 +1,103 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- +# Generated file, DO NOT EDIT +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------------------------- + +from .models import * +from .build_client import BuildClient + +__all__ = [ + 'AgentPoolQueue', + 'AgentSpecification', + 'AggregatedResultsAnalysis', + 'AggregatedResultsByOutcome', + 'AggregatedResultsDifference', + 'AggregatedRunsByOutcome', + 'AggregatedRunsByState', + 'ArtifactResource', + 'AssociatedWorkItem', + 'Attachment', + 'AuthorizationHeader', + 'Build', + 'BuildArtifact', + 'BuildBadge', + 'BuildController', + 'BuildDefinition', + 'BuildDefinition3_2', + 'BuildDefinitionReference', + 'BuildDefinitionReference3_2', + 'BuildDefinitionRevision', + 'BuildDefinitionStep', + 'BuildDefinitionTemplate', + 'BuildDefinitionTemplate3_2', + 'BuildDefinitionVariable', + 'BuildLog', + 'BuildLogReference', + 'BuildMetric', + 'BuildOption', + 'BuildOptionDefinition', + 'BuildOptionDefinitionReference', + 'BuildOptionGroupDefinition', + 'BuildOptionInputDefinition', + 'BuildReportMetadata', + 'BuildRepository', + 'BuildRequestValidationResult', + 'BuildResourceUsage', + 'BuildSettings', + 'Change', + 'DataSourceBindingBase', + 'DefinitionReference', + 'DefinitionResourceReference', + 'Deployment', + 'Folder', + 'GraphSubjectBase', + 'IdentityRef', + 'Issue', + 'JobReference', + 'JsonPatchOperation', + 'MinimalRetentionLease', + 'NewRetentionLease', + 'PhaseReference', + 'PipelineGeneralSettings', + 'PipelineReference', + 'ProcessParameters', + 'ProjectRetentionSetting', + 'PullRequest', + 'ReferenceLinks', + 'ReleaseReference', + 'RepositoryWebhook', + 'ResourceRef', + 'RetentionLease', + 'RetentionPolicy', + 'RetentionSetting', + 'SourceProviderAttributes', + 'SourceRepositories', + 'SourceRepository', + 'SourceRepositoryItem', + 'StageReference', + 'SupportedTrigger', + 'TaskAgentPoolReference', + 'TaskDefinitionReference', + 'TaskInputDefinitionBase', + 'TaskInputValidation', + 'TaskOrchestrationPlanReference', + 'TaskReference', + 'TaskSourceDefinitionBase', + 'TeamProjectReference', + 'TestResultsContext', + 'Timeline', + 'TimelineAttempt', + 'TimelineRecord', + 'TimelineReference', + 'UpdateProjectRetentionSettingModel', + 'UpdateRetentionSettingModel', + 'UpdateStageParameters', + 'VariableGroup', + 'VariableGroupReference', + 'WebApiConnectedServiceRef', + 'XamlBuildControllerReference', + 'BuildClient' +] diff --git a/azure-devops/azext_devops/devops_sdk/v6_0/build/build_client.py b/azure-devops/azext_devops/devops_sdk/v6_0/build/build_client.py new file mode 100644 index 00000000..9e065b08 --- /dev/null +++ b/azure-devops/azext_devops/devops_sdk/v6_0/build/build_client.py @@ -0,0 +1,2182 @@ +# -------------------------------------------------------------------------------------------- +# 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 ...client import Client +from . import models + + +class BuildClient(Client): + """Build + :param str base_url: Service URL + :param Authentication creds: Authenticated credentials. + """ + + def __init__(self, base_url=None, creds=None): + super(BuildClient, 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 = '965220d5-5bb9-42cf-8d67-9b146df2a5a4' + + def create_artifact(self, artifact, project, build_id): + """CreateArtifact. + [Preview API] Associates an artifact with a build. + :param :class:` ` artifact: The artifact. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + content = self._serialize.body(artifact, 'BuildArtifact') + response = self._send(http_method='POST', + location_id='1db06c96-014e-44e1-ac91-90b2d4b3e984', + version='6.0-preview.5', + route_values=route_values, + content=content) + return self._deserialize('BuildArtifact', response) + + def get_artifact(self, project, build_id, artifact_name): + """GetArtifact. + [Preview API] Gets a specific artifact for a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param str artifact_name: The name of the artifact. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + query_parameters = {} + if artifact_name is not None: + query_parameters['artifactName'] = self._serialize.query('artifact_name', artifact_name, 'str') + response = self._send(http_method='GET', + location_id='1db06c96-014e-44e1-ac91-90b2d4b3e984', + version='6.0-preview.5', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('BuildArtifact', response) + + def get_artifact_content_zip(self, project, build_id, artifact_name, **kwargs): + """GetArtifactContentZip. + [Preview API] Gets a specific artifact for a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param str artifact_name: The name of the artifact. + :rtype: object + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + query_parameters = {} + if artifact_name is not None: + query_parameters['artifactName'] = self._serialize.query('artifact_name', artifact_name, 'str') + response = self._send(http_method='GET', + location_id='1db06c96-014e-44e1-ac91-90b2d4b3e984', + version='6.0-preview.5', + route_values=route_values, + query_parameters=query_parameters, + accept_media_type='application/zip') + if "callback" in kwargs: + callback = kwargs["callback"] + else: + callback = None + return self._client.stream_download(response, callback=callback) + + def get_artifacts(self, project, build_id): + """GetArtifacts. + [Preview API] Gets all artifacts for a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :rtype: [BuildArtifact] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + response = self._send(http_method='GET', + location_id='1db06c96-014e-44e1-ac91-90b2d4b3e984', + version='6.0-preview.5', + route_values=route_values) + return self._deserialize('[BuildArtifact]', self._unwrap_collection(response)) + + def get_file(self, project, build_id, artifact_name, file_id, file_name, **kwargs): + """GetFile. + [Preview API] Gets a file from the build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param str artifact_name: The name of the artifact. + :param str file_id: The primary key for the file. + :param str file_name: The name that the file will be set to. + :rtype: object + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + query_parameters = {} + if artifact_name is not None: + query_parameters['artifactName'] = self._serialize.query('artifact_name', artifact_name, 'str') + if file_id is not None: + query_parameters['fileId'] = self._serialize.query('file_id', file_id, 'str') + if file_name is not None: + query_parameters['fileName'] = self._serialize.query('file_name', file_name, 'str') + response = self._send(http_method='GET', + location_id='1db06c96-014e-44e1-ac91-90b2d4b3e984', + version='6.0-preview.5', + route_values=route_values, + query_parameters=query_parameters, + accept_media_type='application/octet-stream') + if "callback" in kwargs: + callback = kwargs["callback"] + else: + callback = None + return self._client.stream_download(response, callback=callback) + + def get_attachments(self, project, build_id, type): + """GetAttachments. + [Preview API] Gets the list of attachments of a specific type that are associated with a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param str type: The type of attachment. + :rtype: [Attachment] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + if type is not None: + route_values['type'] = self._serialize.url('type', type, 'str') + response = self._send(http_method='GET', + location_id='f2192269-89fa-4f94-baf6-8fb128c55159', + version='6.0-preview.2', + route_values=route_values) + return self._deserialize('[Attachment]', self._unwrap_collection(response)) + + def get_attachment(self, project, build_id, timeline_id, record_id, type, name, **kwargs): + """GetAttachment. + [Preview API] Gets a specific attachment. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param str timeline_id: The ID of the timeline. + :param str record_id: The ID of the timeline record. + :param str type: The type of the attachment. + :param str name: The name of the attachment. + :rtype: object + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + if timeline_id is not None: + route_values['timelineId'] = self._serialize.url('timeline_id', timeline_id, 'str') + if record_id is not None: + route_values['recordId'] = self._serialize.url('record_id', record_id, 'str') + if type is not None: + route_values['type'] = self._serialize.url('type', type, 'str') + if name is not None: + route_values['name'] = self._serialize.url('name', name, 'str') + response = self._send(http_method='GET', + location_id='af5122d3-3438-485e-a25a-2dbbfde84ee6', + version='6.0-preview.2', + route_values=route_values, + accept_media_type='application/octet-stream') + if "callback" in kwargs: + callback = kwargs["callback"] + else: + callback = None + return self._client.stream_download(response, callback=callback) + + def authorize_project_resources(self, resources, project): + """AuthorizeProjectResources. + [Preview API] + :param [DefinitionResourceReference] resources: + :param str project: Project ID or project name + :rtype: [DefinitionResourceReference] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + content = self._serialize.body(resources, '[DefinitionResourceReference]') + response = self._send(http_method='PATCH', + location_id='398c85bc-81aa-4822-947c-a194a05f0fef', + version='6.0-preview.1', + route_values=route_values, + content=content) + return self._deserialize('[DefinitionResourceReference]', self._unwrap_collection(response)) + + def get_project_resources(self, project, type=None, id=None): + """GetProjectResources. + [Preview API] + :param str project: Project ID or project name + :param str type: + :param str id: + :rtype: [DefinitionResourceReference] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if type is not None: + query_parameters['type'] = self._serialize.query('type', type, 'str') + if id is not None: + query_parameters['id'] = self._serialize.query('id', id, 'str') + response = self._send(http_method='GET', + location_id='398c85bc-81aa-4822-947c-a194a05f0fef', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[DefinitionResourceReference]', self._unwrap_collection(response)) + + def list_branches(self, project, provider_name, service_endpoint_id=None, repository=None, branch_name=None): + """ListBranches. + [Preview API] Gets a list of branches for the given source code repository. + :param str project: Project ID or project name + :param str provider_name: The name of the source provider. + :param str service_endpoint_id: If specified, the ID of the service endpoint to query. Can only be omitted for providers that do not use service endpoints, e.g. TFVC or TFGit. + :param str repository: The vendor-specific identifier or the name of the repository to get branches. Can only be omitted for providers that do not support multiple repositories. + :param str branch_name: If supplied, the name of the branch to check for specifically. + :rtype: [str] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if provider_name is not None: + route_values['providerName'] = self._serialize.url('provider_name', provider_name, 'str') + query_parameters = {} + if service_endpoint_id is not None: + query_parameters['serviceEndpointId'] = self._serialize.query('service_endpoint_id', service_endpoint_id, 'str') + if repository is not None: + query_parameters['repository'] = self._serialize.query('repository', repository, 'str') + if branch_name is not None: + query_parameters['branchName'] = self._serialize.query('branch_name', branch_name, 'str') + response = self._send(http_method='GET', + location_id='e05d4403-9b81-4244-8763-20fde28d1976', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[str]', self._unwrap_collection(response)) + + def get_build_badge(self, project, repo_type, repo_id=None, branch_name=None): + """GetBuildBadge. + [Preview API] Gets a badge that indicates the status of the most recent build for the specified branch. + :param str project: Project ID or project name + :param str repo_type: The repository type. + :param str repo_id: The repository ID. + :param str branch_name: The branch name. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if repo_type is not None: + route_values['repoType'] = self._serialize.url('repo_type', repo_type, 'str') + query_parameters = {} + if repo_id is not None: + query_parameters['repoId'] = self._serialize.query('repo_id', repo_id, 'str') + if branch_name is not None: + query_parameters['branchName'] = self._serialize.query('branch_name', branch_name, 'str') + response = self._send(http_method='GET', + location_id='21b3b9ce-fad5-4567-9ad0-80679794e003', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('BuildBadge', response) + + def get_build_badge_data(self, project, repo_type, repo_id=None, branch_name=None): + """GetBuildBadgeData. + [Preview API] Gets a badge that indicates the status of the most recent build for the specified branch. + :param str project: Project ID or project name + :param str repo_type: The repository type. + :param str repo_id: The repository ID. + :param str branch_name: The branch name. + :rtype: str + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if repo_type is not None: + route_values['repoType'] = self._serialize.url('repo_type', repo_type, 'str') + query_parameters = {} + if repo_id is not None: + query_parameters['repoId'] = self._serialize.query('repo_id', repo_id, 'str') + if branch_name is not None: + query_parameters['branchName'] = self._serialize.query('branch_name', branch_name, 'str') + response = self._send(http_method='GET', + location_id='21b3b9ce-fad5-4567-9ad0-80679794e003', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('str', response) + + def delete_build(self, project, build_id): + """DeleteBuild. + [Preview API] Deletes a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + self._send(http_method='DELETE', + location_id='0cd358e1-9217-4d94-8269-1c1ee6f93dcf', + version='6.0-preview.6', + route_values=route_values) + + def get_build(self, project, build_id, property_filters=None): + """GetBuild. + [Preview API] Gets a build + :param str project: Project ID or project name + :param int build_id: + :param str property_filters: + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + query_parameters = {} + if property_filters is not None: + query_parameters['propertyFilters'] = self._serialize.query('property_filters', property_filters, 'str') + response = self._send(http_method='GET', + location_id='0cd358e1-9217-4d94-8269-1c1ee6f93dcf', + version='6.0-preview.6', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('Build', response) + + def get_builds(self, project, definitions=None, queues=None, build_number=None, min_time=None, max_time=None, requested_for=None, reason_filter=None, status_filter=None, result_filter=None, tag_filters=None, properties=None, top=None, continuation_token=None, max_builds_per_definition=None, deleted_filter=None, query_order=None, branch_name=None, build_ids=None, repository_id=None, repository_type=None): + """GetBuilds. + [Preview API] Gets a list of builds. + :param str project: Project ID or project name + :param [int] definitions: A comma-delimited list of definition IDs. If specified, filters to builds for these definitions. + :param [int] queues: A comma-delimited list of queue IDs. If specified, filters to builds that ran against these queues. + :param str build_number: If specified, filters to builds that match this build number. Append * to do a prefix search. + :param datetime min_time: If specified, filters to builds that finished/started/queued after this date based on the queryOrder specified. + :param datetime max_time: If specified, filters to builds that finished/started/queued before this date based on the queryOrder specified. + :param str requested_for: If specified, filters to builds requested for the specified user. + :param str reason_filter: If specified, filters to builds that match this reason. + :param str status_filter: If specified, filters to builds that match this status. + :param str result_filter: If specified, filters to builds that match this result. + :param [str] tag_filters: A comma-delimited list of tags. If specified, filters to builds that have the specified tags. + :param [str] properties: A comma-delimited list of properties to retrieve. + :param int top: The maximum number of builds to return. + :param str continuation_token: A continuation token, returned by a previous call to this method, that can be used to return the next set of builds. + :param int max_builds_per_definition: The maximum number of builds to return per definition. + :param str deleted_filter: Indicates whether to exclude, include, or only return deleted builds. + :param str query_order: The order in which builds should be returned. + :param str branch_name: If specified, filters to builds that built branches that built this branch. + :param [int] build_ids: A comma-delimited list that specifies the IDs of builds to retrieve. + :param str repository_id: If specified, filters to builds that built from this repository. + :param str repository_type: If specified, filters to builds that built from repositories of this type. + :rtype: :class:`<[Build]> ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if definitions is not None: + definitions = ",".join(map(str, definitions)) + query_parameters['definitions'] = self._serialize.query('definitions', definitions, 'str') + if queues is not None: + queues = ",".join(map(str, queues)) + query_parameters['queues'] = self._serialize.query('queues', queues, 'str') + if build_number is not None: + query_parameters['buildNumber'] = self._serialize.query('build_number', build_number, 'str') + if min_time is not None: + query_parameters['minTime'] = self._serialize.query('min_time', min_time, 'iso-8601') + if max_time is not None: + query_parameters['maxTime'] = self._serialize.query('max_time', max_time, 'iso-8601') + if requested_for is not None: + query_parameters['requestedFor'] = self._serialize.query('requested_for', requested_for, 'str') + if reason_filter is not None: + query_parameters['reasonFilter'] = self._serialize.query('reason_filter', reason_filter, 'str') + if status_filter is not None: + query_parameters['statusFilter'] = self._serialize.query('status_filter', status_filter, 'str') + if result_filter is not None: + query_parameters['resultFilter'] = self._serialize.query('result_filter', result_filter, 'str') + if tag_filters is not None: + tag_filters = ",".join(tag_filters) + query_parameters['tagFilters'] = self._serialize.query('tag_filters', tag_filters, 'str') + if properties is not None: + properties = ",".join(properties) + query_parameters['properties'] = self._serialize.query('properties', properties, 'str') + if top is not None: + query_parameters['$top'] = self._serialize.query('top', top, 'int') + if continuation_token is not None: + query_parameters['continuationToken'] = self._serialize.query('continuation_token', continuation_token, 'str') + if max_builds_per_definition is not None: + query_parameters['maxBuildsPerDefinition'] = self._serialize.query('max_builds_per_definition', max_builds_per_definition, 'int') + if deleted_filter is not None: + query_parameters['deletedFilter'] = self._serialize.query('deleted_filter', deleted_filter, 'str') + if query_order is not None: + query_parameters['queryOrder'] = self._serialize.query('query_order', query_order, 'str') + if branch_name is not None: + query_parameters['branchName'] = self._serialize.query('branch_name', branch_name, 'str') + if build_ids is not None: + build_ids = ",".join(map(str, build_ids)) + query_parameters['buildIds'] = self._serialize.query('build_ids', build_ids, 'str') + if repository_id is not None: + query_parameters['repositoryId'] = self._serialize.query('repository_id', repository_id, 'str') + if repository_type is not None: + query_parameters['repositoryType'] = self._serialize.query('repository_type', repository_type, 'str') + response = self._send(http_method='GET', + location_id='0cd358e1-9217-4d94-8269-1c1ee6f93dcf', + version='6.0-preview.6', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[Build]', self._unwrap_collection(response)) + + def queue_build(self, build, project, ignore_warnings=None, check_in_ticket=None, source_build_id=None, definition_id=None): + """QueueBuild. + [Preview API] Queues a build + :param :class:` ` build: + :param str project: Project ID or project name + :param bool ignore_warnings: + :param str check_in_ticket: + :param int source_build_id: + :param int definition_id: Optional definition id to queue a build without a body. Ignored if there's a valid body + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if ignore_warnings is not None: + query_parameters['ignoreWarnings'] = self._serialize.query('ignore_warnings', ignore_warnings, 'bool') + if check_in_ticket is not None: + query_parameters['checkInTicket'] = self._serialize.query('check_in_ticket', check_in_ticket, 'str') + if source_build_id is not None: + query_parameters['sourceBuildId'] = self._serialize.query('source_build_id', source_build_id, 'int') + if definition_id is not None: + query_parameters['definitionId'] = self._serialize.query('definition_id', definition_id, 'int') + content = self._serialize.body(build, 'Build') + response = self._send(http_method='POST', + location_id='0cd358e1-9217-4d94-8269-1c1ee6f93dcf', + version='6.0-preview.6', + route_values=route_values, + query_parameters=query_parameters, + content=content) + return self._deserialize('Build', response) + + def update_build(self, build, project, build_id, retry=None): + """UpdateBuild. + [Preview API] Updates a build. + :param :class:` ` build: The build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param bool retry: + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + query_parameters = {} + if retry is not None: + query_parameters['retry'] = self._serialize.query('retry', retry, 'bool') + content = self._serialize.body(build, 'Build') + response = self._send(http_method='PATCH', + location_id='0cd358e1-9217-4d94-8269-1c1ee6f93dcf', + version='6.0-preview.6', + route_values=route_values, + query_parameters=query_parameters, + content=content) + return self._deserialize('Build', response) + + def update_builds(self, builds, project): + """UpdateBuilds. + [Preview API] Updates multiple builds. + :param [Build] builds: The builds to update. + :param str project: Project ID or project name + :rtype: [Build] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + content = self._serialize.body(builds, '[Build]') + response = self._send(http_method='PATCH', + location_id='0cd358e1-9217-4d94-8269-1c1ee6f93dcf', + version='6.0-preview.6', + route_values=route_values, + content=content) + return self._deserialize('[Build]', self._unwrap_collection(response)) + + def get_build_changes(self, project, build_id, continuation_token=None, top=None, include_source_change=None): + """GetBuildChanges. + [Preview API] Gets the changes associated with a build + :param str project: Project ID or project name + :param int build_id: + :param str continuation_token: + :param int top: The maximum number of changes to return + :param bool include_source_change: + :rtype: :class:`<[Change]> ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + query_parameters = {} + if continuation_token is not None: + query_parameters['continuationToken'] = self._serialize.query('continuation_token', continuation_token, 'str') + if top is not None: + query_parameters['$top'] = self._serialize.query('top', top, 'int') + if include_source_change is not None: + query_parameters['includeSourceChange'] = self._serialize.query('include_source_change', include_source_change, 'bool') + response = self._send(http_method='GET', + location_id='54572c7b-bbd3-45d4-80dc-28be08941620', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[Change]', self._unwrap_collection(response)) + + def get_changes_between_builds(self, project, from_build_id=None, to_build_id=None, top=None): + """GetChangesBetweenBuilds. + [Preview API] Gets the changes made to the repository between two given builds. + :param str project: Project ID or project name + :param int from_build_id: The ID of the first build. + :param int to_build_id: The ID of the last build. + :param int top: The maximum number of changes to return. + :rtype: [Change] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if from_build_id is not None: + query_parameters['fromBuildId'] = self._serialize.query('from_build_id', from_build_id, 'int') + if to_build_id is not None: + query_parameters['toBuildId'] = self._serialize.query('to_build_id', to_build_id, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query('top', top, 'int') + response = self._send(http_method='GET', + location_id='f10f0ea5-18a1-43ec-a8fb-2042c7be9b43', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[Change]', self._unwrap_collection(response)) + + def get_build_controller(self, controller_id): + """GetBuildController. + [Preview API] Gets a controller + :param int controller_id: + :rtype: :class:` ` + """ + route_values = {} + if controller_id is not None: + route_values['controllerId'] = self._serialize.url('controller_id', controller_id, 'int') + response = self._send(http_method='GET', + location_id='fcac1932-2ee1-437f-9b6f-7f696be858f6', + version='6.0-preview.2', + route_values=route_values) + return self._deserialize('BuildController', response) + + def get_build_controllers(self, name=None): + """GetBuildControllers. + [Preview API] Gets controller, optionally filtered by name + :param str name: + :rtype: [BuildController] + """ + query_parameters = {} + if name is not None: + query_parameters['name'] = self._serialize.query('name', name, 'str') + response = self._send(http_method='GET', + location_id='fcac1932-2ee1-437f-9b6f-7f696be858f6', + version='6.0-preview.2', + query_parameters=query_parameters) + return self._deserialize('[BuildController]', self._unwrap_collection(response)) + + def create_definition(self, definition, project, definition_to_clone_id=None, definition_to_clone_revision=None): + """CreateDefinition. + [Preview API] Creates a new definition. + :param :class:` ` definition: The definition. + :param str project: Project ID or project name + :param int definition_to_clone_id: + :param int definition_to_clone_revision: + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if definition_to_clone_id is not None: + query_parameters['definitionToCloneId'] = self._serialize.query('definition_to_clone_id', definition_to_clone_id, 'int') + if definition_to_clone_revision is not None: + query_parameters['definitionToCloneRevision'] = self._serialize.query('definition_to_clone_revision', definition_to_clone_revision, 'int') + content = self._serialize.body(definition, 'BuildDefinition') + response = self._send(http_method='POST', + location_id='dbeaf647-6167-421a-bda9-c9327b25e2e6', + version='6.0-preview.7', + route_values=route_values, + query_parameters=query_parameters, + content=content) + return self._deserialize('BuildDefinition', response) + + def delete_definition(self, project, definition_id): + """DeleteDefinition. + [Preview API] Deletes a definition and all associated builds. + :param str project: Project ID or project name + :param int definition_id: The ID of the definition. + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + self._send(http_method='DELETE', + location_id='dbeaf647-6167-421a-bda9-c9327b25e2e6', + version='6.0-preview.7', + route_values=route_values) + + def get_definition(self, project, definition_id, revision=None, min_metrics_time=None, property_filters=None, include_latest_builds=None): + """GetDefinition. + [Preview API] Gets a definition, optionally at a specific revision. + :param str project: Project ID or project name + :param int definition_id: The ID of the definition. + :param int revision: The revision number to retrieve. If this is not specified, the latest version will be returned. + :param datetime min_metrics_time: If specified, indicates the date from which metrics should be included. + :param [str] property_filters: A comma-delimited list of properties to include in the results. + :param bool include_latest_builds: + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + query_parameters = {} + if revision is not None: + query_parameters['revision'] = self._serialize.query('revision', revision, 'int') + if min_metrics_time is not None: + query_parameters['minMetricsTime'] = self._serialize.query('min_metrics_time', min_metrics_time, 'iso-8601') + if property_filters is not None: + property_filters = ",".join(property_filters) + query_parameters['propertyFilters'] = self._serialize.query('property_filters', property_filters, 'str') + if include_latest_builds is not None: + query_parameters['includeLatestBuilds'] = self._serialize.query('include_latest_builds', include_latest_builds, 'bool') + response = self._send(http_method='GET', + location_id='dbeaf647-6167-421a-bda9-c9327b25e2e6', + version='6.0-preview.7', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('BuildDefinition', response) + + def get_definitions(self, project, name=None, repository_id=None, repository_type=None, query_order=None, top=None, continuation_token=None, min_metrics_time=None, definition_ids=None, path=None, built_after=None, not_built_after=None, include_all_properties=None, include_latest_builds=None, task_id_filter=None, process_type=None, yaml_filename=None): + """GetDefinitions. + [Preview API] Gets a list of definitions. + :param str project: Project ID or project name + :param str name: If specified, filters to definitions whose names match this pattern. + :param str repository_id: A repository ID. If specified, filters to definitions that use this repository. + :param str repository_type: If specified, filters to definitions that have a repository of this type. + :param str query_order: Indicates the order in which definitions should be returned. + :param int top: The maximum number of definitions to return. + :param str continuation_token: A continuation token, returned by a previous call to this method, that can be used to return the next set of definitions. + :param datetime min_metrics_time: If specified, indicates the date from which metrics should be included. + :param [int] definition_ids: A comma-delimited list that specifies the IDs of definitions to retrieve. + :param str path: If specified, filters to definitions under this folder. + :param datetime built_after: If specified, filters to definitions that have builds after this date. + :param datetime not_built_after: If specified, filters to definitions that do not have builds after this date. + :param bool include_all_properties: Indicates whether the full definitions should be returned. By default, shallow representations of the definitions are returned. + :param bool include_latest_builds: Indicates whether to return the latest and latest completed builds for this definition. + :param str task_id_filter: If specified, filters to definitions that use the specified task. + :param int process_type: If specified, filters to definitions with the given process type. + :param str yaml_filename: If specified, filters to YAML definitions that match the given filename. + :rtype: :class:`<[BuildDefinitionReference]> ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if name is not None: + query_parameters['name'] = self._serialize.query('name', name, 'str') + if repository_id is not None: + query_parameters['repositoryId'] = self._serialize.query('repository_id', repository_id, 'str') + if repository_type is not None: + query_parameters['repositoryType'] = self._serialize.query('repository_type', repository_type, 'str') + if query_order is not None: + query_parameters['queryOrder'] = self._serialize.query('query_order', query_order, 'str') + if top is not None: + query_parameters['$top'] = self._serialize.query('top', top, 'int') + if continuation_token is not None: + query_parameters['continuationToken'] = self._serialize.query('continuation_token', continuation_token, 'str') + if min_metrics_time is not None: + query_parameters['minMetricsTime'] = self._serialize.query('min_metrics_time', min_metrics_time, 'iso-8601') + if definition_ids is not None: + definition_ids = ",".join(map(str, definition_ids)) + query_parameters['definitionIds'] = self._serialize.query('definition_ids', definition_ids, 'str') + if path is not None: + query_parameters['path'] = self._serialize.query('path', path, 'str') + if built_after is not None: + query_parameters['builtAfter'] = self._serialize.query('built_after', built_after, 'iso-8601') + if not_built_after is not None: + query_parameters['notBuiltAfter'] = self._serialize.query('not_built_after', not_built_after, 'iso-8601') + if include_all_properties is not None: + query_parameters['includeAllProperties'] = self._serialize.query('include_all_properties', include_all_properties, 'bool') + if include_latest_builds is not None: + query_parameters['includeLatestBuilds'] = self._serialize.query('include_latest_builds', include_latest_builds, 'bool') + if task_id_filter is not None: + query_parameters['taskIdFilter'] = self._serialize.query('task_id_filter', task_id_filter, 'str') + if process_type is not None: + query_parameters['processType'] = self._serialize.query('process_type', process_type, 'int') + if yaml_filename is not None: + query_parameters['yamlFilename'] = self._serialize.query('yaml_filename', yaml_filename, 'str') + response = self._send(http_method='GET', + location_id='dbeaf647-6167-421a-bda9-c9327b25e2e6', + version='6.0-preview.7', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[BuildDefinitionReference]', self._unwrap_collection(response)) + + def restore_definition(self, project, definition_id, deleted): + """RestoreDefinition. + [Preview API] Restores a deleted definition + :param str project: Project ID or project name + :param int definition_id: The identifier of the definition to restore. + :param bool deleted: When false, restores a deleted definition. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + query_parameters = {} + if deleted is not None: + query_parameters['deleted'] = self._serialize.query('deleted', deleted, 'bool') + response = self._send(http_method='PATCH', + location_id='dbeaf647-6167-421a-bda9-c9327b25e2e6', + version='6.0-preview.7', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('BuildDefinition', response) + + def update_definition(self, definition, project, definition_id, secrets_source_definition_id=None, secrets_source_definition_revision=None): + """UpdateDefinition. + [Preview API] Updates an existing definition. + :param :class:` ` definition: The new version of the definition. + :param str project: Project ID or project name + :param int definition_id: The ID of the definition. + :param int secrets_source_definition_id: + :param int secrets_source_definition_revision: + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + query_parameters = {} + if secrets_source_definition_id is not None: + query_parameters['secretsSourceDefinitionId'] = self._serialize.query('secrets_source_definition_id', secrets_source_definition_id, 'int') + if secrets_source_definition_revision is not None: + query_parameters['secretsSourceDefinitionRevision'] = self._serialize.query('secrets_source_definition_revision', secrets_source_definition_revision, 'int') + content = self._serialize.body(definition, 'BuildDefinition') + response = self._send(http_method='PUT', + location_id='dbeaf647-6167-421a-bda9-c9327b25e2e6', + version='6.0-preview.7', + route_values=route_values, + query_parameters=query_parameters, + content=content) + return self._deserialize('BuildDefinition', response) + + def get_file_contents(self, project, provider_name, service_endpoint_id=None, repository=None, commit_or_branch=None, path=None, **kwargs): + """GetFileContents. + [Preview API] Gets the contents of a file in the given source code repository. + :param str project: Project ID or project name + :param str provider_name: The name of the source provider. + :param str service_endpoint_id: If specified, the ID of the service endpoint to query. Can only be omitted for providers that do not use service endpoints, e.g. TFVC or TFGit. + :param str repository: If specified, the vendor-specific identifier or the name of the repository to get branches. Can only be omitted for providers that do not support multiple repositories. + :param str commit_or_branch: The identifier of the commit or branch from which a file's contents are retrieved. + :param str path: The path to the file to retrieve, relative to the root of the repository. + :rtype: object + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if provider_name is not None: + route_values['providerName'] = self._serialize.url('provider_name', provider_name, 'str') + query_parameters = {} + if service_endpoint_id is not None: + query_parameters['serviceEndpointId'] = self._serialize.query('service_endpoint_id', service_endpoint_id, 'str') + if repository is not None: + query_parameters['repository'] = self._serialize.query('repository', repository, 'str') + if commit_or_branch is not None: + query_parameters['commitOrBranch'] = self._serialize.query('commit_or_branch', commit_or_branch, 'str') + if path is not None: + query_parameters['path'] = self._serialize.query('path', path, 'str') + response = self._send(http_method='GET', + location_id='29d12225-b1d9-425f-b668-6c594a981313', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters, + accept_media_type='text/plain') + if "callback" in kwargs: + callback = kwargs["callback"] + else: + callback = None + return self._client.stream_download(response, callback=callback) + + def create_folder(self, folder, project, path): + """CreateFolder. + [Preview API] Creates a new folder. + :param :class:` ` folder: The folder. + :param str project: Project ID or project name + :param str path: The full path of the folder. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if path is not None: + query_parameters['path'] = self._serialize.query('path', path, 'str') + content = self._serialize.body(folder, 'Folder') + response = self._send(http_method='PUT', + location_id='a906531b-d2da-4f55-bda7-f3e676cc50d9', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters, + content=content) + return self._deserialize('Folder', response) + + def delete_folder(self, project, path): + """DeleteFolder. + [Preview API] Deletes a definition folder. Definitions and their corresponding builds will also be deleted. + :param str project: Project ID or project name + :param str path: The full path to the folder. + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if path is not None: + query_parameters['path'] = self._serialize.query('path', path, 'str') + self._send(http_method='DELETE', + location_id='a906531b-d2da-4f55-bda7-f3e676cc50d9', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters) + + def get_folders(self, project, path=None, query_order=None): + """GetFolders. + [Preview API] Gets a list of build definition folders. + :param str project: Project ID or project name + :param str path: The path to start with. + :param str query_order: The order in which folders should be returned. + :rtype: [Folder] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if path is not None: + route_values['path'] = self._serialize.url('path', path, 'str') + query_parameters = {} + if query_order is not None: + query_parameters['queryOrder'] = self._serialize.query('query_order', query_order, 'str') + response = self._send(http_method='GET', + location_id='a906531b-d2da-4f55-bda7-f3e676cc50d9', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[Folder]', self._unwrap_collection(response)) + + def update_folder(self, folder, project, path): + """UpdateFolder. + [Preview API] Updates an existing folder at given existing path + :param :class:` ` folder: The new version of the folder. + :param str project: Project ID or project name + :param str path: The full path to the folder. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if path is not None: + query_parameters['path'] = self._serialize.query('path', path, 'str') + content = self._serialize.body(folder, 'Folder') + response = self._send(http_method='POST', + location_id='a906531b-d2da-4f55-bda7-f3e676cc50d9', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters, + content=content) + return self._deserialize('Folder', response) + + def get_build_general_settings(self, project): + """GetBuildGeneralSettings. + [Preview API] Gets pipeline general settings. + :param str project: Project ID or project name + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + response = self._send(http_method='GET', + location_id='c4aefd19-30ff-405b-80ad-aca021e7242a', + version='6.0-preview.1', + route_values=route_values) + return self._deserialize('PipelineGeneralSettings', response) + + def update_build_general_settings(self, new_settings, project): + """UpdateBuildGeneralSettings. + [Preview API] Updates pipeline general settings. + :param :class:` ` new_settings: + :param str project: Project ID or project name + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + content = self._serialize.body(new_settings, 'PipelineGeneralSettings') + response = self._send(http_method='PATCH', + location_id='c4aefd19-30ff-405b-80ad-aca021e7242a', + version='6.0-preview.1', + route_values=route_values, + content=content) + return self._deserialize('PipelineGeneralSettings', response) + + def get_latest_build(self, project, definition, branch_name=None): + """GetLatestBuild. + [Preview API] Gets the latest build for a definition, optionally scoped to a specific branch. + :param str project: Project ID or project name + :param str definition: definition name with optional leading folder path, or the definition id + :param str branch_name: optional parameter that indicates the specific branch to use + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition is not None: + route_values['definition'] = self._serialize.url('definition', definition, 'str') + query_parameters = {} + if branch_name is not None: + query_parameters['branchName'] = self._serialize.query('branch_name', branch_name, 'str') + response = self._send(http_method='GET', + location_id='54481611-01f4-47f3-998f-160da0f0c229', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('Build', response) + + def add_retention_leases(self, new_leases, project): + """AddRetentionLeases. + [Preview API] Adds new leases for pipeline runs. + :param [NewRetentionLease] new_leases: + :param str project: Project ID or project name + :rtype: [RetentionLease] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + content = self._serialize.body(new_leases, '[NewRetentionLease]') + response = self._send(http_method='POST', + location_id='272051e4-9af1-45b5-ae22-8d960a5539d4', + version='6.0-preview.1', + route_values=route_values, + content=content) + return self._deserialize('[RetentionLease]', self._unwrap_collection(response)) + + def delete_retention_leases_by_id(self, project, ids): + """DeleteRetentionLeasesById. + [Preview API] Removes specific retention leases. + :param str project: Project ID or project name + :param [int] ids: + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if ids is not None: + ids = ",".join(map(str, ids)) + query_parameters['ids'] = self._serialize.query('ids', ids, 'str') + self._send(http_method='DELETE', + location_id='272051e4-9af1-45b5-ae22-8d960a5539d4', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + + def get_retention_lease(self, project, lease_id): + """GetRetentionLease. + [Preview API] Returns the details of the retention lease given a lease id. + :param str project: Project ID or project name + :param int lease_id: + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if lease_id is not None: + route_values['leaseId'] = self._serialize.url('lease_id', lease_id, 'int') + response = self._send(http_method='GET', + location_id='272051e4-9af1-45b5-ae22-8d960a5539d4', + version='6.0-preview.1', + route_values=route_values) + return self._deserialize('RetentionLease', response) + + def get_retention_leases_by_minimal_retention_leases(self, project, leases_to_fetch): + """GetRetentionLeasesByMinimalRetentionLeases. + [Preview API] Returns any leases matching the specified MinimalRetentionLeases + :param str project: Project ID or project name + :param [MinimalRetentionLease] leases_to_fetch: List of JSON-serialized MinimalRetentionLeases separated by '|' + :rtype: [RetentionLease] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if leases_to_fetch is not None: + leases_to_fetch = "|".join(map(str, leases_to_fetch)) + query_parameters['leasesToFetch'] = self._serialize.query('leases_to_fetch', leases_to_fetch, 'str') + response = self._send(http_method='GET', + location_id='272051e4-9af1-45b5-ae22-8d960a5539d4', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[RetentionLease]', self._unwrap_collection(response)) + + def get_retention_leases_by_owner_id(self, project, owner_id=None, definition_id=None, run_id=None): + """GetRetentionLeasesByOwnerId. + [Preview API] Returns any leases owned by the specified entity, optionally scoped to a single pipeline definition and run. + :param str project: Project ID or project name + :param str owner_id: + :param int definition_id: An optional parameter to limit the search to a specific pipeline definition. + :param int run_id: An optional parameter to limit the search to a single pipeline run. Requires definitionId. + :rtype: [RetentionLease] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if owner_id is not None: + query_parameters['ownerId'] = self._serialize.query('owner_id', owner_id, 'str') + if definition_id is not None: + query_parameters['definitionId'] = self._serialize.query('definition_id', definition_id, 'int') + if run_id is not None: + query_parameters['runId'] = self._serialize.query('run_id', run_id, 'int') + response = self._send(http_method='GET', + location_id='272051e4-9af1-45b5-ae22-8d960a5539d4', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[RetentionLease]', self._unwrap_collection(response)) + + def get_retention_leases_by_user_id(self, project, user_owner_id, definition_id=None, run_id=None): + """GetRetentionLeasesByUserId. + [Preview API] Returns any leases owned by the specified user, optionally scoped to a single pipeline definition and run. + :param str project: Project ID or project name + :param str user_owner_id: The user id to search for. + :param int definition_id: An optional parameter to limit the search to a specific pipeline definition. + :param int run_id: An optional parameter to limit the search to a single pipeline run. Requires definitionId. + :rtype: [RetentionLease] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if user_owner_id is not None: + query_parameters['userOwnerId'] = self._serialize.query('user_owner_id', user_owner_id, 'str') + if definition_id is not None: + query_parameters['definitionId'] = self._serialize.query('definition_id', definition_id, 'int') + if run_id is not None: + query_parameters['runId'] = self._serialize.query('run_id', run_id, 'int') + response = self._send(http_method='GET', + location_id='272051e4-9af1-45b5-ae22-8d960a5539d4', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[RetentionLease]', self._unwrap_collection(response)) + + def get_build_log(self, project, build_id, log_id, start_line=None, end_line=None, **kwargs): + """GetBuildLog. + [Preview API] Gets an individual log file for a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param int log_id: The ID of the log file. + :param long start_line: The start line. + :param long end_line: The end line. + :rtype: object + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + if log_id is not None: + route_values['logId'] = self._serialize.url('log_id', log_id, 'int') + query_parameters = {} + if start_line is not None: + query_parameters['startLine'] = self._serialize.query('start_line', start_line, 'long') + if end_line is not None: + query_parameters['endLine'] = self._serialize.query('end_line', end_line, 'long') + response = self._send(http_method='GET', + location_id='35a80daf-7f30-45fc-86e8-6b813d9c90df', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters, + accept_media_type='text/plain') + if "callback" in kwargs: + callback = kwargs["callback"] + else: + callback = None + return self._client.stream_download(response, callback=callback) + + def get_build_log_lines(self, project, build_id, log_id, start_line=None, end_line=None): + """GetBuildLogLines. + [Preview API] Gets an individual log file for a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param int log_id: The ID of the log file. + :param long start_line: The start line. + :param long end_line: The end line. + :rtype: [str] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + if log_id is not None: + route_values['logId'] = self._serialize.url('log_id', log_id, 'int') + query_parameters = {} + if start_line is not None: + query_parameters['startLine'] = self._serialize.query('start_line', start_line, 'long') + if end_line is not None: + query_parameters['endLine'] = self._serialize.query('end_line', end_line, 'long') + response = self._send(http_method='GET', + location_id='35a80daf-7f30-45fc-86e8-6b813d9c90df', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[str]', self._unwrap_collection(response)) + + def get_build_logs(self, project, build_id): + """GetBuildLogs. + [Preview API] Gets the logs for a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :rtype: [BuildLog] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + response = self._send(http_method='GET', + location_id='35a80daf-7f30-45fc-86e8-6b813d9c90df', + version='6.0-preview.2', + route_values=route_values) + return self._deserialize('[BuildLog]', self._unwrap_collection(response)) + + def get_build_logs_zip(self, project, build_id, **kwargs): + """GetBuildLogsZip. + [Preview API] Gets the logs for a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :rtype: object + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + response = self._send(http_method='GET', + location_id='35a80daf-7f30-45fc-86e8-6b813d9c90df', + version='6.0-preview.2', + route_values=route_values, + accept_media_type='application/zip') + if "callback" in kwargs: + callback = kwargs["callback"] + else: + callback = None + return self._client.stream_download(response, callback=callback) + + def get_build_log_zip(self, project, build_id, log_id, start_line=None, end_line=None, **kwargs): + """GetBuildLogZip. + [Preview API] Gets an individual log file for a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param int log_id: The ID of the log file. + :param long start_line: The start line. + :param long end_line: The end line. + :rtype: object + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + if log_id is not None: + route_values['logId'] = self._serialize.url('log_id', log_id, 'int') + query_parameters = {} + if start_line is not None: + query_parameters['startLine'] = self._serialize.query('start_line', start_line, 'long') + if end_line is not None: + query_parameters['endLine'] = self._serialize.query('end_line', end_line, 'long') + response = self._send(http_method='GET', + location_id='35a80daf-7f30-45fc-86e8-6b813d9c90df', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters, + accept_media_type='application/zip') + if "callback" in kwargs: + callback = kwargs["callback"] + else: + callback = None + return self._client.stream_download(response, callback=callback) + + def get_project_metrics(self, project, metric_aggregation_type=None, min_metrics_time=None): + """GetProjectMetrics. + [Preview API] Gets build metrics for a project. + :param str project: Project ID or project name + :param str metric_aggregation_type: The aggregation type to use (hourly, daily). + :param datetime min_metrics_time: The date from which to calculate metrics. + :rtype: [BuildMetric] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if metric_aggregation_type is not None: + route_values['metricAggregationType'] = self._serialize.url('metric_aggregation_type', metric_aggregation_type, 'str') + query_parameters = {} + if min_metrics_time is not None: + query_parameters['minMetricsTime'] = self._serialize.query('min_metrics_time', min_metrics_time, 'iso-8601') + response = self._send(http_method='GET', + location_id='7433fae7-a6bc-41dc-a6e2-eef9005ce41a', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[BuildMetric]', self._unwrap_collection(response)) + + def get_definition_metrics(self, project, definition_id, min_metrics_time=None): + """GetDefinitionMetrics. + [Preview API] Gets build metrics for a definition. + :param str project: Project ID or project name + :param int definition_id: The ID of the definition. + :param datetime min_metrics_time: The date from which to calculate metrics. + :rtype: [BuildMetric] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + query_parameters = {} + if min_metrics_time is not None: + query_parameters['minMetricsTime'] = self._serialize.query('min_metrics_time', min_metrics_time, 'iso-8601') + response = self._send(http_method='GET', + location_id='d973b939-0ce0-4fec-91d8-da3940fa1827', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[BuildMetric]', self._unwrap_collection(response)) + + def get_build_option_definitions(self, project=None): + """GetBuildOptionDefinitions. + [Preview API] Gets all build definition options supported by the system. + :param str project: Project ID or project name + :rtype: [BuildOptionDefinition] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + response = self._send(http_method='GET', + location_id='591cb5a4-2d46-4f3a-a697-5cd42b6bd332', + version='6.0-preview.2', + route_values=route_values) + return self._deserialize('[BuildOptionDefinition]', self._unwrap_collection(response)) + + def get_path_contents(self, project, provider_name, service_endpoint_id=None, repository=None, commit_or_branch=None, path=None): + """GetPathContents. + [Preview API] Gets the contents of a directory in the given source code repository. + :param str project: Project ID or project name + :param str provider_name: The name of the source provider. + :param str service_endpoint_id: If specified, the ID of the service endpoint to query. Can only be omitted for providers that do not use service endpoints, e.g. TFVC or TFGit. + :param str repository: If specified, the vendor-specific identifier or the name of the repository to get branches. Can only be omitted for providers that do not support multiple repositories. + :param str commit_or_branch: The identifier of the commit or branch from which a file's contents are retrieved. + :param str path: The path contents to list, relative to the root of the repository. + :rtype: [SourceRepositoryItem] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if provider_name is not None: + route_values['providerName'] = self._serialize.url('provider_name', provider_name, 'str') + query_parameters = {} + if service_endpoint_id is not None: + query_parameters['serviceEndpointId'] = self._serialize.query('service_endpoint_id', service_endpoint_id, 'str') + if repository is not None: + query_parameters['repository'] = self._serialize.query('repository', repository, 'str') + if commit_or_branch is not None: + query_parameters['commitOrBranch'] = self._serialize.query('commit_or_branch', commit_or_branch, 'str') + if path is not None: + query_parameters['path'] = self._serialize.query('path', path, 'str') + response = self._send(http_method='GET', + location_id='7944d6fb-df01-4709-920a-7a189aa34037', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[SourceRepositoryItem]', self._unwrap_collection(response)) + + def get_build_properties(self, project, build_id, filter=None): + """GetBuildProperties. + [Preview API] Gets properties for a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param [str] filter: A comma-delimited list of properties. If specified, filters to these specific properties. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + query_parameters = {} + if filter is not None: + filter = ",".join(filter) + query_parameters['filter'] = self._serialize.query('filter', filter, 'str') + response = self._send(http_method='GET', + location_id='0a6312e9-0627-49b7-8083-7d74a64849c9', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('object', response) + + def update_build_properties(self, document, project, build_id): + """UpdateBuildProperties. + [Preview API] Updates properties for a build. + :param :class:`<[JsonPatchOperation]> ` document: A json-patch document describing the properties to update. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + content = self._serialize.body(document, '[JsonPatchOperation]') + response = self._send(http_method='PATCH', + location_id='0a6312e9-0627-49b7-8083-7d74a64849c9', + version='6.0-preview.1', + route_values=route_values, + content=content, + media_type='application/json-patch+json') + return self._deserialize('object', response) + + def get_definition_properties(self, project, definition_id, filter=None): + """GetDefinitionProperties. + [Preview API] Gets properties for a definition. + :param str project: Project ID or project name + :param int definition_id: The ID of the definition. + :param [str] filter: A comma-delimited list of properties. If specified, filters to these specific properties. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + query_parameters = {} + if filter is not None: + filter = ",".join(filter) + query_parameters['filter'] = self._serialize.query('filter', filter, 'str') + response = self._send(http_method='GET', + location_id='d9826ad7-2a68-46a9-a6e9-677698777895', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('object', response) + + def update_definition_properties(self, document, project, definition_id): + """UpdateDefinitionProperties. + [Preview API] Updates properties for a definition. + :param :class:`<[JsonPatchOperation]> ` document: A json-patch document describing the properties to update. + :param str project: Project ID or project name + :param int definition_id: The ID of the definition. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + content = self._serialize.body(document, '[JsonPatchOperation]') + response = self._send(http_method='PATCH', + location_id='d9826ad7-2a68-46a9-a6e9-677698777895', + version='6.0-preview.1', + route_values=route_values, + content=content, + media_type='application/json-patch+json') + return self._deserialize('object', response) + + def get_pull_request(self, project, provider_name, pull_request_id, repository_id=None, service_endpoint_id=None): + """GetPullRequest. + [Preview API] Gets a pull request object from source provider. + :param str project: Project ID or project name + :param str provider_name: The name of the source provider. + :param str pull_request_id: Vendor-specific id of the pull request. + :param str repository_id: Vendor-specific identifier or the name of the repository that contains the pull request. + :param str service_endpoint_id: If specified, the ID of the service endpoint to query. Can only be omitted for providers that do not use service endpoints, e.g. TFVC or TFGit. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if provider_name is not None: + route_values['providerName'] = self._serialize.url('provider_name', provider_name, 'str') + if pull_request_id is not None: + route_values['pullRequestId'] = self._serialize.url('pull_request_id', pull_request_id, 'str') + query_parameters = {} + if repository_id is not None: + query_parameters['repositoryId'] = self._serialize.query('repository_id', repository_id, 'str') + if service_endpoint_id is not None: + query_parameters['serviceEndpointId'] = self._serialize.query('service_endpoint_id', service_endpoint_id, 'str') + response = self._send(http_method='GET', + location_id='d8763ec7-9ff0-4fb4-b2b2-9d757906ff14', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('PullRequest', response) + + def get_build_report(self, project, build_id, type=None): + """GetBuildReport. + [Preview API] Gets a build report. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param str type: + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + query_parameters = {} + if type is not None: + query_parameters['type'] = self._serialize.query('type', type, 'str') + response = self._send(http_method='GET', + location_id='45bcaa88-67e1-4042-a035-56d3b4a7d44c', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('BuildReportMetadata', response) + + def get_build_report_html_content(self, project, build_id, type=None, **kwargs): + """GetBuildReportHtmlContent. + [Preview API] Gets a build report. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param str type: + :rtype: object + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + query_parameters = {} + if type is not None: + query_parameters['type'] = self._serialize.query('type', type, 'str') + response = self._send(http_method='GET', + location_id='45bcaa88-67e1-4042-a035-56d3b4a7d44c', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters, + accept_media_type='text/html') + if "callback" in kwargs: + callback = kwargs["callback"] + else: + callback = None + return self._client.stream_download(response, callback=callback) + + def list_repositories(self, project, provider_name, service_endpoint_id=None, repository=None, result_set=None, page_results=None, continuation_token=None): + """ListRepositories. + [Preview API] Gets a list of source code repositories. + :param str project: Project ID or project name + :param str provider_name: The name of the source provider. + :param str service_endpoint_id: If specified, the ID of the service endpoint to query. Can only be omitted for providers that do not use service endpoints, e.g. TFVC or TFGit. + :param str repository: If specified, the vendor-specific identifier or the name of a single repository to get. + :param str result_set: 'top' for the repositories most relevant for the endpoint. If not set, all repositories are returned. Ignored if 'repository' is set. + :param bool page_results: If set to true, this will limit the set of results and will return a continuation token to continue the query. + :param str continuation_token: When paging results, this is a continuation token, returned by a previous call to this method, that can be used to return the next set of repositories. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if provider_name is not None: + route_values['providerName'] = self._serialize.url('provider_name', provider_name, 'str') + query_parameters = {} + if service_endpoint_id is not None: + query_parameters['serviceEndpointId'] = self._serialize.query('service_endpoint_id', service_endpoint_id, 'str') + if repository is not None: + query_parameters['repository'] = self._serialize.query('repository', repository, 'str') + if result_set is not None: + query_parameters['resultSet'] = self._serialize.query('result_set', result_set, 'str') + if page_results is not None: + query_parameters['pageResults'] = self._serialize.query('page_results', page_results, 'bool') + if continuation_token is not None: + query_parameters['continuationToken'] = self._serialize.query('continuation_token', continuation_token, 'str') + response = self._send(http_method='GET', + location_id='d44d1680-f978-4834-9b93-8c6e132329c9', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('SourceRepositories', response) + + def authorize_definition_resources(self, resources, project, definition_id): + """AuthorizeDefinitionResources. + [Preview API] + :param [DefinitionResourceReference] resources: + :param str project: Project ID or project name + :param int definition_id: + :rtype: [DefinitionResourceReference] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + content = self._serialize.body(resources, '[DefinitionResourceReference]') + response = self._send(http_method='PATCH', + location_id='ea623316-1967-45eb-89ab-e9e6110cf2d6', + version='6.0-preview.1', + route_values=route_values, + content=content) + return self._deserialize('[DefinitionResourceReference]', self._unwrap_collection(response)) + + def get_definition_resources(self, project, definition_id): + """GetDefinitionResources. + [Preview API] + :param str project: Project ID or project name + :param int definition_id: + :rtype: [DefinitionResourceReference] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + response = self._send(http_method='GET', + location_id='ea623316-1967-45eb-89ab-e9e6110cf2d6', + version='6.0-preview.1', + route_values=route_values) + return self._deserialize('[DefinitionResourceReference]', self._unwrap_collection(response)) + + def get_resource_usage(self): + """GetResourceUsage. + [Preview API] Gets information about build resources in the system. + :rtype: :class:` ` + """ + response = self._send(http_method='GET', + location_id='3813d06c-9e36-4ea1-aac3-61a485d60e3d', + version='6.0-preview.2') + return self._deserialize('BuildResourceUsage', response) + + def get_retention_settings(self, project): + """GetRetentionSettings. + [Preview API] Gets the project's retention settings. + :param str project: Project ID or project name + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + response = self._send(http_method='GET', + location_id='dadb46e7-5851-4c72-820e-ae8abb82f59f', + version='6.0-preview.1', + route_values=route_values) + return self._deserialize('ProjectRetentionSetting', response) + + def update_retention_settings(self, update_model, project): + """UpdateRetentionSettings. + [Preview API] Updates the project's retention settings. + :param :class:` ` update_model: + :param str project: Project ID or project name + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + content = self._serialize.body(update_model, 'UpdateProjectRetentionSettingModel') + response = self._send(http_method='PATCH', + location_id='dadb46e7-5851-4c72-820e-ae8abb82f59f', + version='6.0-preview.1', + route_values=route_values, + content=content) + return self._deserialize('ProjectRetentionSetting', response) + + def get_definition_revisions(self, project, definition_id): + """GetDefinitionRevisions. + [Preview API] Gets all revisions of a definition. + :param str project: Project ID or project name + :param int definition_id: The ID of the definition. + :rtype: [BuildDefinitionRevision] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + response = self._send(http_method='GET', + location_id='7c116775-52e5-453e-8c5d-914d9762d8c4', + version='6.0-preview.3', + route_values=route_values) + return self._deserialize('[BuildDefinitionRevision]', self._unwrap_collection(response)) + + def get_build_settings(self, project=None): + """GetBuildSettings. + [Preview API] Gets the build settings. + :param str project: Project ID or project name + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + response = self._send(http_method='GET', + location_id='aa8c1c9c-ef8b-474a-b8c4-785c7b191d0d', + version='6.0-preview.1', + route_values=route_values) + return self._deserialize('BuildSettings', response) + + def update_build_settings(self, settings, project=None): + """UpdateBuildSettings. + [Preview API] Updates the build settings. + :param :class:` ` settings: The new settings. + :param str project: Project ID or project name + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + content = self._serialize.body(settings, 'BuildSettings') + response = self._send(http_method='PATCH', + location_id='aa8c1c9c-ef8b-474a-b8c4-785c7b191d0d', + version='6.0-preview.1', + route_values=route_values, + content=content) + return self._deserialize('BuildSettings', response) + + def list_source_providers(self, project): + """ListSourceProviders. + [Preview API] Get a list of source providers and their capabilities. + :param str project: Project ID or project name + :rtype: [SourceProviderAttributes] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + response = self._send(http_method='GET', + location_id='3ce81729-954f-423d-a581-9fea01d25186', + version='6.0-preview.1', + route_values=route_values) + return self._deserialize('[SourceProviderAttributes]', self._unwrap_collection(response)) + + def update_stage(self, update_parameters, build_id, stage_ref_name, project=None): + """UpdateStage. + [Preview API] Update a build stage + :param :class:` ` update_parameters: + :param int build_id: + :param str stage_ref_name: + :param str project: Project ID or project name + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + if stage_ref_name is not None: + route_values['stageRefName'] = self._serialize.url('stage_ref_name', stage_ref_name, 'str') + content = self._serialize.body(update_parameters, 'UpdateStageParameters') + self._send(http_method='PATCH', + location_id='b8aac6c9-744b-46e1-88fc-3550969f9313', + version='6.0-preview.1', + route_values=route_values, + content=content) + + def get_status_badge(self, project, definition, branch_name=None, stage_name=None, job_name=None, configuration=None, label=None): + """GetStatusBadge. + [Preview API]

Gets the build status for a definition, optionally scoped to a specific branch, stage, job, and configuration.

If there are more than one, then it is required to pass in a stageName value when specifying a jobName, and the same rule then applies for both if passing a configuration parameter.

+ :param str project: Project ID or project name + :param str definition: Either the definition name with optional leading folder path, or the definition id. + :param str branch_name: Only consider the most recent build for this branch. + :param str stage_name: Use this stage within the pipeline to render the status. + :param str job_name: Use this job within a stage of the pipeline to render the status. + :param str configuration: Use this job configuration to render the status + :param str label: Replaces the default text on the left side of the badge. + :rtype: str + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition is not None: + route_values['definition'] = self._serialize.url('definition', definition, 'str') + query_parameters = {} + if branch_name is not None: + query_parameters['branchName'] = self._serialize.query('branch_name', branch_name, 'str') + if stage_name is not None: + query_parameters['stageName'] = self._serialize.query('stage_name', stage_name, 'str') + if job_name is not None: + query_parameters['jobName'] = self._serialize.query('job_name', job_name, 'str') + if configuration is not None: + query_parameters['configuration'] = self._serialize.query('configuration', configuration, 'str') + if label is not None: + query_parameters['label'] = self._serialize.query('label', label, 'str') + response = self._send(http_method='GET', + location_id='07acfdce-4757-4439-b422-ddd13a2fcc10', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('str', response) + + def add_build_tag(self, project, build_id, tag): + """AddBuildTag. + [Preview API] Adds a tag to a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param str tag: The tag to add. + :rtype: [str] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + if tag is not None: + route_values['tag'] = self._serialize.url('tag', tag, 'str') + response = self._send(http_method='PUT', + location_id='6e6114b2-8161-44c8-8f6c-c5505782427f', + version='6.0-preview.2', + route_values=route_values) + return self._deserialize('[str]', self._unwrap_collection(response)) + + def add_build_tags(self, tags, project, build_id): + """AddBuildTags. + [Preview API] Adds tags to a build. + :param [str] tags: The tags to add. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :rtype: [str] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + content = self._serialize.body(tags, '[str]') + response = self._send(http_method='POST', + location_id='6e6114b2-8161-44c8-8f6c-c5505782427f', + version='6.0-preview.2', + route_values=route_values, + content=content) + return self._deserialize('[str]', self._unwrap_collection(response)) + + def delete_build_tag(self, project, build_id, tag): + """DeleteBuildTag. + [Preview API] Removes a tag from a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param str tag: The tag to remove. + :rtype: [str] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + if tag is not None: + route_values['tag'] = self._serialize.url('tag', tag, 'str') + response = self._send(http_method='DELETE', + location_id='6e6114b2-8161-44c8-8f6c-c5505782427f', + version='6.0-preview.2', + route_values=route_values) + return self._deserialize('[str]', self._unwrap_collection(response)) + + def get_build_tags(self, project, build_id): + """GetBuildTags. + [Preview API] Gets the tags for a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :rtype: [str] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + response = self._send(http_method='GET', + location_id='6e6114b2-8161-44c8-8f6c-c5505782427f', + version='6.0-preview.2', + route_values=route_values) + return self._deserialize('[str]', self._unwrap_collection(response)) + + def add_definition_tag(self, project, definition_id, tag): + """AddDefinitionTag. + [Preview API] Adds a tag to a definition + :param str project: Project ID or project name + :param int definition_id: The ID of the definition. + :param str tag: The tag to add. + :rtype: [str] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + if tag is not None: + route_values['tag'] = self._serialize.url('tag', tag, 'str') + response = self._send(http_method='PUT', + location_id='cb894432-134a-4d31-a839-83beceaace4b', + version='6.0-preview.2', + route_values=route_values) + return self._deserialize('[str]', self._unwrap_collection(response)) + + def add_definition_tags(self, tags, project, definition_id): + """AddDefinitionTags. + [Preview API] Adds multiple tags to a definition. + :param [str] tags: The tags to add. + :param str project: Project ID or project name + :param int definition_id: The ID of the definition. + :rtype: [str] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + content = self._serialize.body(tags, '[str]') + response = self._send(http_method='POST', + location_id='cb894432-134a-4d31-a839-83beceaace4b', + version='6.0-preview.2', + route_values=route_values, + content=content) + return self._deserialize('[str]', self._unwrap_collection(response)) + + def delete_definition_tag(self, project, definition_id, tag): + """DeleteDefinitionTag. + [Preview API] Removes a tag from a definition. + :param str project: Project ID or project name + :param int definition_id: The ID of the definition. + :param str tag: The tag to remove. + :rtype: [str] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + if tag is not None: + route_values['tag'] = self._serialize.url('tag', tag, 'str') + response = self._send(http_method='DELETE', + location_id='cb894432-134a-4d31-a839-83beceaace4b', + version='6.0-preview.2', + route_values=route_values) + return self._deserialize('[str]', self._unwrap_collection(response)) + + def get_definition_tags(self, project, definition_id, revision=None): + """GetDefinitionTags. + [Preview API] Gets the tags for a definition. + :param str project: Project ID or project name + :param int definition_id: The ID of the definition. + :param int revision: The definition revision number. If not specified, uses the latest revision of the definition. + :rtype: [str] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if definition_id is not None: + route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int') + query_parameters = {} + if revision is not None: + query_parameters['revision'] = self._serialize.query('revision', revision, 'int') + response = self._send(http_method='GET', + location_id='cb894432-134a-4d31-a839-83beceaace4b', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[str]', self._unwrap_collection(response)) + + def delete_tag(self, project, tag): + """DeleteTag. + [Preview API] Removes a tag from builds, definitions, and from the tag store + :param str project: Project ID or project name + :param str tag: The tag to remove. + :rtype: [str] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if tag is not None: + route_values['tag'] = self._serialize.url('tag', tag, 'str') + response = self._send(http_method='DELETE', + location_id='d84ac5c6-edc7-43d5-adc9-1b34be5dea09', + version='6.0-preview.2', + route_values=route_values) + return self._deserialize('[str]', self._unwrap_collection(response)) + + def get_tags(self, project): + """GetTags. + [Preview API] Gets a list of all build tags in the project. + :param str project: Project ID or project name + :rtype: [str] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + response = self._send(http_method='GET', + location_id='d84ac5c6-edc7-43d5-adc9-1b34be5dea09', + version='6.0-preview.2', + route_values=route_values) + return self._deserialize('[str]', self._unwrap_collection(response)) + + def delete_template(self, project, template_id): + """DeleteTemplate. + [Preview API] Deletes a build definition template. + :param str project: Project ID or project name + :param str template_id: The ID of the template. + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if template_id is not None: + route_values['templateId'] = self._serialize.url('template_id', template_id, 'str') + self._send(http_method='DELETE', + location_id='e884571e-7f92-4d6a-9274-3f5649900835', + version='6.0-preview.3', + route_values=route_values) + + def get_template(self, project, template_id): + """GetTemplate. + [Preview API] Gets a specific build definition template. + :param str project: Project ID or project name + :param str template_id: The ID of the requested template. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if template_id is not None: + route_values['templateId'] = self._serialize.url('template_id', template_id, 'str') + response = self._send(http_method='GET', + location_id='e884571e-7f92-4d6a-9274-3f5649900835', + version='6.0-preview.3', + route_values=route_values) + return self._deserialize('BuildDefinitionTemplate', response) + + def get_templates(self, project): + """GetTemplates. + [Preview API] Gets all definition templates. + :param str project: Project ID or project name + :rtype: [BuildDefinitionTemplate] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + response = self._send(http_method='GET', + location_id='e884571e-7f92-4d6a-9274-3f5649900835', + version='6.0-preview.3', + route_values=route_values) + return self._deserialize('[BuildDefinitionTemplate]', self._unwrap_collection(response)) + + def save_template(self, template, project, template_id): + """SaveTemplate. + [Preview API] Updates an existing build definition template. + :param :class:` ` template: The new version of the template. + :param str project: Project ID or project name + :param str template_id: The ID of the template. + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if template_id is not None: + route_values['templateId'] = self._serialize.url('template_id', template_id, 'str') + content = self._serialize.body(template, 'BuildDefinitionTemplate') + response = self._send(http_method='PUT', + location_id='e884571e-7f92-4d6a-9274-3f5649900835', + version='6.0-preview.3', + route_values=route_values, + content=content) + return self._deserialize('BuildDefinitionTemplate', response) + + def get_build_timeline(self, project, build_id, timeline_id=None, change_id=None, plan_id=None): + """GetBuildTimeline. + [Preview API] Gets details for a build + :param str project: Project ID or project name + :param int build_id: + :param str timeline_id: + :param int change_id: + :param str plan_id: + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + if timeline_id is not None: + route_values['timelineId'] = self._serialize.url('timeline_id', timeline_id, 'str') + query_parameters = {} + if change_id is not None: + query_parameters['changeId'] = self._serialize.query('change_id', change_id, 'int') + if plan_id is not None: + query_parameters['planId'] = self._serialize.query('plan_id', plan_id, 'str') + response = self._send(http_method='GET', + location_id='8baac422-4c6e-4de5-8532-db96d92acffa', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('Timeline', response) + + def restore_webhooks(self, trigger_types, project, provider_name, service_endpoint_id=None, repository=None): + """RestoreWebhooks. + [Preview API] Recreates the webhooks for the specified triggers in the given source code repository. + :param [DefinitionTriggerType] trigger_types: The types of triggers to restore webhooks for. + :param str project: Project ID or project name + :param str provider_name: The name of the source provider. + :param str service_endpoint_id: If specified, the ID of the service endpoint to query. Can only be omitted for providers that do not use service endpoints, e.g. TFVC or TFGit. + :param str repository: If specified, the vendor-specific identifier or the name of the repository to get webhooks. Can only be omitted for providers that do not support multiple repositories. + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if provider_name is not None: + route_values['providerName'] = self._serialize.url('provider_name', provider_name, 'str') + query_parameters = {} + if service_endpoint_id is not None: + query_parameters['serviceEndpointId'] = self._serialize.query('service_endpoint_id', service_endpoint_id, 'str') + if repository is not None: + query_parameters['repository'] = self._serialize.query('repository', repository, 'str') + content = self._serialize.body(trigger_types, '[DefinitionTriggerType]') + self._send(http_method='POST', + location_id='793bceb8-9736-4030-bd2f-fb3ce6d6b478', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters, + content=content) + + def list_webhooks(self, project, provider_name, service_endpoint_id=None, repository=None): + """ListWebhooks. + [Preview API] Gets a list of webhooks installed in the given source code repository. + :param str project: Project ID or project name + :param str provider_name: The name of the source provider. + :param str service_endpoint_id: If specified, the ID of the service endpoint to query. Can only be omitted for providers that do not use service endpoints, e.g. TFVC or TFGit. + :param str repository: If specified, the vendor-specific identifier or the name of the repository to get webhooks. Can only be omitted for providers that do not support multiple repositories. + :rtype: [RepositoryWebhook] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if provider_name is not None: + route_values['providerName'] = self._serialize.url('provider_name', provider_name, 'str') + query_parameters = {} + if service_endpoint_id is not None: + query_parameters['serviceEndpointId'] = self._serialize.query('service_endpoint_id', service_endpoint_id, 'str') + if repository is not None: + query_parameters['repository'] = self._serialize.query('repository', repository, 'str') + response = self._send(http_method='GET', + location_id='8f20ff82-9498-4812-9f6e-9c01bdc50e99', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[RepositoryWebhook]', self._unwrap_collection(response)) + + def get_build_work_items_refs(self, project, build_id, top=None): + """GetBuildWorkItemsRefs. + [Preview API] Gets the work items associated with a build. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param int top: The maximum number of work items to return. + :rtype: [ResourceRef] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + query_parameters = {} + if top is not None: + query_parameters['$top'] = self._serialize.query('top', top, 'int') + response = self._send(http_method='GET', + location_id='5a21f5d2-5642-47e4-a0bd-1356e6731bee', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[ResourceRef]', self._unwrap_collection(response)) + + def get_build_work_items_refs_from_commits(self, commit_ids, project, build_id, top=None): + """GetBuildWorkItemsRefsFromCommits. + [Preview API] Gets the work items associated with a build, filtered to specific commits. + :param [str] commit_ids: A comma-delimited list of commit IDs. + :param str project: Project ID or project name + :param int build_id: The ID of the build. + :param int top: The maximum number of work items to return, or the number of commits to consider if no commit IDs are specified. + :rtype: [ResourceRef] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + if build_id is not None: + route_values['buildId'] = self._serialize.url('build_id', build_id, 'int') + query_parameters = {} + if top is not None: + query_parameters['$top'] = self._serialize.query('top', top, 'int') + content = self._serialize.body(commit_ids, '[str]') + response = self._send(http_method='POST', + location_id='5a21f5d2-5642-47e4-a0bd-1356e6731bee', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters, + content=content) + return self._deserialize('[ResourceRef]', self._unwrap_collection(response)) + + def get_work_items_between_builds(self, project, from_build_id, to_build_id, top=None): + """GetWorkItemsBetweenBuilds. + [Preview API] Gets all the work items between two builds. + :param str project: Project ID or project name + :param int from_build_id: The ID of the first build. + :param int to_build_id: The ID of the last build. + :param int top: The maximum number of work items to return. + :rtype: [ResourceRef] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if from_build_id is not None: + query_parameters['fromBuildId'] = self._serialize.query('from_build_id', from_build_id, 'int') + if to_build_id is not None: + query_parameters['toBuildId'] = self._serialize.query('to_build_id', to_build_id, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query('top', top, 'int') + response = self._send(http_method='GET', + location_id='52ba8915-5518-42e3-a4bb-b0182d159e2d', + version='6.0-preview.2', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[ResourceRef]', self._unwrap_collection(response)) + diff --git a/azure-devops/azext_devops/devops_sdk/v6_0/build/models.py b/azure-devops/azext_devops/devops_sdk/v6_0/build/models.py new file mode 100644 index 00000000..33cd2852 --- /dev/null +++ b/azure-devops/azext_devops/devops_sdk/v6_0/build/models.py @@ -0,0 +1,3449 @@ +# -------------------------------------------------------------------------------------------- +# 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 AgentPoolQueue(Model): + """ + Represents a queue for running builds. + + :param _links: + :type _links: :class:`ReferenceLinks ` + :param id: The ID of the queue. + :type id: int + :param name: The name of the queue. + :type name: str + :param pool: The pool used by this queue. + :type pool: :class:`TaskAgentPoolReference ` + :param url: The full http link to the resource. + :type url: str + """ + + _attribute_map = { + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'id': {'key': 'id', 'type': 'int'}, + 'name': {'key': 'name', 'type': 'str'}, + 'pool': {'key': 'pool', 'type': 'TaskAgentPoolReference'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, _links=None, id=None, name=None, pool=None, url=None): + super(AgentPoolQueue, self).__init__() + self._links = _links + self.id = id + self.name = name + self.pool = pool + self.url = url + + +class AgentSpecification(Model): + """ + Specification of the agent defined by the pool provider. + + :param identifier: Agent specification unique identifier. + :type identifier: str + """ + + _attribute_map = { + 'identifier': {'key': 'identifier', 'type': 'str'} + } + + def __init__(self, identifier=None): + super(AgentSpecification, self).__init__() + self.identifier = identifier + + +class AggregatedResultsAnalysis(Model): + """ + :param duration: + :type duration: object + :param not_reported_results_by_outcome: + :type not_reported_results_by_outcome: dict + :param previous_context: + :type previous_context: :class:`TestResultsContext ` + :param results_by_outcome: + :type results_by_outcome: dict + :param results_difference: + :type results_difference: :class:`AggregatedResultsDifference ` + :param run_summary_by_outcome: + :type run_summary_by_outcome: dict + :param run_summary_by_state: + :type run_summary_by_state: dict + :param total_tests: + :type total_tests: int + """ + + _attribute_map = { + 'duration': {'key': 'duration', 'type': 'object'}, + 'not_reported_results_by_outcome': {'key': 'notReportedResultsByOutcome', 'type': '{AggregatedResultsByOutcome}'}, + 'previous_context': {'key': 'previousContext', 'type': 'TestResultsContext'}, + 'results_by_outcome': {'key': 'resultsByOutcome', 'type': '{AggregatedResultsByOutcome}'}, + 'results_difference': {'key': 'resultsDifference', 'type': 'AggregatedResultsDifference'}, + 'run_summary_by_outcome': {'key': 'runSummaryByOutcome', 'type': '{AggregatedRunsByOutcome}'}, + 'run_summary_by_state': {'key': 'runSummaryByState', 'type': '{AggregatedRunsByState}'}, + 'total_tests': {'key': 'totalTests', 'type': 'int'} + } + + def __init__(self, duration=None, not_reported_results_by_outcome=None, previous_context=None, results_by_outcome=None, results_difference=None, run_summary_by_outcome=None, run_summary_by_state=None, total_tests=None): + super(AggregatedResultsAnalysis, self).__init__() + self.duration = duration + self.not_reported_results_by_outcome = not_reported_results_by_outcome + self.previous_context = previous_context + self.results_by_outcome = results_by_outcome + self.results_difference = results_difference + self.run_summary_by_outcome = run_summary_by_outcome + self.run_summary_by_state = run_summary_by_state + self.total_tests = total_tests + + +class AggregatedResultsByOutcome(Model): + """ + :param count: + :type count: int + :param duration: + :type duration: object + :param group_by_field: + :type group_by_field: str + :param group_by_value: + :type group_by_value: object + :param outcome: + :type outcome: object + :param rerun_result_count: + :type rerun_result_count: int + """ + + _attribute_map = { + 'count': {'key': 'count', 'type': 'int'}, + 'duration': {'key': 'duration', 'type': 'object'}, + 'group_by_field': {'key': 'groupByField', 'type': 'str'}, + 'group_by_value': {'key': 'groupByValue', 'type': 'object'}, + 'outcome': {'key': 'outcome', 'type': 'object'}, + 'rerun_result_count': {'key': 'rerunResultCount', 'type': 'int'} + } + + def __init__(self, count=None, duration=None, group_by_field=None, group_by_value=None, outcome=None, rerun_result_count=None): + super(AggregatedResultsByOutcome, self).__init__() + self.count = count + self.duration = duration + self.group_by_field = group_by_field + self.group_by_value = group_by_value + self.outcome = outcome + self.rerun_result_count = rerun_result_count + + +class AggregatedResultsDifference(Model): + """ + :param increase_in_duration: + :type increase_in_duration: object + :param increase_in_failures: + :type increase_in_failures: int + :param increase_in_non_impacted_tests: + :type increase_in_non_impacted_tests: int + :param increase_in_other_tests: + :type increase_in_other_tests: int + :param increase_in_passed_tests: + :type increase_in_passed_tests: int + :param increase_in_total_tests: + :type increase_in_total_tests: int + """ + + _attribute_map = { + 'increase_in_duration': {'key': 'increaseInDuration', 'type': 'object'}, + 'increase_in_failures': {'key': 'increaseInFailures', 'type': 'int'}, + 'increase_in_non_impacted_tests': {'key': 'increaseInNonImpactedTests', 'type': 'int'}, + 'increase_in_other_tests': {'key': 'increaseInOtherTests', 'type': 'int'}, + 'increase_in_passed_tests': {'key': 'increaseInPassedTests', 'type': 'int'}, + 'increase_in_total_tests': {'key': 'increaseInTotalTests', 'type': 'int'} + } + + def __init__(self, increase_in_duration=None, increase_in_failures=None, increase_in_non_impacted_tests=None, increase_in_other_tests=None, increase_in_passed_tests=None, increase_in_total_tests=None): + super(AggregatedResultsDifference, self).__init__() + self.increase_in_duration = increase_in_duration + self.increase_in_failures = increase_in_failures + self.increase_in_non_impacted_tests = increase_in_non_impacted_tests + self.increase_in_other_tests = increase_in_other_tests + self.increase_in_passed_tests = increase_in_passed_tests + self.increase_in_total_tests = increase_in_total_tests + + +class AggregatedRunsByOutcome(Model): + """ + :param outcome: + :type outcome: object + :param runs_count: + :type runs_count: int + """ + + _attribute_map = { + 'outcome': {'key': 'outcome', 'type': 'object'}, + 'runs_count': {'key': 'runsCount', 'type': 'int'} + } + + def __init__(self, outcome=None, runs_count=None): + super(AggregatedRunsByOutcome, self).__init__() + self.outcome = outcome + self.runs_count = runs_count + + +class AggregatedRunsByState(Model): + """ + :param results_by_outcome: + :type results_by_outcome: dict + :param runs_count: + :type runs_count: int + :param state: + :type state: object + """ + + _attribute_map = { + 'results_by_outcome': {'key': 'resultsByOutcome', 'type': '{AggregatedResultsByOutcome}'}, + 'runs_count': {'key': 'runsCount', 'type': 'int'}, + 'state': {'key': 'state', 'type': 'object'} + } + + def __init__(self, results_by_outcome=None, runs_count=None, state=None): + super(AggregatedRunsByState, self).__init__() + self.results_by_outcome = results_by_outcome + self.runs_count = runs_count + self.state = state + + +class ArtifactResource(Model): + """ + :param _links: + :type _links: :class:`ReferenceLinks ` + :param data: Type-specific data about the artifact. + :type data: str + :param download_url: A link to download the resource. + :type download_url: str + :param properties: Type-specific properties of the artifact. + :type properties: dict + :param type: The type of the resource: File container, version control folder, UNC path, etc. + :type type: str + :param url: The full http link to the resource. + :type url: str + """ + + _attribute_map = { + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'data': {'key': 'data', 'type': 'str'}, + 'download_url': {'key': 'downloadUrl', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': '{str}'}, + 'type': {'key': 'type', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, _links=None, data=None, download_url=None, properties=None, type=None, url=None): + super(ArtifactResource, self).__init__() + self._links = _links + self.data = data + self.download_url = download_url + self.properties = properties + self.type = type + self.url = url + + +class AssociatedWorkItem(Model): + """ + :param assigned_to: + :type assigned_to: str + :param id: Id of associated the work item. + :type id: int + :param state: + :type state: str + :param title: + :type title: str + :param url: REST Url of the work item. + :type url: str + :param web_url: + :type web_url: str + :param work_item_type: + :type work_item_type: str + """ + + _attribute_map = { + 'assigned_to': {'key': 'assignedTo', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'int'}, + 'state': {'key': 'state', 'type': 'str'}, + 'title': {'key': 'title', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'}, + 'web_url': {'key': 'webUrl', 'type': 'str'}, + 'work_item_type': {'key': 'workItemType', 'type': 'str'} + } + + def __init__(self, assigned_to=None, id=None, state=None, title=None, url=None, web_url=None, work_item_type=None): + super(AssociatedWorkItem, self).__init__() + self.assigned_to = assigned_to + self.id = id + self.state = state + self.title = title + self.url = url + self.web_url = web_url + self.work_item_type = work_item_type + + +class Attachment(Model): + """ + Represents an attachment to a build. + + :param _links: + :type _links: :class:`ReferenceLinks ` + :param name: The name of the attachment. + :type name: str + """ + + _attribute_map = { + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'name': {'key': 'name', 'type': 'str'} + } + + def __init__(self, _links=None, name=None): + super(Attachment, self).__init__() + self._links = _links + self.name = name + + +class AuthorizationHeader(Model): + """ + :param name: + :type name: str + :param value: + :type value: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'value': {'key': 'value', 'type': 'str'} + } + + def __init__(self, name=None, value=None): + super(AuthorizationHeader, self).__init__() + self.name = name + self.value = value + + +class Build(Model): + """ + Data representation of a build. + + :param _links: + :type _links: :class:`ReferenceLinks ` + :param agent_specification: The agent specification for the build. + :type agent_specification: :class:`AgentSpecification ` + :param build_number: The build number/name of the build. + :type build_number: str + :param build_number_revision: The build number revision. + :type build_number_revision: int + :param controller: The build controller. This is only set if the definition type is Xaml. + :type controller: :class:`BuildController ` + :param definition: The definition associated with the build. + :type definition: :class:`DefinitionReference ` + :param deleted: Indicates whether the build has been deleted. + :type deleted: bool + :param deleted_by: The identity of the process or person that deleted the build. + :type deleted_by: :class:`IdentityRef ` + :param deleted_date: The date the build was deleted. + :type deleted_date: datetime + :param deleted_reason: The description of how the build was deleted. + :type deleted_reason: str + :param demands: A list of demands that represents the agent capabilities required by this build. + :type demands: list of :class:`object ` + :param finish_time: The time that the build was completed. + :type finish_time: datetime + :param id: The ID of the build. + :type id: int + :param keep_forever: Indicates whether the build should be skipped by retention policies. + :type keep_forever: bool + :param last_changed_by: The identity representing the process or person that last changed the build. + :type last_changed_by: :class:`IdentityRef ` + :param last_changed_date: The date the build was last changed. + :type last_changed_date: datetime + :param logs: Information about the build logs. + :type logs: :class:`BuildLogReference ` + :param orchestration_plan: The orchestration plan for the build. + :type orchestration_plan: :class:`TaskOrchestrationPlanReference ` + :param parameters: The parameters for the build. + :type parameters: str + :param plans: Orchestration plans associated with the build (build, cleanup) + :type plans: list of :class:`TaskOrchestrationPlanReference ` + :param priority: The build's priority. + :type priority: object + :param project: The team project. + :type project: :class:`TeamProjectReference ` + :param properties: + :type properties: :class:`object ` + :param quality: The quality of the xaml build (good, bad, etc.) + :type quality: str + :param queue: The queue. This is only set if the definition type is Build. + :type queue: :class:`AgentPoolQueue ` + :param queue_options: Additional options for queueing the build. + :type queue_options: object + :param queue_position: The current position of the build in the queue. + :type queue_position: int + :param queue_time: The time that the build was queued. + :type queue_time: datetime + :param reason: The reason that the build was created. + :type reason: object + :param repository: The repository. + :type repository: :class:`BuildRepository ` + :param requested_by: The identity that queued the build. + :type requested_by: :class:`IdentityRef ` + :param requested_for: The identity on whose behalf the build was queued. + :type requested_for: :class:`IdentityRef ` + :param result: The build result. + :type result: object + :param retained_by_release: Indicates whether the build is retained by a release. + :type retained_by_release: bool + :param source_branch: The source branch. + :type source_branch: str + :param source_version: The source version. + :type source_version: str + :param start_time: The time that the build was started. + :type start_time: datetime + :param status: The status of the build. + :type status: object + :param tags: + :type tags: list of str + :param triggered_by_build: The build that triggered this build via a Build completion trigger. + :type triggered_by_build: :class:`Build ` + :param trigger_info: Sourceprovider-specific information about what triggered the build + :type trigger_info: dict + :param uri: The URI of the build. + :type uri: str + :param url: The REST URL of the build. + :type url: str + :param validation_results: + :type validation_results: list of :class:`BuildRequestValidationResult ` + """ + + _attribute_map = { + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'agent_specification': {'key': 'agentSpecification', 'type': 'AgentSpecification'}, + 'build_number': {'key': 'buildNumber', 'type': 'str'}, + 'build_number_revision': {'key': 'buildNumberRevision', 'type': 'int'}, + 'controller': {'key': 'controller', 'type': 'BuildController'}, + 'definition': {'key': 'definition', 'type': 'DefinitionReference'}, + 'deleted': {'key': 'deleted', 'type': 'bool'}, + 'deleted_by': {'key': 'deletedBy', 'type': 'IdentityRef'}, + 'deleted_date': {'key': 'deletedDate', 'type': 'iso-8601'}, + 'deleted_reason': {'key': 'deletedReason', 'type': 'str'}, + 'demands': {'key': 'demands', 'type': '[object]'}, + 'finish_time': {'key': 'finishTime', 'type': 'iso-8601'}, + 'id': {'key': 'id', 'type': 'int'}, + 'keep_forever': {'key': 'keepForever', 'type': 'bool'}, + 'last_changed_by': {'key': 'lastChangedBy', 'type': 'IdentityRef'}, + 'last_changed_date': {'key': 'lastChangedDate', 'type': 'iso-8601'}, + 'logs': {'key': 'logs', 'type': 'BuildLogReference'}, + 'orchestration_plan': {'key': 'orchestrationPlan', 'type': 'TaskOrchestrationPlanReference'}, + 'parameters': {'key': 'parameters', 'type': 'str'}, + 'plans': {'key': 'plans', 'type': '[TaskOrchestrationPlanReference]'}, + 'priority': {'key': 'priority', 'type': 'object'}, + 'project': {'key': 'project', 'type': 'TeamProjectReference'}, + 'properties': {'key': 'properties', 'type': 'object'}, + 'quality': {'key': 'quality', 'type': 'str'}, + 'queue': {'key': 'queue', 'type': 'AgentPoolQueue'}, + 'queue_options': {'key': 'queueOptions', 'type': 'object'}, + 'queue_position': {'key': 'queuePosition', 'type': 'int'}, + 'queue_time': {'key': 'queueTime', 'type': 'iso-8601'}, + 'reason': {'key': 'reason', 'type': 'object'}, + 'repository': {'key': 'repository', 'type': 'BuildRepository'}, + 'requested_by': {'key': 'requestedBy', 'type': 'IdentityRef'}, + 'requested_for': {'key': 'requestedFor', 'type': 'IdentityRef'}, + 'result': {'key': 'result', 'type': 'object'}, + 'retained_by_release': {'key': 'retainedByRelease', 'type': 'bool'}, + 'source_branch': {'key': 'sourceBranch', 'type': 'str'}, + 'source_version': {'key': 'sourceVersion', 'type': 'str'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'status': {'key': 'status', 'type': 'object'}, + 'tags': {'key': 'tags', 'type': '[str]'}, + 'triggered_by_build': {'key': 'triggeredByBuild', 'type': 'Build'}, + 'trigger_info': {'key': 'triggerInfo', 'type': '{str}'}, + 'uri': {'key': 'uri', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'}, + 'validation_results': {'key': 'validationResults', 'type': '[BuildRequestValidationResult]'} + } + + def __init__(self, _links=None, agent_specification=None, build_number=None, build_number_revision=None, controller=None, definition=None, deleted=None, deleted_by=None, deleted_date=None, deleted_reason=None, demands=None, finish_time=None, id=None, keep_forever=None, last_changed_by=None, last_changed_date=None, logs=None, orchestration_plan=None, parameters=None, plans=None, priority=None, project=None, properties=None, quality=None, queue=None, queue_options=None, queue_position=None, queue_time=None, reason=None, repository=None, requested_by=None, requested_for=None, result=None, retained_by_release=None, source_branch=None, source_version=None, start_time=None, status=None, tags=None, triggered_by_build=None, trigger_info=None, uri=None, url=None, validation_results=None): + super(Build, self).__init__() + self._links = _links + self.agent_specification = agent_specification + self.build_number = build_number + self.build_number_revision = build_number_revision + self.controller = controller + self.definition = definition + self.deleted = deleted + self.deleted_by = deleted_by + self.deleted_date = deleted_date + self.deleted_reason = deleted_reason + self.demands = demands + self.finish_time = finish_time + self.id = id + self.keep_forever = keep_forever + self.last_changed_by = last_changed_by + self.last_changed_date = last_changed_date + self.logs = logs + self.orchestration_plan = orchestration_plan + self.parameters = parameters + self.plans = plans + self.priority = priority + self.project = project + self.properties = properties + self.quality = quality + self.queue = queue + self.queue_options = queue_options + self.queue_position = queue_position + self.queue_time = queue_time + self.reason = reason + self.repository = repository + self.requested_by = requested_by + self.requested_for = requested_for + self.result = result + self.retained_by_release = retained_by_release + self.source_branch = source_branch + self.source_version = source_version + self.start_time = start_time + self.status = status + self.tags = tags + self.triggered_by_build = triggered_by_build + self.trigger_info = trigger_info + self.uri = uri + self.url = url + self.validation_results = validation_results + + +class BuildArtifact(Model): + """ + Represents an artifact produced by a build. + + :param id: The artifact ID. + :type id: int + :param name: The name of the artifact. + :type name: str + :param resource: The actual resource. + :type resource: :class:`ArtifactResource ` + :param source: The artifact source, which will be the ID of the job that produced this artifact. If an artifact is associated with multiple sources, this points to the first source. + :type source: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'int'}, + 'name': {'key': 'name', 'type': 'str'}, + 'resource': {'key': 'resource', 'type': 'ArtifactResource'}, + 'source': {'key': 'source', 'type': 'str'} + } + + def __init__(self, id=None, name=None, resource=None, source=None): + super(BuildArtifact, self).__init__() + self.id = id + self.name = name + self.resource = resource + self.source = source + + +class BuildBadge(Model): + """ + Represents a build badge. + + :param build_id: The ID of the build represented by this badge. + :type build_id: int + :param image_url: A link to the SVG resource. + :type image_url: str + """ + + _attribute_map = { + 'build_id': {'key': 'buildId', 'type': 'int'}, + 'image_url': {'key': 'imageUrl', 'type': 'str'} + } + + def __init__(self, build_id=None, image_url=None): + super(BuildBadge, self).__init__() + self.build_id = build_id + self.image_url = image_url + + +class BuildDefinitionRevision(Model): + """ + Represents a revision of a build definition. + + :param changed_by: The identity of the person or process that changed the definition. + :type changed_by: :class:`IdentityRef ` + :param changed_date: The date and time that the definition was changed. + :type changed_date: datetime + :param change_type: The change type (add, edit, delete). + :type change_type: object + :param comment: The comment associated with the change. + :type comment: str + :param definition_url: A link to the definition at this revision. + :type definition_url: str + :param name: The name of the definition. + :type name: str + :param revision: The revision number. + :type revision: int + """ + + _attribute_map = { + 'changed_by': {'key': 'changedBy', 'type': 'IdentityRef'}, + 'changed_date': {'key': 'changedDate', 'type': 'iso-8601'}, + 'change_type': {'key': 'changeType', 'type': 'object'}, + 'comment': {'key': 'comment', 'type': 'str'}, + 'definition_url': {'key': 'definitionUrl', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'revision': {'key': 'revision', 'type': 'int'} + } + + def __init__(self, changed_by=None, changed_date=None, change_type=None, comment=None, definition_url=None, name=None, revision=None): + super(BuildDefinitionRevision, self).__init__() + self.changed_by = changed_by + self.changed_date = changed_date + self.change_type = change_type + self.comment = comment + self.definition_url = definition_url + self.name = name + self.revision = revision + + +class BuildDefinitionStep(Model): + """ + Represents a step in a build phase. + + :param always_run: Indicates whether this step should run even if a previous step fails. + :type always_run: bool + :param condition: A condition that determines whether this step should run. + :type condition: str + :param continue_on_error: Indicates whether the phase should continue even if this step fails. + :type continue_on_error: bool + :param display_name: The display name for this step. + :type display_name: str + :param enabled: Indicates whether the step is enabled. + :type enabled: bool + :param environment: + :type environment: dict + :param inputs: + :type inputs: dict + :param ref_name: The reference name for this step. + :type ref_name: str + :param task: The task associated with this step. + :type task: :class:`TaskDefinitionReference ` + :param timeout_in_minutes: The time, in minutes, that this step is allowed to run. + :type timeout_in_minutes: int + """ + + _attribute_map = { + 'always_run': {'key': 'alwaysRun', 'type': 'bool'}, + 'condition': {'key': 'condition', 'type': 'str'}, + 'continue_on_error': {'key': 'continueOnError', 'type': 'bool'}, + 'display_name': {'key': 'displayName', 'type': 'str'}, + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'environment': {'key': 'environment', 'type': '{str}'}, + 'inputs': {'key': 'inputs', 'type': '{str}'}, + 'ref_name': {'key': 'refName', 'type': 'str'}, + 'task': {'key': 'task', 'type': 'TaskDefinitionReference'}, + 'timeout_in_minutes': {'key': 'timeoutInMinutes', 'type': 'int'} + } + + def __init__(self, always_run=None, condition=None, continue_on_error=None, display_name=None, enabled=None, environment=None, inputs=None, ref_name=None, task=None, timeout_in_minutes=None): + super(BuildDefinitionStep, self).__init__() + self.always_run = always_run + self.condition = condition + self.continue_on_error = continue_on_error + self.display_name = display_name + self.enabled = enabled + self.environment = environment + self.inputs = inputs + self.ref_name = ref_name + self.task = task + self.timeout_in_minutes = timeout_in_minutes + + +class BuildDefinitionTemplate(Model): + """ + Represents a template from which new build definitions can be created. + + :param can_delete: Indicates whether the template can be deleted. + :type can_delete: bool + :param category: The template category. + :type category: str + :param default_hosted_queue: An optional hosted agent queue for the template to use by default. + :type default_hosted_queue: str + :param description: A description of the template. + :type description: str + :param icons: + :type icons: dict + :param icon_task_id: The ID of the task whose icon is used when showing this template in the UI. + :type icon_task_id: str + :param id: The ID of the template. + :type id: str + :param name: The name of the template. + :type name: str + :param template: The actual template. + :type template: :class:`BuildDefinition ` + """ + + _attribute_map = { + 'can_delete': {'key': 'canDelete', 'type': 'bool'}, + 'category': {'key': 'category', 'type': 'str'}, + 'default_hosted_queue': {'key': 'defaultHostedQueue', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'icons': {'key': 'icons', 'type': '{str}'}, + 'icon_task_id': {'key': 'iconTaskId', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'template': {'key': 'template', 'type': 'BuildDefinition'} + } + + def __init__(self, can_delete=None, category=None, default_hosted_queue=None, description=None, icons=None, icon_task_id=None, id=None, name=None, template=None): + super(BuildDefinitionTemplate, self).__init__() + self.can_delete = can_delete + self.category = category + self.default_hosted_queue = default_hosted_queue + self.description = description + self.icons = icons + self.icon_task_id = icon_task_id + self.id = id + self.name = name + self.template = template + + +class BuildDefinitionTemplate3_2(Model): + """ + For back-compat with extensions that use the old Steps format instead of Process and Phases + + :param can_delete: + :type can_delete: bool + :param category: + :type category: str + :param default_hosted_queue: + :type default_hosted_queue: str + :param description: + :type description: str + :param icons: + :type icons: dict + :param icon_task_id: + :type icon_task_id: str + :param id: + :type id: str + :param name: + :type name: str + :param template: + :type template: :class:`BuildDefinition3_2 ` + """ + + _attribute_map = { + 'can_delete': {'key': 'canDelete', 'type': 'bool'}, + 'category': {'key': 'category', 'type': 'str'}, + 'default_hosted_queue': {'key': 'defaultHostedQueue', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'icons': {'key': 'icons', 'type': '{str}'}, + 'icon_task_id': {'key': 'iconTaskId', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'template': {'key': 'template', 'type': 'BuildDefinition3_2'} + } + + def __init__(self, can_delete=None, category=None, default_hosted_queue=None, description=None, icons=None, icon_task_id=None, id=None, name=None, template=None): + super(BuildDefinitionTemplate3_2, self).__init__() + self.can_delete = can_delete + self.category = category + self.default_hosted_queue = default_hosted_queue + self.description = description + self.icons = icons + self.icon_task_id = icon_task_id + self.id = id + self.name = name + self.template = template + + +class BuildDefinitionVariable(Model): + """ + Represents a variable used by a build definition. + + :param allow_override: Indicates whether the value can be set at queue time. + :type allow_override: bool + :param is_secret: Indicates whether the variable's value is a secret. + :type is_secret: bool + :param value: The value of the variable. + :type value: str + """ + + _attribute_map = { + 'allow_override': {'key': 'allowOverride', 'type': 'bool'}, + 'is_secret': {'key': 'isSecret', 'type': 'bool'}, + 'value': {'key': 'value', 'type': 'str'} + } + + def __init__(self, allow_override=None, is_secret=None, value=None): + super(BuildDefinitionVariable, self).__init__() + self.allow_override = allow_override + self.is_secret = is_secret + self.value = value + + +class BuildLogReference(Model): + """ + Represents a reference to a build log. + + :param id: The ID of the log. + :type id: int + :param type: The type of the log location. + :type type: str + :param url: A full link to the log resource. + :type url: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'int'}, + 'type': {'key': 'type', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, id=None, type=None, url=None): + super(BuildLogReference, self).__init__() + self.id = id + self.type = type + self.url = url + + +class BuildMetric(Model): + """ + Represents metadata about builds in the system. + + :param date: The date for the scope. + :type date: datetime + :param int_value: The value. + :type int_value: int + :param name: The name of the metric. + :type name: str + :param scope: The scope. + :type scope: str + """ + + _attribute_map = { + 'date': {'key': 'date', 'type': 'iso-8601'}, + 'int_value': {'key': 'intValue', 'type': 'int'}, + 'name': {'key': 'name', 'type': 'str'}, + 'scope': {'key': 'scope', 'type': 'str'} + } + + def __init__(self, date=None, int_value=None, name=None, scope=None): + super(BuildMetric, self).__init__() + self.date = date + self.int_value = int_value + self.name = name + self.scope = scope + + +class BuildOption(Model): + """ + Represents the application of an optional behavior to a build definition. + + :param definition: A reference to the build option. + :type definition: :class:`BuildOptionDefinitionReference ` + :param enabled: Indicates whether the behavior is enabled. + :type enabled: bool + :param inputs: + :type inputs: dict + """ + + _attribute_map = { + 'definition': {'key': 'definition', 'type': 'BuildOptionDefinitionReference'}, + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'inputs': {'key': 'inputs', 'type': '{str}'} + } + + def __init__(self, definition=None, enabled=None, inputs=None): + super(BuildOption, self).__init__() + self.definition = definition + self.enabled = enabled + self.inputs = inputs + + +class BuildOptionDefinitionReference(Model): + """ + Represents a reference to a build option definition. + + :param id: The ID of the referenced build option. + :type id: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'} + } + + def __init__(self, id=None): + super(BuildOptionDefinitionReference, self).__init__() + self.id = id + + +class BuildOptionGroupDefinition(Model): + """ + Represents a group of inputs for a build option. + + :param display_name: The name of the group to display in the UI. + :type display_name: str + :param is_expanded: Indicates whether the group is initially displayed as expanded in the UI. + :type is_expanded: bool + :param name: The internal name of the group. + :type name: str + """ + + _attribute_map = { + 'display_name': {'key': 'displayName', 'type': 'str'}, + 'is_expanded': {'key': 'isExpanded', 'type': 'bool'}, + 'name': {'key': 'name', 'type': 'str'} + } + + def __init__(self, display_name=None, is_expanded=None, name=None): + super(BuildOptionGroupDefinition, self).__init__() + self.display_name = display_name + self.is_expanded = is_expanded + self.name = name + + +class BuildOptionInputDefinition(Model): + """ + Represents an input for a build option. + + :param default_value: The default value. + :type default_value: str + :param group_name: The name of the input group that this input belongs to. + :type group_name: str + :param help: + :type help: dict + :param label: The label for the input. + :type label: str + :param name: The name of the input. + :type name: str + :param options: + :type options: dict + :param required: Indicates whether the input is required to have a value. + :type required: bool + :param type: Indicates the type of the input value. + :type type: object + :param visible_rule: The rule that is applied to determine whether the input is visible in the UI. + :type visible_rule: str + """ + + _attribute_map = { + 'default_value': {'key': 'defaultValue', 'type': 'str'}, + 'group_name': {'key': 'groupName', 'type': 'str'}, + 'help': {'key': 'help', 'type': '{str}'}, + 'label': {'key': 'label', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'options': {'key': 'options', 'type': '{str}'}, + 'required': {'key': 'required', 'type': 'bool'}, + 'type': {'key': 'type', 'type': 'object'}, + 'visible_rule': {'key': 'visibleRule', 'type': 'str'} + } + + def __init__(self, default_value=None, group_name=None, help=None, label=None, name=None, options=None, required=None, type=None, visible_rule=None): + super(BuildOptionInputDefinition, self).__init__() + self.default_value = default_value + self.group_name = group_name + self.help = help + self.label = label + self.name = name + self.options = options + self.required = required + self.type = type + self.visible_rule = visible_rule + + +class BuildReportMetadata(Model): + """ + Represents information about a build report. + + :param build_id: The Id of the build. + :type build_id: int + :param content: The content of the report. + :type content: str + :param type: The type of the report. + :type type: str + """ + + _attribute_map = { + 'build_id': {'key': 'buildId', 'type': 'int'}, + 'content': {'key': 'content', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'} + } + + def __init__(self, build_id=None, content=None, type=None): + super(BuildReportMetadata, self).__init__() + self.build_id = build_id + self.content = content + self.type = type + + +class BuildRepository(Model): + """ + Represents a repository used by a build definition. + + :param checkout_submodules: Indicates whether to checkout submodules. + :type checkout_submodules: bool + :param clean: Indicates whether to clean the target folder when getting code from the repository. + :type clean: str + :param default_branch: The name of the default branch. + :type default_branch: str + :param id: The ID of the repository. + :type id: str + :param name: The friendly name of the repository. + :type name: str + :param properties: + :type properties: dict + :param root_folder: The root folder. + :type root_folder: str + :param type: The type of the repository. + :type type: str + :param url: The URL of the repository. + :type url: str + """ + + _attribute_map = { + 'checkout_submodules': {'key': 'checkoutSubmodules', 'type': 'bool'}, + 'clean': {'key': 'clean', 'type': 'str'}, + 'default_branch': {'key': 'defaultBranch', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': '{str}'}, + 'root_folder': {'key': 'rootFolder', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, checkout_submodules=None, clean=None, default_branch=None, id=None, name=None, properties=None, root_folder=None, type=None, url=None): + super(BuildRepository, self).__init__() + self.checkout_submodules = checkout_submodules + self.clean = clean + self.default_branch = default_branch + self.id = id + self.name = name + self.properties = properties + self.root_folder = root_folder + self.type = type + self.url = url + + +class BuildRequestValidationResult(Model): + """ + Represents the result of validating a build request. + + :param message: The message associated with the result. + :type message: str + :param result: The result. + :type result: object + """ + + _attribute_map = { + 'message': {'key': 'message', 'type': 'str'}, + 'result': {'key': 'result', 'type': 'object'} + } + + def __init__(self, message=None, result=None): + super(BuildRequestValidationResult, self).__init__() + self.message = message + self.result = result + + +class BuildResourceUsage(Model): + """ + Represents information about resources used by builds in the system. + + :param distributed_task_agents: The number of build agents. + :type distributed_task_agents: int + :param paid_private_agent_slots: The number of paid private agent slots. + :type paid_private_agent_slots: int + :param total_usage: The total usage. + :type total_usage: int + :param xaml_controllers: The number of XAML controllers. + :type xaml_controllers: int + """ + + _attribute_map = { + 'distributed_task_agents': {'key': 'distributedTaskAgents', 'type': 'int'}, + 'paid_private_agent_slots': {'key': 'paidPrivateAgentSlots', 'type': 'int'}, + 'total_usage': {'key': 'totalUsage', 'type': 'int'}, + 'xaml_controllers': {'key': 'xamlControllers', 'type': 'int'} + } + + def __init__(self, distributed_task_agents=None, paid_private_agent_slots=None, total_usage=None, xaml_controllers=None): + super(BuildResourceUsage, self).__init__() + self.distributed_task_agents = distributed_task_agents + self.paid_private_agent_slots = paid_private_agent_slots + self.total_usage = total_usage + self.xaml_controllers = xaml_controllers + + +class BuildSettings(Model): + """ + Represents system-wide build settings. + + :param days_to_keep_deleted_builds_before_destroy: The number of days to keep records of deleted builds. + :type days_to_keep_deleted_builds_before_destroy: int + :param default_retention_policy: The default retention policy. + :type default_retention_policy: :class:`RetentionPolicy ` + :param maximum_retention_policy: The maximum retention policy. + :type maximum_retention_policy: :class:`RetentionPolicy ` + """ + + _attribute_map = { + 'days_to_keep_deleted_builds_before_destroy': {'key': 'daysToKeepDeletedBuildsBeforeDestroy', 'type': 'int'}, + 'default_retention_policy': {'key': 'defaultRetentionPolicy', 'type': 'RetentionPolicy'}, + 'maximum_retention_policy': {'key': 'maximumRetentionPolicy', 'type': 'RetentionPolicy'} + } + + def __init__(self, days_to_keep_deleted_builds_before_destroy=None, default_retention_policy=None, maximum_retention_policy=None): + super(BuildSettings, self).__init__() + self.days_to_keep_deleted_builds_before_destroy = days_to_keep_deleted_builds_before_destroy + self.default_retention_policy = default_retention_policy + self.maximum_retention_policy = maximum_retention_policy + + +class Change(Model): + """ + Represents a change associated with a build. + + :param author: The author of the change. + :type author: :class:`IdentityRef ` + :param display_uri: The location of a user-friendly representation of the resource. + :type display_uri: str + :param id: The identifier for the change. For a commit, this would be the SHA1. For a TFVC changeset, this would be the changeset ID. + :type id: str + :param location: The location of the full representation of the resource. + :type location: str + :param message: The description of the change. This might be a commit message or changeset description. + :type message: str + :param message_truncated: Indicates whether the message was truncated. + :type message_truncated: bool + :param pusher: The person or process that pushed the change. + :type pusher: str + :param timestamp: The timestamp for the change. + :type timestamp: datetime + :param type: The type of change. "commit", "changeset", etc. + :type type: str + """ + + _attribute_map = { + 'author': {'key': 'author', 'type': 'IdentityRef'}, + 'display_uri': {'key': 'displayUri', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'location': {'key': 'location', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + 'message_truncated': {'key': 'messageTruncated', 'type': 'bool'}, + 'pusher': {'key': 'pusher', 'type': 'str'}, + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'type': {'key': 'type', 'type': 'str'} + } + + def __init__(self, author=None, display_uri=None, id=None, location=None, message=None, message_truncated=None, pusher=None, timestamp=None, type=None): + super(Change, self).__init__() + self.author = author + self.display_uri = display_uri + self.id = id + self.location = location + self.message = message + self.message_truncated = message_truncated + self.pusher = pusher + self.timestamp = timestamp + self.type = type + + +class DataSourceBindingBase(Model): + """ + Represents binding of data source for the service endpoint request. + + :param callback_context_template: Pagination format supported by this data source(ContinuationToken/SkipTop). + :type callback_context_template: str + :param callback_required_template: Subsequent calls needed? + :type callback_required_template: str + :param data_source_name: Gets or sets the name of the data source. + :type data_source_name: str + :param endpoint_id: Gets or sets the endpoint Id. + :type endpoint_id: str + :param endpoint_url: Gets or sets the url of the service endpoint. + :type endpoint_url: str + :param headers: Gets or sets the authorization headers. + :type headers: list of :class:`AuthorizationHeader ` + :param initial_context_template: Defines the initial value of the query params + :type initial_context_template: str + :param parameters: Gets or sets the parameters for the data source. + :type parameters: dict + :param request_content: Gets or sets http request body + :type request_content: str + :param request_verb: Gets or sets http request verb + :type request_verb: str + :param result_selector: Gets or sets the result selector. + :type result_selector: str + :param result_template: Gets or sets the result template. + :type result_template: str + :param target: Gets or sets the target of the data source. + :type target: str + """ + + _attribute_map = { + 'callback_context_template': {'key': 'callbackContextTemplate', 'type': 'str'}, + 'callback_required_template': {'key': 'callbackRequiredTemplate', 'type': 'str'}, + 'data_source_name': {'key': 'dataSourceName', 'type': 'str'}, + 'endpoint_id': {'key': 'endpointId', 'type': 'str'}, + 'endpoint_url': {'key': 'endpointUrl', 'type': 'str'}, + 'headers': {'key': 'headers', 'type': '[AuthorizationHeader]'}, + 'initial_context_template': {'key': 'initialContextTemplate', 'type': 'str'}, + 'parameters': {'key': 'parameters', 'type': '{str}'}, + 'request_content': {'key': 'requestContent', 'type': 'str'}, + 'request_verb': {'key': 'requestVerb', 'type': 'str'}, + 'result_selector': {'key': 'resultSelector', 'type': 'str'}, + 'result_template': {'key': 'resultTemplate', 'type': 'str'}, + 'target': {'key': 'target', 'type': 'str'} + } + + def __init__(self, callback_context_template=None, callback_required_template=None, data_source_name=None, endpoint_id=None, endpoint_url=None, headers=None, initial_context_template=None, parameters=None, request_content=None, request_verb=None, result_selector=None, result_template=None, target=None): + super(DataSourceBindingBase, self).__init__() + self.callback_context_template = callback_context_template + self.callback_required_template = callback_required_template + self.data_source_name = data_source_name + self.endpoint_id = endpoint_id + self.endpoint_url = endpoint_url + self.headers = headers + self.initial_context_template = initial_context_template + self.parameters = parameters + self.request_content = request_content + self.request_verb = request_verb + self.result_selector = result_selector + self.result_template = result_template + self.target = target + + +class DefinitionReference(Model): + """ + Represents a reference to a definition. + + :param created_date: The date this version of the definition was created. + :type created_date: datetime + :param id: The ID of the referenced definition. + :type id: int + :param name: The name of the referenced definition. + :type name: str + :param path: The folder path of the definition. + :type path: str + :param project: A reference to the project. + :type project: :class:`TeamProjectReference ` + :param queue_status: A value that indicates whether builds can be queued against this definition. + :type queue_status: object + :param revision: The definition revision number. + :type revision: int + :param type: The type of the definition. + :type type: object + :param uri: The definition's URI. + :type uri: str + :param url: The REST URL of the definition. + :type url: str + """ + + _attribute_map = { + 'created_date': {'key': 'createdDate', 'type': 'iso-8601'}, + 'id': {'key': 'id', 'type': 'int'}, + 'name': {'key': 'name', 'type': 'str'}, + 'path': {'key': 'path', 'type': 'str'}, + 'project': {'key': 'project', 'type': 'TeamProjectReference'}, + 'queue_status': {'key': 'queueStatus', 'type': 'object'}, + 'revision': {'key': 'revision', 'type': 'int'}, + 'type': {'key': 'type', 'type': 'object'}, + 'uri': {'key': 'uri', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, created_date=None, id=None, name=None, path=None, project=None, queue_status=None, revision=None, type=None, uri=None, url=None): + super(DefinitionReference, self).__init__() + self.created_date = created_date + self.id = id + self.name = name + self.path = path + self.project = project + self.queue_status = queue_status + self.revision = revision + self.type = type + self.uri = uri + self.url = url + + +class DefinitionResourceReference(Model): + """ + :param authorized: Indicates whether the resource is authorized for use. + :type authorized: bool + :param id: The id of the resource. + :type id: str + :param name: A friendly name for the resource. + :type name: str + :param type: The type of the resource. + :type type: str + """ + + _attribute_map = { + 'authorized': {'key': 'authorized', 'type': 'bool'}, + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'} + } + + def __init__(self, authorized=None, id=None, name=None, type=None): + super(DefinitionResourceReference, self).__init__() + self.authorized = authorized + self.id = id + self.name = name + self.type = type + + +class Deployment(Model): + """ + Represents the data from the build information nodes for type "DeploymentInformation" for xaml builds + + :param type: + :type type: str + """ + + _attribute_map = { + 'type': {'key': 'type', 'type': 'str'} + } + + def __init__(self, type=None): + super(Deployment, self).__init__() + self.type = type + + +class Folder(Model): + """ + Represents a folder that contains build definitions. + + :param created_by: The process or person who created the folder. + :type created_by: :class:`IdentityRef ` + :param created_on: The date the folder was created. + :type created_on: datetime + :param description: The description. + :type description: str + :param last_changed_by: The process or person that last changed the folder. + :type last_changed_by: :class:`IdentityRef ` + :param last_changed_date: The date the folder was last changed. + :type last_changed_date: datetime + :param path: The full path. + :type path: str + :param project: The project. + :type project: :class:`TeamProjectReference ` + """ + + _attribute_map = { + 'created_by': {'key': 'createdBy', 'type': 'IdentityRef'}, + 'created_on': {'key': 'createdOn', 'type': 'iso-8601'}, + 'description': {'key': 'description', 'type': 'str'}, + 'last_changed_by': {'key': 'lastChangedBy', 'type': 'IdentityRef'}, + 'last_changed_date': {'key': 'lastChangedDate', 'type': 'iso-8601'}, + 'path': {'key': 'path', 'type': 'str'}, + 'project': {'key': 'project', 'type': 'TeamProjectReference'} + } + + def __init__(self, created_by=None, created_on=None, description=None, last_changed_by=None, last_changed_date=None, path=None, project=None): + super(Folder, self).__init__() + self.created_by = created_by + self.created_on = created_on + self.description = description + self.last_changed_by = last_changed_by + self.last_changed_date = last_changed_date + self.path = path + self.project = project + + +class GraphSubjectBase(Model): + """ + :param _links: This field contains zero or more interesting links about the graph subject. These links may be invoked to obtain additional relationships or more detailed information about this graph subject. + :type _links: :class:`ReferenceLinks ` + :param descriptor: The descriptor is the primary way to reference the graph subject while the system is running. This field will uniquely identify the same graph subject across both Accounts and Organizations. + :type descriptor: str + :param display_name: This is the non-unique display name of the graph subject. To change this field, you must alter its value in the source provider. + :type display_name: str + :param url: This url is the full route to the source resource of this graph subject. + :type url: str + """ + + _attribute_map = { + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'descriptor': {'key': 'descriptor', 'type': 'str'}, + 'display_name': {'key': 'displayName', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, _links=None, descriptor=None, display_name=None, url=None): + super(GraphSubjectBase, self).__init__() + self._links = _links + self.descriptor = descriptor + self.display_name = display_name + self.url = url + + +class IdentityRef(GraphSubjectBase): + """ + :param _links: This field contains zero or more interesting links about the graph subject. These links may be invoked to obtain additional relationships or more detailed information about this graph subject. + :type _links: :class:`ReferenceLinks ` + :param descriptor: The descriptor is the primary way to reference the graph subject while the system is running. This field will uniquely identify the same graph subject across both Accounts and Organizations. + :type descriptor: str + :param display_name: This is the non-unique display name of the graph subject. To change this field, you must alter its value in the source provider. + :type display_name: str + :param url: This url is the full route to the source resource of this graph subject. + :type url: str + :param directory_alias: Deprecated - Can be retrieved by querying the Graph user referenced in the "self" entry of the IdentityRef "_links" dictionary + :type directory_alias: str + :param id: + :type id: str + :param image_url: Deprecated - Available in the "avatar" entry of the IdentityRef "_links" dictionary + :type image_url: str + :param inactive: Deprecated - Can be retrieved by querying the Graph membership state referenced in the "membershipState" entry of the GraphUser "_links" dictionary + :type inactive: bool + :param is_aad_identity: Deprecated - Can be inferred from the subject type of the descriptor (Descriptor.IsAadUserType/Descriptor.IsAadGroupType) + :type is_aad_identity: bool + :param is_container: Deprecated - Can be inferred from the subject type of the descriptor (Descriptor.IsGroupType) + :type is_container: bool + :param is_deleted_in_origin: + :type is_deleted_in_origin: bool + :param profile_url: Deprecated - not in use in most preexisting implementations of ToIdentityRef + :type profile_url: str + :param unique_name: Deprecated - use Domain+PrincipalName instead + :type unique_name: str + """ + + _attribute_map = { + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'descriptor': {'key': 'descriptor', 'type': 'str'}, + 'display_name': {'key': 'displayName', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'}, + 'directory_alias': {'key': 'directoryAlias', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'image_url': {'key': 'imageUrl', 'type': 'str'}, + 'inactive': {'key': 'inactive', 'type': 'bool'}, + 'is_aad_identity': {'key': 'isAadIdentity', 'type': 'bool'}, + 'is_container': {'key': 'isContainer', 'type': 'bool'}, + 'is_deleted_in_origin': {'key': 'isDeletedInOrigin', 'type': 'bool'}, + 'profile_url': {'key': 'profileUrl', 'type': 'str'}, + 'unique_name': {'key': 'uniqueName', 'type': 'str'} + } + + def __init__(self, _links=None, descriptor=None, display_name=None, url=None, directory_alias=None, id=None, image_url=None, inactive=None, is_aad_identity=None, is_container=None, is_deleted_in_origin=None, profile_url=None, unique_name=None): + super(IdentityRef, self).__init__(_links=_links, descriptor=descriptor, display_name=display_name, url=url) + self.directory_alias = directory_alias + self.id = id + self.image_url = image_url + self.inactive = inactive + self.is_aad_identity = is_aad_identity + self.is_container = is_container + self.is_deleted_in_origin = is_deleted_in_origin + self.profile_url = profile_url + self.unique_name = unique_name + + +class Issue(Model): + """ + Represents an issue (error, warning) associated with a build. + + :param category: The category. + :type category: str + :param data: + :type data: dict + :param message: A description of the issue. + :type message: str + :param type: The type (error, warning) of the issue. + :type type: object + """ + + _attribute_map = { + 'category': {'key': 'category', 'type': 'str'}, + 'data': {'key': 'data', 'type': '{str}'}, + 'message': {'key': 'message', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'object'} + } + + def __init__(self, category=None, data=None, message=None, type=None): + super(Issue, self).__init__() + self.category = category + self.data = data + self.message = message + self.type = type + + +class JobReference(Model): + """ + Job in pipeline. This is related to matrixing in YAML. + + :param attempt: Attempt number of the job + :type attempt: int + :param job_name: Matrixing in YAML generates copies of a job with different inputs in matrix. JobName is the name of those input. Maximum supported length for name is 256 character. + :type job_name: str + """ + + _attribute_map = { + 'attempt': {'key': 'attempt', 'type': 'int'}, + 'job_name': {'key': 'jobName', 'type': 'str'} + } + + def __init__(self, attempt=None, job_name=None): + super(JobReference, self).__init__() + self.attempt = attempt + self.job_name = job_name + + +class JsonPatchOperation(Model): + """ + The JSON model for a JSON Patch operation + + :param from_: The path to copy from for the Move/Copy operation. + :type from_: str + :param op: The patch operation + :type op: object + :param path: The path for the operation. In the case of an array, a zero based index can be used to specify the position in the array (e.g. /biscuits/0/name). The "-" character can be used instead of an index to insert at the end of the array (e.g. /biscuits/-). + :type path: str + :param value: The value for the operation. This is either a primitive or a JToken. + :type value: object + """ + + _attribute_map = { + 'from_': {'key': 'from', 'type': 'str'}, + 'op': {'key': 'op', 'type': 'object'}, + 'path': {'key': 'path', 'type': 'str'}, + 'value': {'key': 'value', 'type': 'object'} + } + + def __init__(self, from_=None, op=None, path=None, value=None): + super(JsonPatchOperation, self).__init__() + self.from_ = from_ + self.op = op + self.path = path + self.value = value + + +class MinimalRetentionLease(Model): + """ + :param definition_id: The pipeline definition of the run. + :type definition_id: int + :param owner_id: User-provided string that identifies the owner of a retention lease. + :type owner_id: str + :param run_id: The pipeline run to protect. + :type run_id: int + """ + + _attribute_map = { + 'definition_id': {'key': 'definitionId', 'type': 'int'}, + 'owner_id': {'key': 'ownerId', 'type': 'str'}, + 'run_id': {'key': 'runId', 'type': 'int'} + } + + def __init__(self, definition_id=None, owner_id=None, run_id=None): + super(MinimalRetentionLease, self).__init__() + self.definition_id = definition_id + self.owner_id = owner_id + self.run_id = run_id + + +class NewRetentionLease(Model): + """ + :param days_valid: The number of days to consider the lease valid. + :type days_valid: int + :param definition_id: The pipeline definition of the run. + :type definition_id: int + :param owner_id: User-provided string that identifies the owner of a retention lease. + :type owner_id: str + :param protect_pipeline: If set, this lease will also prevent the pipeline from being deleted while the lease is still valid. + :type protect_pipeline: bool + :param run_id: The pipeline run to protect. + :type run_id: int + """ + + _attribute_map = { + 'days_valid': {'key': 'daysValid', 'type': 'int'}, + 'definition_id': {'key': 'definitionId', 'type': 'int'}, + 'owner_id': {'key': 'ownerId', 'type': 'str'}, + 'protect_pipeline': {'key': 'protectPipeline', 'type': 'bool'}, + 'run_id': {'key': 'runId', 'type': 'int'} + } + + def __init__(self, days_valid=None, definition_id=None, owner_id=None, protect_pipeline=None, run_id=None): + super(NewRetentionLease, self).__init__() + self.days_valid = days_valid + self.definition_id = definition_id + self.owner_id = owner_id + self.protect_pipeline = protect_pipeline + self.run_id = run_id + + +class PhaseReference(Model): + """ + Phase in pipeline + + :param attempt: Attempt number of the phase + :type attempt: int + :param phase_name: Name of the phase. Maximum supported length for name is 256 character. + :type phase_name: str + """ + + _attribute_map = { + 'attempt': {'key': 'attempt', 'type': 'int'}, + 'phase_name': {'key': 'phaseName', 'type': 'str'} + } + + def __init__(self, attempt=None, phase_name=None): + super(PhaseReference, self).__init__() + self.attempt = attempt + self.phase_name = phase_name + + +class PipelineGeneralSettings(Model): + """ + Contains pipeline general settings. + + :param enforce_job_auth_scope: If enabled, scope of access for all pipelines reduces to the current project. + :type enforce_job_auth_scope: bool + :param enforce_referenced_repo_scoped_token: Restricts the scope of access for all pipelines to only repositories explicitly referenced by the pipeline. + :type enforce_referenced_repo_scoped_token: bool + :param enforce_settable_var: If enabled, only those variables that are explicitly marked as "Settable at queue time" can be set at queue time. + :type enforce_settable_var: bool + :param publish_pipeline_metadata: Allows pipelines to record metadata. + :type publish_pipeline_metadata: bool + :param status_badges_are_private: Anonymous users can access the status badge API for all pipelines unless this option is enabled. + :type status_badges_are_private: bool + """ + + _attribute_map = { + 'enforce_job_auth_scope': {'key': 'enforceJobAuthScope', 'type': 'bool'}, + 'enforce_referenced_repo_scoped_token': {'key': 'enforceReferencedRepoScopedToken', 'type': 'bool'}, + 'enforce_settable_var': {'key': 'enforceSettableVar', 'type': 'bool'}, + 'publish_pipeline_metadata': {'key': 'publishPipelineMetadata', 'type': 'bool'}, + 'status_badges_are_private': {'key': 'statusBadgesArePrivate', 'type': 'bool'} + } + + def __init__(self, enforce_job_auth_scope=None, enforce_referenced_repo_scoped_token=None, enforce_settable_var=None, publish_pipeline_metadata=None, status_badges_are_private=None): + super(PipelineGeneralSettings, self).__init__() + self.enforce_job_auth_scope = enforce_job_auth_scope + self.enforce_referenced_repo_scoped_token = enforce_referenced_repo_scoped_token + self.enforce_settable_var = enforce_settable_var + self.publish_pipeline_metadata = publish_pipeline_metadata + self.status_badges_are_private = status_badges_are_private + + +class PipelineReference(Model): + """ + Pipeline reference + + :param job_reference: Reference of the job + :type job_reference: :class:`JobReference ` + :param phase_reference: Reference of the phase. + :type phase_reference: :class:`PhaseReference ` + :param pipeline_id: Reference of the pipeline with which this pipeline instance is related. + :type pipeline_id: int + :param stage_reference: Reference of the stage. + :type stage_reference: :class:`StageReference ` + """ + + _attribute_map = { + 'job_reference': {'key': 'jobReference', 'type': 'JobReference'}, + 'phase_reference': {'key': 'phaseReference', 'type': 'PhaseReference'}, + 'pipeline_id': {'key': 'pipelineId', 'type': 'int'}, + 'stage_reference': {'key': 'stageReference', 'type': 'StageReference'} + } + + def __init__(self, job_reference=None, phase_reference=None, pipeline_id=None, stage_reference=None): + super(PipelineReference, self).__init__() + self.job_reference = job_reference + self.phase_reference = phase_reference + self.pipeline_id = pipeline_id + self.stage_reference = stage_reference + + +class ProcessParameters(Model): + """ + :param data_source_bindings: + :type data_source_bindings: list of :class:`DataSourceBindingBase ` + :param inputs: + :type inputs: list of :class:`TaskInputDefinitionBase ` + :param source_definitions: + :type source_definitions: list of :class:`TaskSourceDefinitionBase ` + """ + + _attribute_map = { + 'data_source_bindings': {'key': 'dataSourceBindings', 'type': '[DataSourceBindingBase]'}, + 'inputs': {'key': 'inputs', 'type': '[TaskInputDefinitionBase]'}, + 'source_definitions': {'key': 'sourceDefinitions', 'type': '[TaskSourceDefinitionBase]'} + } + + def __init__(self, data_source_bindings=None, inputs=None, source_definitions=None): + super(ProcessParameters, self).__init__() + self.data_source_bindings = data_source_bindings + self.inputs = inputs + self.source_definitions = source_definitions + + +class ProjectRetentionSetting(Model): + """ + Contains the settings for the retention rules. + + :param purge_artifacts: The rules for artifact retention. Artifacts can not live longer than a run, so will be overridden by a shorter run purge setting. + :type purge_artifacts: :class:`RetentionSetting ` + :param purge_pull_request_runs: The rules for pull request pipeline run retention. + :type purge_pull_request_runs: :class:`RetentionSetting ` + :param purge_runs: The rules for pipeline run retention. + :type purge_runs: :class:`RetentionSetting ` + :param retain_runs_per_protected_branch: The rules for retaining runs per protected branch. + :type retain_runs_per_protected_branch: :class:`RetentionSetting ` + """ + + _attribute_map = { + 'purge_artifacts': {'key': 'purgeArtifacts', 'type': 'RetentionSetting'}, + 'purge_pull_request_runs': {'key': 'purgePullRequestRuns', 'type': 'RetentionSetting'}, + 'purge_runs': {'key': 'purgeRuns', 'type': 'RetentionSetting'}, + 'retain_runs_per_protected_branch': {'key': 'retainRunsPerProtectedBranch', 'type': 'RetentionSetting'} + } + + def __init__(self, purge_artifacts=None, purge_pull_request_runs=None, purge_runs=None, retain_runs_per_protected_branch=None): + super(ProjectRetentionSetting, self).__init__() + self.purge_artifacts = purge_artifacts + self.purge_pull_request_runs = purge_pull_request_runs + self.purge_runs = purge_runs + self.retain_runs_per_protected_branch = retain_runs_per_protected_branch + + +class PullRequest(Model): + """ + Represents a pull request object. These are retrieved from Source Providers. + + :param _links: The links to other objects related to this object. + :type _links: :class:`ReferenceLinks ` + :param author: Author of the pull request. + :type author: :class:`IdentityRef ` + :param current_state: Current state of the pull request, e.g. open, merged, closed, conflicts, etc. + :type current_state: str + :param description: Description for the pull request. + :type description: str + :param id: Unique identifier for the pull request + :type id: str + :param provider_name: The name of the provider this pull request is associated with. + :type provider_name: str + :param source_branch_ref: Source branch ref of this pull request + :type source_branch_ref: str + :param source_repository_owner: Owner of the source repository of this pull request + :type source_repository_owner: str + :param target_branch_ref: Target branch ref of this pull request + :type target_branch_ref: str + :param target_repository_owner: Owner of the target repository of this pull request + :type target_repository_owner: str + :param title: Title of the pull request. + :type title: str + """ + + _attribute_map = { + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'author': {'key': 'author', 'type': 'IdentityRef'}, + 'current_state': {'key': 'currentState', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'provider_name': {'key': 'providerName', 'type': 'str'}, + 'source_branch_ref': {'key': 'sourceBranchRef', 'type': 'str'}, + 'source_repository_owner': {'key': 'sourceRepositoryOwner', 'type': 'str'}, + 'target_branch_ref': {'key': 'targetBranchRef', 'type': 'str'}, + 'target_repository_owner': {'key': 'targetRepositoryOwner', 'type': 'str'}, + 'title': {'key': 'title', 'type': 'str'} + } + + def __init__(self, _links=None, author=None, current_state=None, description=None, id=None, provider_name=None, source_branch_ref=None, source_repository_owner=None, target_branch_ref=None, target_repository_owner=None, title=None): + super(PullRequest, self).__init__() + self._links = _links + self.author = author + self.current_state = current_state + self.description = description + self.id = id + self.provider_name = provider_name + self.source_branch_ref = source_branch_ref + self.source_repository_owner = source_repository_owner + self.target_branch_ref = target_branch_ref + self.target_repository_owner = target_repository_owner + self.title = title + + +class ReferenceLinks(Model): + """ + The class to represent a collection of REST reference links. + + :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 + + +class ReleaseReference(Model): + """ + Reference to a release. + + :param attempt: Number of Release Attempt. + :type attempt: int + :param creation_date: Release Creation Date. + :type creation_date: datetime + :param definition_id: Release definition ID. + :type definition_id: int + :param environment_creation_date: Environment creation Date. + :type environment_creation_date: datetime + :param environment_definition_id: Release environment definition ID. + :type environment_definition_id: int + :param environment_definition_name: Release environment definition name. + :type environment_definition_name: str + :param environment_id: Release environment ID. + :type environment_id: int + :param environment_name: Release environment name. + :type environment_name: str + :param id: Release ID. + :type id: int + :param name: Release name. + :type name: str + """ + + _attribute_map = { + 'attempt': {'key': 'attempt', 'type': 'int'}, + 'creation_date': {'key': 'creationDate', 'type': 'iso-8601'}, + 'definition_id': {'key': 'definitionId', 'type': 'int'}, + 'environment_creation_date': {'key': 'environmentCreationDate', 'type': 'iso-8601'}, + 'environment_definition_id': {'key': 'environmentDefinitionId', 'type': 'int'}, + 'environment_definition_name': {'key': 'environmentDefinitionName', 'type': 'str'}, + 'environment_id': {'key': 'environmentId', 'type': 'int'}, + 'environment_name': {'key': 'environmentName', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'int'}, + 'name': {'key': 'name', 'type': 'str'} + } + + def __init__(self, attempt=None, creation_date=None, definition_id=None, environment_creation_date=None, environment_definition_id=None, environment_definition_name=None, environment_id=None, environment_name=None, id=None, name=None): + super(ReleaseReference, self).__init__() + self.attempt = attempt + self.creation_date = creation_date + self.definition_id = definition_id + self.environment_creation_date = environment_creation_date + self.environment_definition_id = environment_definition_id + self.environment_definition_name = environment_definition_name + self.environment_id = environment_id + self.environment_name = environment_name + self.id = id + self.name = name + + +class RepositoryWebhook(Model): + """ + Represents a repository's webhook returned from a source provider. + + :param name: The friendly name of the repository. + :type name: str + :param types: + :type types: list of DefinitionTriggerType + :param url: The URL of the repository. + :type url: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'types': {'key': 'types', 'type': '[object]'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, name=None, types=None, url=None): + super(RepositoryWebhook, self).__init__() + self.name = name + self.types = types + self.url = url + + +class ResourceRef(Model): + """ + :param id: + :type id: str + :param url: + :type url: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, id=None, url=None): + super(ResourceRef, self).__init__() + self.id = id + self.url = url + + +class RetentionLease(Model): + """ + A valid retention lease prevents automated systems from deleting a pipeline run. + + :param created_on: When the lease was created. + :type created_on: datetime + :param definition_id: The pipeline definition of the run. + :type definition_id: int + :param lease_id: The unique identifier for this lease. + :type lease_id: int + :param owner_id: Non-unique string that identifies the owner of a retention lease. + :type owner_id: str + :param run_id: The pipeline run protected by this lease. + :type run_id: int + :param valid_until: The last day the lease is considered valid. + :type valid_until: datetime + """ + + _attribute_map = { + 'created_on': {'key': 'createdOn', 'type': 'iso-8601'}, + 'definition_id': {'key': 'definitionId', 'type': 'int'}, + 'lease_id': {'key': 'leaseId', 'type': 'int'}, + 'owner_id': {'key': 'ownerId', 'type': 'str'}, + 'run_id': {'key': 'runId', 'type': 'int'}, + 'valid_until': {'key': 'validUntil', 'type': 'iso-8601'} + } + + def __init__(self, created_on=None, definition_id=None, lease_id=None, owner_id=None, run_id=None, valid_until=None): + super(RetentionLease, self).__init__() + self.created_on = created_on + self.definition_id = definition_id + self.lease_id = lease_id + self.owner_id = owner_id + self.run_id = run_id + self.valid_until = valid_until + + +class RetentionPolicy(Model): + """ + Represents a retention policy for a build definition. + + :param artifacts: + :type artifacts: list of str + :param artifact_types_to_delete: + :type artifact_types_to_delete: list of str + :param branches: + :type branches: list of str + :param days_to_keep: The number of days to keep builds. + :type days_to_keep: int + :param delete_build_record: Indicates whether the build record itself should be deleted. + :type delete_build_record: bool + :param delete_test_results: Indicates whether to delete test results associated with the build. + :type delete_test_results: bool + :param minimum_to_keep: The minimum number of builds to keep. + :type minimum_to_keep: int + """ + + _attribute_map = { + 'artifacts': {'key': 'artifacts', 'type': '[str]'}, + 'artifact_types_to_delete': {'key': 'artifactTypesToDelete', 'type': '[str]'}, + 'branches': {'key': 'branches', 'type': '[str]'}, + 'days_to_keep': {'key': 'daysToKeep', 'type': 'int'}, + 'delete_build_record': {'key': 'deleteBuildRecord', 'type': 'bool'}, + 'delete_test_results': {'key': 'deleteTestResults', 'type': 'bool'}, + 'minimum_to_keep': {'key': 'minimumToKeep', 'type': 'int'} + } + + def __init__(self, artifacts=None, artifact_types_to_delete=None, branches=None, days_to_keep=None, delete_build_record=None, delete_test_results=None, minimum_to_keep=None): + super(RetentionPolicy, self).__init__() + self.artifacts = artifacts + self.artifact_types_to_delete = artifact_types_to_delete + self.branches = branches + self.days_to_keep = days_to_keep + self.delete_build_record = delete_build_record + self.delete_test_results = delete_test_results + self.minimum_to_keep = minimum_to_keep + + +class RetentionSetting(Model): + """ + Contains the minimum, maximum, and current value for a retention setting. + + :param max: + :type max: int + :param min: + :type min: int + :param value: + :type value: int + """ + + _attribute_map = { + 'max': {'key': 'max', 'type': 'int'}, + 'min': {'key': 'min', 'type': 'int'}, + 'value': {'key': 'value', 'type': 'int'} + } + + def __init__(self, max=None, min=None, value=None): + super(RetentionSetting, self).__init__() + self.max = max + self.min = min + self.value = value + + +class SourceProviderAttributes(Model): + """ + :param name: The name of the source provider. + :type name: str + :param supported_capabilities: The capabilities supported by this source provider. + :type supported_capabilities: dict + :param supported_triggers: The types of triggers supported by this source provider. + :type supported_triggers: list of :class:`SupportedTrigger ` + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'supported_capabilities': {'key': 'supportedCapabilities', 'type': '{bool}'}, + 'supported_triggers': {'key': 'supportedTriggers', 'type': '[SupportedTrigger]'} + } + + def __init__(self, name=None, supported_capabilities=None, supported_triggers=None): + super(SourceProviderAttributes, self).__init__() + self.name = name + self.supported_capabilities = supported_capabilities + self.supported_triggers = supported_triggers + + +class SourceRepositories(Model): + """ + A set of repositories returned from the source provider. + + :param continuation_token: A token used to continue this paged request; 'null' if the request is complete + :type continuation_token: str + :param page_length: The number of repositories requested for each page + :type page_length: int + :param repositories: A list of repositories + :type repositories: list of :class:`SourceRepository ` + :param total_page_count: The total number of pages, or '-1' if unknown + :type total_page_count: int + """ + + _attribute_map = { + 'continuation_token': {'key': 'continuationToken', 'type': 'str'}, + 'page_length': {'key': 'pageLength', 'type': 'int'}, + 'repositories': {'key': 'repositories', 'type': '[SourceRepository]'}, + 'total_page_count': {'key': 'totalPageCount', 'type': 'int'} + } + + def __init__(self, continuation_token=None, page_length=None, repositories=None, total_page_count=None): + super(SourceRepositories, self).__init__() + self.continuation_token = continuation_token + self.page_length = page_length + self.repositories = repositories + self.total_page_count = total_page_count + + +class SourceRepository(Model): + """ + Represents a repository returned from a source provider. + + :param default_branch: The name of the default branch. + :type default_branch: str + :param full_name: The full name of the repository. + :type full_name: str + :param id: The ID of the repository. + :type id: str + :param name: The friendly name of the repository. + :type name: str + :param properties: + :type properties: dict + :param source_provider_name: The name of the source provider the repository is from. + :type source_provider_name: str + :param url: The URL of the repository. + :type url: str + """ + + _attribute_map = { + 'default_branch': {'key': 'defaultBranch', 'type': 'str'}, + 'full_name': {'key': 'fullName', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': '{str}'}, + 'source_provider_name': {'key': 'sourceProviderName', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, default_branch=None, full_name=None, id=None, name=None, properties=None, source_provider_name=None, url=None): + super(SourceRepository, self).__init__() + self.default_branch = default_branch + self.full_name = full_name + self.id = id + self.name = name + self.properties = properties + self.source_provider_name = source_provider_name + self.url = url + + +class SourceRepositoryItem(Model): + """ + Represents an item in a repository from a source provider. + + :param is_container: Whether the item is able to have sub-items (e.g., is a folder). + :type is_container: bool + :param path: The full path of the item, relative to the root of the repository. + :type path: str + :param type: The type of the item (folder, file, etc). + :type type: str + :param url: The URL of the item. + :type url: str + """ + + _attribute_map = { + 'is_container': {'key': 'isContainer', 'type': 'bool'}, + 'path': {'key': 'path', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, is_container=None, path=None, type=None, url=None): + super(SourceRepositoryItem, self).__init__() + self.is_container = is_container + self.path = path + self.type = type + self.url = url + + +class StageReference(Model): + """ + Stage in pipeline + + :param attempt: Attempt number of stage + :type attempt: int + :param stage_name: Name of the stage. Maximum supported length for name is 256 character. + :type stage_name: str + """ + + _attribute_map = { + 'attempt': {'key': 'attempt', 'type': 'int'}, + 'stage_name': {'key': 'stageName', 'type': 'str'} + } + + def __init__(self, attempt=None, stage_name=None): + super(StageReference, self).__init__() + self.attempt = attempt + self.stage_name = stage_name + + +class SupportedTrigger(Model): + """ + :param default_polling_interval: The default interval to wait between polls (only relevant when NotificationType is Polling). + :type default_polling_interval: int + :param notification_type: How the trigger is notified of changes. + :type notification_type: str + :param supported_capabilities: The capabilities supported by this trigger. + :type supported_capabilities: dict + :param type: The type of trigger. + :type type: object + """ + + _attribute_map = { + 'default_polling_interval': {'key': 'defaultPollingInterval', 'type': 'int'}, + 'notification_type': {'key': 'notificationType', 'type': 'str'}, + 'supported_capabilities': {'key': 'supportedCapabilities', 'type': '{object}'}, + 'type': {'key': 'type', 'type': 'object'} + } + + def __init__(self, default_polling_interval=None, notification_type=None, supported_capabilities=None, type=None): + super(SupportedTrigger, self).__init__() + self.default_polling_interval = default_polling_interval + self.notification_type = notification_type + self.supported_capabilities = supported_capabilities + self.type = type + + +class TaskAgentPoolReference(Model): + """ + Represents a reference to an agent pool. + + :param id: The pool ID. + :type id: int + :param is_hosted: A value indicating whether or not this pool is managed by the service. + :type is_hosted: bool + :param name: The pool name. + :type name: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'int'}, + 'is_hosted': {'key': 'isHosted', 'type': 'bool'}, + 'name': {'key': 'name', 'type': 'str'} + } + + def __init__(self, id=None, is_hosted=None, name=None): + super(TaskAgentPoolReference, self).__init__() + self.id = id + self.is_hosted = is_hosted + self.name = name + + +class TaskDefinitionReference(Model): + """ + A reference to a task definition. + + :param definition_type: The type of task (task or task group). + :type definition_type: str + :param id: The ID of the task. + :type id: str + :param version_spec: The version of the task. + :type version_spec: str + """ + + _attribute_map = { + 'definition_type': {'key': 'definitionType', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'version_spec': {'key': 'versionSpec', 'type': 'str'} + } + + def __init__(self, definition_type=None, id=None, version_spec=None): + super(TaskDefinitionReference, self).__init__() + self.definition_type = definition_type + self.id = id + self.version_spec = version_spec + + +class TaskInputDefinitionBase(Model): + """ + :param aliases: + :type aliases: list of str + :param default_value: + :type default_value: str + :param group_name: + :type group_name: str + :param help_mark_down: + :type help_mark_down: str + :param label: + :type label: str + :param name: + :type name: str + :param options: + :type options: dict + :param properties: + :type properties: dict + :param required: + :type required: bool + :param type: + :type type: str + :param validation: + :type validation: :class:`TaskInputValidation ` + :param visible_rule: + :type visible_rule: str + """ + + _attribute_map = { + 'aliases': {'key': 'aliases', 'type': '[str]'}, + 'default_value': {'key': 'defaultValue', 'type': 'str'}, + 'group_name': {'key': 'groupName', 'type': 'str'}, + 'help_mark_down': {'key': 'helpMarkDown', 'type': 'str'}, + 'label': {'key': 'label', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'options': {'key': 'options', 'type': '{str}'}, + 'properties': {'key': 'properties', 'type': '{str}'}, + 'required': {'key': 'required', 'type': 'bool'}, + 'type': {'key': 'type', 'type': 'str'}, + 'validation': {'key': 'validation', 'type': 'TaskInputValidation'}, + 'visible_rule': {'key': 'visibleRule', 'type': 'str'} + } + + def __init__(self, aliases=None, default_value=None, group_name=None, help_mark_down=None, label=None, name=None, options=None, properties=None, required=None, type=None, validation=None, visible_rule=None): + super(TaskInputDefinitionBase, self).__init__() + self.aliases = aliases + self.default_value = default_value + self.group_name = group_name + self.help_mark_down = help_mark_down + self.label = label + self.name = name + self.options = options + self.properties = properties + self.required = required + self.type = type + self.validation = validation + self.visible_rule = visible_rule + + +class TaskInputValidation(Model): + """ + :param expression: Conditional expression + :type expression: str + :param message: Message explaining how user can correct if validation fails + :type message: str + """ + + _attribute_map = { + 'expression': {'key': 'expression', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'} + } + + def __init__(self, expression=None, message=None): + super(TaskInputValidation, self).__init__() + self.expression = expression + self.message = message + + +class TaskOrchestrationPlanReference(Model): + """ + Represents a reference to an orchestration plan. + + :param orchestration_type: The type of the plan. + :type orchestration_type: int + :param plan_id: The ID of the plan. + :type plan_id: str + """ + + _attribute_map = { + 'orchestration_type': {'key': 'orchestrationType', 'type': 'int'}, + 'plan_id': {'key': 'planId', 'type': 'str'} + } + + def __init__(self, orchestration_type=None, plan_id=None): + super(TaskOrchestrationPlanReference, self).__init__() + self.orchestration_type = orchestration_type + self.plan_id = plan_id + + +class TaskReference(Model): + """ + Represents a reference to a task. + + :param id: The ID of the task definition. + :type id: str + :param name: The name of the task definition. + :type name: str + :param version: The version of the task definition. + :type version: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'version': {'key': 'version', 'type': 'str'} + } + + def __init__(self, id=None, name=None, version=None): + super(TaskReference, self).__init__() + self.id = id + self.name = name + self.version = version + + +class TaskSourceDefinitionBase(Model): + """ + :param auth_key: + :type auth_key: str + :param endpoint: + :type endpoint: str + :param key_selector: + :type key_selector: str + :param selector: + :type selector: str + :param target: + :type target: str + """ + + _attribute_map = { + 'auth_key': {'key': 'authKey', 'type': 'str'}, + 'endpoint': {'key': 'endpoint', 'type': 'str'}, + 'key_selector': {'key': 'keySelector', 'type': 'str'}, + 'selector': {'key': 'selector', 'type': 'str'}, + 'target': {'key': 'target', 'type': 'str'} + } + + def __init__(self, auth_key=None, endpoint=None, key_selector=None, selector=None, target=None): + super(TaskSourceDefinitionBase, self).__init__() + self.auth_key = auth_key + self.endpoint = endpoint + self.key_selector = key_selector + self.selector = selector + self.target = target + + +class TeamProjectReference(Model): + """ + Represents a shallow reference to a TeamProject. + + :param abbreviation: Project abbreviation. + :type abbreviation: str + :param default_team_image_url: Url to default team identity image. + :type default_team_image_url: str + :param description: The project's description (if any). + :type description: str + :param id: Project identifier. + :type id: str + :param last_update_time: Project last update time. + :type last_update_time: datetime + :param name: Project name. + :type name: str + :param revision: Project revision. + :type revision: long + :param state: Project state. + :type state: object + :param url: Url to the full version of the object. + :type url: str + :param visibility: Project visibility. + :type visibility: object + """ + + _attribute_map = { + 'abbreviation': {'key': 'abbreviation', 'type': 'str'}, + 'default_team_image_url': {'key': 'defaultTeamImageUrl', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'last_update_time': {'key': 'lastUpdateTime', 'type': 'iso-8601'}, + 'name': {'key': 'name', 'type': 'str'}, + 'revision': {'key': 'revision', 'type': 'long'}, + 'state': {'key': 'state', 'type': 'object'}, + 'url': {'key': 'url', 'type': 'str'}, + 'visibility': {'key': 'visibility', 'type': 'object'} + } + + def __init__(self, abbreviation=None, default_team_image_url=None, description=None, id=None, last_update_time=None, name=None, revision=None, state=None, url=None, visibility=None): + super(TeamProjectReference, self).__init__() + self.abbreviation = abbreviation + self.default_team_image_url = default_team_image_url + self.description = description + self.id = id + self.last_update_time = last_update_time + self.name = name + self.revision = revision + self.state = state + self.url = url + self.visibility = visibility + + +class TestResultsContext(Model): + """ + :param build: + :type build: :class:`BuildReference ` + :param context_type: + :type context_type: object + :param pipeline_reference: + :type pipeline_reference: :class:`PipelineReference ` + :param release: + :type release: :class:`ReleaseReference ` + """ + + _attribute_map = { + 'build': {'key': 'build', 'type': 'BuildReference'}, + 'context_type': {'key': 'contextType', 'type': 'object'}, + 'pipeline_reference': {'key': 'pipelineReference', 'type': 'PipelineReference'}, + 'release': {'key': 'release', 'type': 'ReleaseReference'} + } + + def __init__(self, build=None, context_type=None, pipeline_reference=None, release=None): + super(TestResultsContext, self).__init__() + self.build = build + self.context_type = context_type + self.pipeline_reference = pipeline_reference + self.release = release + + +class TimelineAttempt(Model): + """ + :param attempt: Gets or sets the attempt of the record. + :type attempt: int + :param record_id: Gets or sets the record identifier located within the specified timeline. + :type record_id: str + :param timeline_id: Gets or sets the timeline identifier which owns the record representing this attempt. + :type timeline_id: str + """ + + _attribute_map = { + 'attempt': {'key': 'attempt', 'type': 'int'}, + 'record_id': {'key': 'recordId', 'type': 'str'}, + 'timeline_id': {'key': 'timelineId', 'type': 'str'} + } + + def __init__(self, attempt=None, record_id=None, timeline_id=None): + super(TimelineAttempt, self).__init__() + self.attempt = attempt + self.record_id = record_id + self.timeline_id = timeline_id + + +class TimelineRecord(Model): + """ + Represents an entry in a build's timeline. + + :param _links: + :type _links: :class:`ReferenceLinks ` + :param attempt: Attempt number of record. + :type attempt: int + :param change_id: The change ID. + :type change_id: int + :param current_operation: A string that indicates the current operation. + :type current_operation: str + :param details: A reference to a sub-timeline. + :type details: :class:`TimelineReference ` + :param error_count: The number of errors produced by this operation. + :type error_count: int + :param finish_time: The finish time. + :type finish_time: datetime + :param id: The ID of the record. + :type id: str + :param identifier: String identifier that is consistent across attempts. + :type identifier: str + :param issues: + :type issues: list of :class:`Issue ` + :param last_modified: The time the record was last modified. + :type last_modified: datetime + :param log: A reference to the log produced by this operation. + :type log: :class:`BuildLogReference ` + :param name: The name. + :type name: str + :param order: An ordinal value relative to other records. + :type order: int + :param parent_id: The ID of the record's parent. + :type parent_id: str + :param percent_complete: The current completion percentage. + :type percent_complete: int + :param previous_attempts: + :type previous_attempts: list of :class:`TimelineAttempt ` + :param queue_id: The queue ID of the queue that the operation ran on. + :type queue_id: int + :param result: The result. + :type result: object + :param result_code: The result code. + :type result_code: str + :param start_time: The start time. + :type start_time: datetime + :param state: The state of the record. + :type state: object + :param task: A reference to the task represented by this timeline record. + :type task: :class:`TaskReference ` + :param type: The type of the record. + :type type: str + :param url: The REST URL of the timeline record. + :type url: str + :param warning_count: The number of warnings produced by this operation. + :type warning_count: int + :param worker_name: The name of the agent running the operation. + :type worker_name: str + """ + + _attribute_map = { + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'attempt': {'key': 'attempt', 'type': 'int'}, + 'change_id': {'key': 'changeId', 'type': 'int'}, + 'current_operation': {'key': 'currentOperation', 'type': 'str'}, + 'details': {'key': 'details', 'type': 'TimelineReference'}, + 'error_count': {'key': 'errorCount', 'type': 'int'}, + 'finish_time': {'key': 'finishTime', 'type': 'iso-8601'}, + 'id': {'key': 'id', 'type': 'str'}, + 'identifier': {'key': 'identifier', 'type': 'str'}, + 'issues': {'key': 'issues', 'type': '[Issue]'}, + 'last_modified': {'key': 'lastModified', 'type': 'iso-8601'}, + 'log': {'key': 'log', 'type': 'BuildLogReference'}, + 'name': {'key': 'name', 'type': 'str'}, + 'order': {'key': 'order', 'type': 'int'}, + 'parent_id': {'key': 'parentId', 'type': 'str'}, + 'percent_complete': {'key': 'percentComplete', 'type': 'int'}, + 'previous_attempts': {'key': 'previousAttempts', 'type': '[TimelineAttempt]'}, + 'queue_id': {'key': 'queueId', 'type': 'int'}, + 'result': {'key': 'result', 'type': 'object'}, + 'result_code': {'key': 'resultCode', 'type': 'str'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'state': {'key': 'state', 'type': 'object'}, + 'task': {'key': 'task', 'type': 'TaskReference'}, + 'type': {'key': 'type', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'}, + 'warning_count': {'key': 'warningCount', 'type': 'int'}, + 'worker_name': {'key': 'workerName', 'type': 'str'} + } + + def __init__(self, _links=None, attempt=None, change_id=None, current_operation=None, details=None, error_count=None, finish_time=None, id=None, identifier=None, issues=None, last_modified=None, log=None, name=None, order=None, parent_id=None, percent_complete=None, previous_attempts=None, queue_id=None, result=None, result_code=None, start_time=None, state=None, task=None, type=None, url=None, warning_count=None, worker_name=None): + super(TimelineRecord, self).__init__() + self._links = _links + self.attempt = attempt + self.change_id = change_id + self.current_operation = current_operation + self.details = details + self.error_count = error_count + self.finish_time = finish_time + self.id = id + self.identifier = identifier + self.issues = issues + self.last_modified = last_modified + self.log = log + self.name = name + self.order = order + self.parent_id = parent_id + self.percent_complete = percent_complete + self.previous_attempts = previous_attempts + self.queue_id = queue_id + self.result = result + self.result_code = result_code + self.start_time = start_time + self.state = state + self.task = task + self.type = type + self.url = url + self.warning_count = warning_count + self.worker_name = worker_name + + +class TimelineReference(Model): + """ + Represents a reference to a timeline. + + :param change_id: The change ID. + :type change_id: int + :param id: The ID of the timeline. + :type id: str + :param url: The REST URL of the timeline. + :type url: str + """ + + _attribute_map = { + 'change_id': {'key': 'changeId', 'type': 'int'}, + 'id': {'key': 'id', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, change_id=None, id=None, url=None): + super(TimelineReference, self).__init__() + self.change_id = change_id + self.id = id + self.url = url + + +class UpdateProjectRetentionSettingModel(Model): + """ + Contains members for updating the retention settings values. All fields are optional. + + :param artifacts_retention: + :type artifacts_retention: :class:`UpdateRetentionSettingModel ` + :param pull_request_run_retention: + :type pull_request_run_retention: :class:`UpdateRetentionSettingModel ` + :param retain_runs_per_protected_branch: + :type retain_runs_per_protected_branch: :class:`UpdateRetentionSettingModel ` + :param run_retention: + :type run_retention: :class:`UpdateRetentionSettingModel ` + """ + + _attribute_map = { + 'artifacts_retention': {'key': 'artifactsRetention', 'type': 'UpdateRetentionSettingModel'}, + 'pull_request_run_retention': {'key': 'pullRequestRunRetention', 'type': 'UpdateRetentionSettingModel'}, + 'retain_runs_per_protected_branch': {'key': 'retainRunsPerProtectedBranch', 'type': 'UpdateRetentionSettingModel'}, + 'run_retention': {'key': 'runRetention', 'type': 'UpdateRetentionSettingModel'} + } + + def __init__(self, artifacts_retention=None, pull_request_run_retention=None, retain_runs_per_protected_branch=None, run_retention=None): + super(UpdateProjectRetentionSettingModel, self).__init__() + self.artifacts_retention = artifacts_retention + self.pull_request_run_retention = pull_request_run_retention + self.retain_runs_per_protected_branch = retain_runs_per_protected_branch + self.run_retention = run_retention + + +class UpdateRetentionSettingModel(Model): + """ + :param value: + :type value: int + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': 'int'} + } + + def __init__(self, value=None): + super(UpdateRetentionSettingModel, self).__init__() + self.value = value + + +class UpdateStageParameters(Model): + """ + :param state: + :type state: object + """ + + _attribute_map = { + 'state': {'key': 'state', 'type': 'object'} + } + + def __init__(self, state=None): + super(UpdateStageParameters, self).__init__() + self.state = state + + +class VariableGroupReference(Model): + """ + Represents a reference to a variable group. + + :param alias: The Name of the variable group. + :type alias: str + :param id: The ID of the variable group. + :type id: int + """ + + _attribute_map = { + 'alias': {'key': 'alias', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'int'} + } + + def __init__(self, alias=None, id=None): + super(VariableGroupReference, self).__init__() + self.alias = alias + self.id = id + + +class WebApiConnectedServiceRef(Model): + """ + :param id: + :type id: str + :param url: + :type url: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, id=None, url=None): + super(WebApiConnectedServiceRef, self).__init__() + self.id = id + self.url = url + + +class XamlBuildControllerReference(Model): + """ + :param id: Id of the resource + :type id: int + :param name: Name of the linked resource (definition name, controller name, etc.) + :type name: str + :param url: Full http link to the resource + :type url: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'int'}, + 'name': {'key': 'name', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'} + } + + def __init__(self, id=None, name=None, url=None): + super(XamlBuildControllerReference, self).__init__() + self.id = id + self.name = name + self.url = url + + +class BuildController(XamlBuildControllerReference): + """ + :param id: Id of the resource + :type id: int + :param name: Name of the linked resource (definition name, controller name, etc.) + :type name: str + :param url: Full http link to the resource + :type url: str + :param _links: + :type _links: :class:`ReferenceLinks ` + :param created_date: The date the controller was created. + :type created_date: datetime + :param description: The description of the controller. + :type description: str + :param enabled: Indicates whether the controller is enabled. + :type enabled: bool + :param status: The status of the controller. + :type status: object + :param updated_date: The date the controller was last updated. + :type updated_date: datetime + :param uri: The controller's URI. + :type uri: str + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'int'}, + 'name': {'key': 'name', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'}, + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'created_date': {'key': 'createdDate', 'type': 'iso-8601'}, + 'description': {'key': 'description', 'type': 'str'}, + 'enabled': {'key': 'enabled', 'type': 'bool'}, + 'status': {'key': 'status', 'type': 'object'}, + 'updated_date': {'key': 'updatedDate', 'type': 'iso-8601'}, + 'uri': {'key': 'uri', 'type': 'str'} + } + + def __init__(self, id=None, name=None, url=None, _links=None, created_date=None, description=None, enabled=None, status=None, updated_date=None, uri=None): + super(BuildController, self).__init__(id=id, name=name, url=url) + self._links = _links + self.created_date = created_date + self.description = description + self.enabled = enabled + self.status = status + self.updated_date = updated_date + self.uri = uri + + +class BuildDefinitionReference(DefinitionReference): + """ + Represents a reference to a build definition. + + :param created_date: The date this version of the definition was created. + :type created_date: datetime + :param id: The ID of the referenced definition. + :type id: int + :param name: The name of the referenced definition. + :type name: str + :param path: The folder path of the definition. + :type path: str + :param project: A reference to the project. + :type project: :class:`TeamProjectReference ` + :param queue_status: A value that indicates whether builds can be queued against this definition. + :type queue_status: object + :param revision: The definition revision number. + :type revision: int + :param type: The type of the definition. + :type type: object + :param uri: The definition's URI. + :type uri: str + :param url: The REST URL of the definition. + :type url: str + :param _links: + :type _links: :class:`ReferenceLinks ` + :param authored_by: The author of the definition. + :type authored_by: :class:`IdentityRef ` + :param draft_of: A reference to the definition that this definition is a draft of, if this is a draft definition. + :type draft_of: :class:`DefinitionReference ` + :param drafts: The list of drafts associated with this definition, if this is not a draft definition. + :type drafts: list of :class:`DefinitionReference ` + :param latest_build: + :type latest_build: :class:`Build ` + :param latest_completed_build: + :type latest_completed_build: :class:`Build ` + :param metrics: + :type metrics: list of :class:`BuildMetric ` + :param quality: The quality of the definition document (draft, etc.) + :type quality: object + :param queue: The default queue for builds run against this definition. + :type queue: :class:`AgentPoolQueue ` + """ + + _attribute_map = { + 'created_date': {'key': 'createdDate', 'type': 'iso-8601'}, + 'id': {'key': 'id', 'type': 'int'}, + 'name': {'key': 'name', 'type': 'str'}, + 'path': {'key': 'path', 'type': 'str'}, + 'project': {'key': 'project', 'type': 'TeamProjectReference'}, + 'queue_status': {'key': 'queueStatus', 'type': 'object'}, + 'revision': {'key': 'revision', 'type': 'int'}, + 'type': {'key': 'type', 'type': 'object'}, + 'uri': {'key': 'uri', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'}, + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'authored_by': {'key': 'authoredBy', 'type': 'IdentityRef'}, + 'draft_of': {'key': 'draftOf', 'type': 'DefinitionReference'}, + 'drafts': {'key': 'drafts', 'type': '[DefinitionReference]'}, + 'latest_build': {'key': 'latestBuild', 'type': 'Build'}, + 'latest_completed_build': {'key': 'latestCompletedBuild', 'type': 'Build'}, + 'metrics': {'key': 'metrics', 'type': '[BuildMetric]'}, + 'quality': {'key': 'quality', 'type': 'object'}, + 'queue': {'key': 'queue', 'type': 'AgentPoolQueue'} + } + + def __init__(self, created_date=None, id=None, name=None, path=None, project=None, queue_status=None, revision=None, type=None, uri=None, url=None, _links=None, authored_by=None, draft_of=None, drafts=None, latest_build=None, latest_completed_build=None, metrics=None, quality=None, queue=None): + super(BuildDefinitionReference, self).__init__(created_date=created_date, id=id, name=name, path=path, project=project, queue_status=queue_status, revision=revision, type=type, uri=uri, url=url) + self._links = _links + self.authored_by = authored_by + self.draft_of = draft_of + self.drafts = drafts + self.latest_build = latest_build + self.latest_completed_build = latest_completed_build + self.metrics = metrics + self.quality = quality + self.queue = queue + + +class BuildDefinitionReference3_2(DefinitionReference): + """ + For back-compat with extensions that use the old Steps format instead of Process and Phases + + :param created_date: The date this version of the definition was created. + :type created_date: datetime + :param id: The ID of the referenced definition. + :type id: int + :param name: The name of the referenced definition. + :type name: str + :param path: The folder path of the definition. + :type path: str + :param project: A reference to the project. + :type project: :class:`TeamProjectReference ` + :param queue_status: A value that indicates whether builds can be queued against this definition. + :type queue_status: object + :param revision: The definition revision number. + :type revision: int + :param type: The type of the definition. + :type type: object + :param uri: The definition's URI. + :type uri: str + :param url: The REST URL of the definition. + :type url: str + :param _links: + :type _links: :class:`ReferenceLinks ` + :param authored_by: The author of the definition. + :type authored_by: :class:`IdentityRef ` + :param draft_of: A reference to the definition that this definition is a draft of, if this is a draft definition. + :type draft_of: :class:`DefinitionReference ` + :param drafts: The list of drafts associated with this definition, if this is not a draft definition. + :type drafts: list of :class:`DefinitionReference ` + :param metrics: + :type metrics: list of :class:`BuildMetric ` + :param quality: The quality of the definition document (draft, etc.) + :type quality: object + :param queue: The default queue for builds run against this definition. + :type queue: :class:`AgentPoolQueue ` + """ + + _attribute_map = { + 'created_date': {'key': 'createdDate', 'type': 'iso-8601'}, + 'id': {'key': 'id', 'type': 'int'}, + 'name': {'key': 'name', 'type': 'str'}, + 'path': {'key': 'path', 'type': 'str'}, + 'project': {'key': 'project', 'type': 'TeamProjectReference'}, + 'queue_status': {'key': 'queueStatus', 'type': 'object'}, + 'revision': {'key': 'revision', 'type': 'int'}, + 'type': {'key': 'type', 'type': 'object'}, + 'uri': {'key': 'uri', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'}, + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'authored_by': {'key': 'authoredBy', 'type': 'IdentityRef'}, + 'draft_of': {'key': 'draftOf', 'type': 'DefinitionReference'}, + 'drafts': {'key': 'drafts', 'type': '[DefinitionReference]'}, + 'metrics': {'key': 'metrics', 'type': '[BuildMetric]'}, + 'quality': {'key': 'quality', 'type': 'object'}, + 'queue': {'key': 'queue', 'type': 'AgentPoolQueue'} + } + + def __init__(self, created_date=None, id=None, name=None, path=None, project=None, queue_status=None, revision=None, type=None, uri=None, url=None, _links=None, authored_by=None, draft_of=None, drafts=None, metrics=None, quality=None, queue=None): + super(BuildDefinitionReference3_2, self).__init__(created_date=created_date, id=id, name=name, path=path, project=project, queue_status=queue_status, revision=revision, type=type, uri=uri, url=url) + self._links = _links + self.authored_by = authored_by + self.draft_of = draft_of + self.drafts = drafts + self.metrics = metrics + self.quality = quality + self.queue = queue + + +class BuildLog(BuildLogReference): + """ + Represents a build log. + + :param id: The ID of the log. + :type id: int + :param type: The type of the log location. + :type type: str + :param url: A full link to the log resource. + :type url: str + :param created_on: The date and time the log was created. + :type created_on: datetime + :param last_changed_on: The date and time the log was last changed. + :type last_changed_on: datetime + :param line_count: The number of lines in the log. + :type line_count: long + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'int'}, + 'type': {'key': 'type', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'}, + 'created_on': {'key': 'createdOn', 'type': 'iso-8601'}, + 'last_changed_on': {'key': 'lastChangedOn', 'type': 'iso-8601'}, + 'line_count': {'key': 'lineCount', 'type': 'long'} + } + + def __init__(self, id=None, type=None, url=None, created_on=None, last_changed_on=None, line_count=None): + super(BuildLog, self).__init__(id=id, type=type, url=url) + self.created_on = created_on + self.last_changed_on = last_changed_on + self.line_count = line_count + + +class BuildOptionDefinition(BuildOptionDefinitionReference): + """ + Represents an optional behavior that can be applied to a build definition. + + :param id: The ID of the referenced build option. + :type id: str + :param description: The description. + :type description: str + :param groups: The list of input groups defined for the build option. + :type groups: list of :class:`BuildOptionGroupDefinition ` + :param inputs: The list of inputs defined for the build option. + :type inputs: list of :class:`BuildOptionInputDefinition ` + :param name: The name of the build option. + :type name: str + :param ordinal: A value that indicates the relative order in which the behavior should be applied. + :type ordinal: int + """ + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'groups': {'key': 'groups', 'type': '[BuildOptionGroupDefinition]'}, + 'inputs': {'key': 'inputs', 'type': '[BuildOptionInputDefinition]'}, + 'name': {'key': 'name', 'type': 'str'}, + 'ordinal': {'key': 'ordinal', 'type': 'int'} + } + + def __init__(self, id=None, description=None, groups=None, inputs=None, name=None, ordinal=None): + super(BuildOptionDefinition, self).__init__(id=id) + self.description = description + self.groups = groups + self.inputs = inputs + self.name = name + self.ordinal = ordinal + + +class Timeline(TimelineReference): + """ + Represents the timeline of a build. + + :param change_id: The change ID. + :type change_id: int + :param id: The ID of the timeline. + :type id: str + :param url: The REST URL of the timeline. + :type url: str + :param last_changed_by: The process or person that last changed the timeline. + :type last_changed_by: str + :param last_changed_on: The time the timeline was last changed. + :type last_changed_on: datetime + :param records: + :type records: list of :class:`TimelineRecord ` + """ + + _attribute_map = { + 'change_id': {'key': 'changeId', 'type': 'int'}, + 'id': {'key': 'id', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'}, + 'last_changed_by': {'key': 'lastChangedBy', 'type': 'str'}, + 'last_changed_on': {'key': 'lastChangedOn', 'type': 'iso-8601'}, + 'records': {'key': 'records', 'type': '[TimelineRecord]'} + } + + def __init__(self, change_id=None, id=None, url=None, last_changed_by=None, last_changed_on=None, records=None): + super(Timeline, self).__init__(change_id=change_id, id=id, url=url) + self.last_changed_by = last_changed_by + self.last_changed_on = last_changed_on + self.records = records + + +class VariableGroup(VariableGroupReference): + """ + Represents a variable group. + + :param alias: The Name of the variable group. + :type alias: str + :param id: The ID of the variable group. + :type id: int + :param description: The description. + :type description: str + :param name: The name of the variable group. + :type name: str + :param type: The type of the variable group. + :type type: str + :param variables: + :type variables: dict + """ + + _attribute_map = { + 'alias': {'key': 'alias', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'int'}, + 'description': {'key': 'description', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'variables': {'key': 'variables', 'type': '{BuildDefinitionVariable}'} + } + + def __init__(self, alias=None, id=None, description=None, name=None, type=None, variables=None): + super(VariableGroup, self).__init__(alias=alias, id=id) + self.description = description + self.name = name + self.type = type + self.variables = variables + + +class BuildDefinition(BuildDefinitionReference): + """ + Represents a build definition. + + :param created_date: The date this version of the definition was created. + :type created_date: datetime + :param id: The ID of the referenced definition. + :type id: int + :param name: The name of the referenced definition. + :type name: str + :param path: The folder path of the definition. + :type path: str + :param project: A reference to the project. + :type project: :class:`TeamProjectReference ` + :param queue_status: A value that indicates whether builds can be queued against this definition. + :type queue_status: object + :param revision: The definition revision number. + :type revision: int + :param type: The type of the definition. + :type type: object + :param uri: The definition's URI. + :type uri: str + :param url: The REST URL of the definition. + :type url: str + :param _links: + :type _links: :class:`ReferenceLinks ` + :param authored_by: The author of the definition. + :type authored_by: :class:`IdentityRef ` + :param draft_of: A reference to the definition that this definition is a draft of, if this is a draft definition. + :type draft_of: :class:`DefinitionReference ` + :param drafts: The list of drafts associated with this definition, if this is not a draft definition. + :type drafts: list of :class:`DefinitionReference ` + :param latest_build: + :type latest_build: :class:`Build ` + :param latest_completed_build: + :type latest_completed_build: :class:`Build ` + :param metrics: + :type metrics: list of :class:`BuildMetric ` + :param quality: The quality of the definition document (draft, etc.) + :type quality: object + :param queue: The default queue for builds run against this definition. + :type queue: :class:`AgentPoolQueue ` + :param badge_enabled: Indicates whether badges are enabled for this definition. + :type badge_enabled: bool + :param build_number_format: The build number format. + :type build_number_format: str + :param comment: A save-time comment for the definition. + :type comment: str + :param demands: + :type demands: list of :class:`object ` + :param description: The description. + :type description: str + :param drop_location: The drop location for the definition. + :type drop_location: str + :param job_authorization_scope: The job authorization scope for builds queued against this definition. + :type job_authorization_scope: object + :param job_cancel_timeout_in_minutes: The job cancel timeout (in minutes) for builds cancelled by user for this definition. + :type job_cancel_timeout_in_minutes: int + :param job_timeout_in_minutes: The job execution timeout (in minutes) for builds queued against this definition. + :type job_timeout_in_minutes: int + :param options: + :type options: list of :class:`BuildOption ` + :param process: The build process. + :type process: :class:`object ` + :param process_parameters: The process parameters for this definition. + :type process_parameters: :class:`ProcessParameters ` + :param properties: + :type properties: :class:`object ` + :param repository: The repository. + :type repository: :class:`BuildRepository ` + :param retention_rules: + :type retention_rules: list of :class:`RetentionPolicy ` + :param tags: + :type tags: list of str + :param triggers: + :type triggers: list of :class:`object ` + :param variable_groups: + :type variable_groups: list of :class:`VariableGroup ` + :param variables: + :type variables: dict + """ + + _attribute_map = { + 'created_date': {'key': 'createdDate', 'type': 'iso-8601'}, + 'id': {'key': 'id', 'type': 'int'}, + 'name': {'key': 'name', 'type': 'str'}, + 'path': {'key': 'path', 'type': 'str'}, + 'project': {'key': 'project', 'type': 'TeamProjectReference'}, + 'queue_status': {'key': 'queueStatus', 'type': 'object'}, + 'revision': {'key': 'revision', 'type': 'int'}, + 'type': {'key': 'type', 'type': 'object'}, + 'uri': {'key': 'uri', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'}, + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'authored_by': {'key': 'authoredBy', 'type': 'IdentityRef'}, + 'draft_of': {'key': 'draftOf', 'type': 'DefinitionReference'}, + 'drafts': {'key': 'drafts', 'type': '[DefinitionReference]'}, + 'latest_build': {'key': 'latestBuild', 'type': 'Build'}, + 'latest_completed_build': {'key': 'latestCompletedBuild', 'type': 'Build'}, + 'metrics': {'key': 'metrics', 'type': '[BuildMetric]'}, + 'quality': {'key': 'quality', 'type': 'object'}, + 'queue': {'key': 'queue', 'type': 'AgentPoolQueue'}, + 'badge_enabled': {'key': 'badgeEnabled', 'type': 'bool'}, + 'build_number_format': {'key': 'buildNumberFormat', 'type': 'str'}, + 'comment': {'key': 'comment', 'type': 'str'}, + 'demands': {'key': 'demands', 'type': '[object]'}, + 'description': {'key': 'description', 'type': 'str'}, + 'drop_location': {'key': 'dropLocation', 'type': 'str'}, + 'job_authorization_scope': {'key': 'jobAuthorizationScope', 'type': 'object'}, + 'job_cancel_timeout_in_minutes': {'key': 'jobCancelTimeoutInMinutes', 'type': 'int'}, + 'job_timeout_in_minutes': {'key': 'jobTimeoutInMinutes', 'type': 'int'}, + 'options': {'key': 'options', 'type': '[BuildOption]'}, + 'process': {'key': 'process', 'type': 'object'}, + 'process_parameters': {'key': 'processParameters', 'type': 'ProcessParameters'}, + 'properties': {'key': 'properties', 'type': 'object'}, + 'repository': {'key': 'repository', 'type': 'BuildRepository'}, + 'retention_rules': {'key': 'retentionRules', 'type': '[RetentionPolicy]'}, + 'tags': {'key': 'tags', 'type': '[str]'}, + 'triggers': {'key': 'triggers', 'type': '[object]'}, + 'variable_groups': {'key': 'variableGroups', 'type': '[VariableGroup]'}, + 'variables': {'key': 'variables', 'type': '{BuildDefinitionVariable}'} + } + + def __init__(self, created_date=None, id=None, name=None, path=None, project=None, queue_status=None, revision=None, type=None, uri=None, url=None, _links=None, authored_by=None, draft_of=None, drafts=None, latest_build=None, latest_completed_build=None, metrics=None, quality=None, queue=None, badge_enabled=None, build_number_format=None, comment=None, demands=None, description=None, drop_location=None, job_authorization_scope=None, job_cancel_timeout_in_minutes=None, job_timeout_in_minutes=None, options=None, process=None, process_parameters=None, properties=None, repository=None, retention_rules=None, tags=None, triggers=None, variable_groups=None, variables=None): + super(BuildDefinition, self).__init__(created_date=created_date, id=id, name=name, path=path, project=project, queue_status=queue_status, revision=revision, type=type, uri=uri, url=url, _links=_links, authored_by=authored_by, draft_of=draft_of, drafts=drafts, latest_build=latest_build, latest_completed_build=latest_completed_build, metrics=metrics, quality=quality, queue=queue) + self.badge_enabled = badge_enabled + self.build_number_format = build_number_format + self.comment = comment + self.demands = demands + self.description = description + self.drop_location = drop_location + self.job_authorization_scope = job_authorization_scope + self.job_cancel_timeout_in_minutes = job_cancel_timeout_in_minutes + self.job_timeout_in_minutes = job_timeout_in_minutes + self.options = options + self.process = process + self.process_parameters = process_parameters + self.properties = properties + self.repository = repository + self.retention_rules = retention_rules + self.tags = tags + self.triggers = triggers + self.variable_groups = variable_groups + self.variables = variables + + +class BuildDefinition3_2(BuildDefinitionReference3_2): + """ + For back-compat with extensions that use the old Steps format instead of Process and Phases + + :param created_date: The date this version of the definition was created. + :type created_date: datetime + :param id: The ID of the referenced definition. + :type id: int + :param name: The name of the referenced definition. + :type name: str + :param path: The folder path of the definition. + :type path: str + :param project: A reference to the project. + :type project: :class:`TeamProjectReference ` + :param queue_status: A value that indicates whether builds can be queued against this definition. + :type queue_status: object + :param revision: The definition revision number. + :type revision: int + :param type: The type of the definition. + :type type: object + :param uri: The definition's URI. + :type uri: str + :param url: The REST URL of the definition. + :type url: str + :param _links: + :type _links: :class:`ReferenceLinks ` + :param authored_by: The author of the definition. + :type authored_by: :class:`IdentityRef ` + :param draft_of: A reference to the definition that this definition is a draft of, if this is a draft definition. + :type draft_of: :class:`DefinitionReference ` + :param drafts: The list of drafts associated with this definition, if this is not a draft definition. + :type drafts: list of :class:`DefinitionReference ` + :param metrics: + :type metrics: list of :class:`BuildMetric ` + :param quality: The quality of the definition document (draft, etc.) + :type quality: object + :param queue: The default queue for builds run against this definition. + :type queue: :class:`AgentPoolQueue ` + :param badge_enabled: Indicates whether badges are enabled for this definition + :type badge_enabled: bool + :param build: + :type build: list of :class:`BuildDefinitionStep ` + :param build_number_format: The build number format + :type build_number_format: str + :param comment: The comment entered when saving the definition + :type comment: str + :param demands: + :type demands: list of :class:`object ` + :param description: The description + :type description: str + :param drop_location: The drop location for the definition + :type drop_location: str + :param job_authorization_scope: The job authorization scope for builds which are queued against this definition + :type job_authorization_scope: object + :param job_cancel_timeout_in_minutes: The job cancel timeout in minutes for builds which are cancelled by user for this definition + :type job_cancel_timeout_in_minutes: int + :param job_timeout_in_minutes: The job execution timeout in minutes for builds which are queued against this definition + :type job_timeout_in_minutes: int + :param latest_build: + :type latest_build: :class:`Build ` + :param latest_completed_build: + :type latest_completed_build: :class:`Build ` + :param options: + :type options: list of :class:`BuildOption ` + :param process_parameters: Process Parameters + :type process_parameters: :class:`ProcessParameters ` + :param properties: + :type properties: :class:`object ` + :param repository: The repository + :type repository: :class:`BuildRepository ` + :param retention_rules: + :type retention_rules: list of :class:`RetentionPolicy ` + :param tags: + :type tags: list of str + :param triggers: + :type triggers: list of :class:`object ` + :param variables: + :type variables: dict + """ + + _attribute_map = { + 'created_date': {'key': 'createdDate', 'type': 'iso-8601'}, + 'id': {'key': 'id', 'type': 'int'}, + 'name': {'key': 'name', 'type': 'str'}, + 'path': {'key': 'path', 'type': 'str'}, + 'project': {'key': 'project', 'type': 'TeamProjectReference'}, + 'queue_status': {'key': 'queueStatus', 'type': 'object'}, + 'revision': {'key': 'revision', 'type': 'int'}, + 'type': {'key': 'type', 'type': 'object'}, + 'uri': {'key': 'uri', 'type': 'str'}, + 'url': {'key': 'url', 'type': 'str'}, + '_links': {'key': '_links', 'type': 'ReferenceLinks'}, + 'authored_by': {'key': 'authoredBy', 'type': 'IdentityRef'}, + 'draft_of': {'key': 'draftOf', 'type': 'DefinitionReference'}, + 'drafts': {'key': 'drafts', 'type': '[DefinitionReference]'}, + 'metrics': {'key': 'metrics', 'type': '[BuildMetric]'}, + 'quality': {'key': 'quality', 'type': 'object'}, + 'queue': {'key': 'queue', 'type': 'AgentPoolQueue'}, + 'badge_enabled': {'key': 'badgeEnabled', 'type': 'bool'}, + 'build': {'key': 'build', 'type': '[BuildDefinitionStep]'}, + 'build_number_format': {'key': 'buildNumberFormat', 'type': 'str'}, + 'comment': {'key': 'comment', 'type': 'str'}, + 'demands': {'key': 'demands', 'type': '[object]'}, + 'description': {'key': 'description', 'type': 'str'}, + 'drop_location': {'key': 'dropLocation', 'type': 'str'}, + 'job_authorization_scope': {'key': 'jobAuthorizationScope', 'type': 'object'}, + 'job_cancel_timeout_in_minutes': {'key': 'jobCancelTimeoutInMinutes', 'type': 'int'}, + 'job_timeout_in_minutes': {'key': 'jobTimeoutInMinutes', 'type': 'int'}, + 'latest_build': {'key': 'latestBuild', 'type': 'Build'}, + 'latest_completed_build': {'key': 'latestCompletedBuild', 'type': 'Build'}, + 'options': {'key': 'options', 'type': '[BuildOption]'}, + 'process_parameters': {'key': 'processParameters', 'type': 'ProcessParameters'}, + 'properties': {'key': 'properties', 'type': 'object'}, + 'repository': {'key': 'repository', 'type': 'BuildRepository'}, + 'retention_rules': {'key': 'retentionRules', 'type': '[RetentionPolicy]'}, + 'tags': {'key': 'tags', 'type': '[str]'}, + 'triggers': {'key': 'triggers', 'type': '[object]'}, + 'variables': {'key': 'variables', 'type': '{BuildDefinitionVariable}'} + } + + def __init__(self, created_date=None, id=None, name=None, path=None, project=None, queue_status=None, revision=None, type=None, uri=None, url=None, _links=None, authored_by=None, draft_of=None, drafts=None, metrics=None, quality=None, queue=None, badge_enabled=None, build=None, build_number_format=None, comment=None, demands=None, description=None, drop_location=None, job_authorization_scope=None, job_cancel_timeout_in_minutes=None, job_timeout_in_minutes=None, latest_build=None, latest_completed_build=None, options=None, process_parameters=None, properties=None, repository=None, retention_rules=None, tags=None, triggers=None, variables=None): + super(BuildDefinition3_2, self).__init__(created_date=created_date, id=id, name=name, path=path, project=project, queue_status=queue_status, revision=revision, type=type, uri=uri, url=url, _links=_links, authored_by=authored_by, draft_of=draft_of, drafts=drafts, metrics=metrics, quality=quality, queue=queue) + self.badge_enabled = badge_enabled + self.build = build + self.build_number_format = build_number_format + self.comment = comment + self.demands = demands + self.description = description + self.drop_location = drop_location + self.job_authorization_scope = job_authorization_scope + self.job_cancel_timeout_in_minutes = job_cancel_timeout_in_minutes + self.job_timeout_in_minutes = job_timeout_in_minutes + self.latest_build = latest_build + self.latest_completed_build = latest_completed_build + self.options = options + self.process_parameters = process_parameters + self.properties = properties + self.repository = repository + self.retention_rules = retention_rules + self.tags = tags + self.triggers = triggers + self.variables = variables + + +__all__ = [ + 'AgentPoolQueue', + 'AgentSpecification', + 'AggregatedResultsAnalysis', + 'AggregatedResultsByOutcome', + 'AggregatedResultsDifference', + 'AggregatedRunsByOutcome', + 'AggregatedRunsByState', + 'ArtifactResource', + 'AssociatedWorkItem', + 'Attachment', + 'AuthorizationHeader', + 'Build', + 'BuildArtifact', + 'BuildBadge', + 'BuildDefinitionRevision', + 'BuildDefinitionStep', + 'BuildDefinitionTemplate', + 'BuildDefinitionTemplate3_2', + 'BuildDefinitionVariable', + 'BuildLogReference', + 'BuildMetric', + 'BuildOption', + 'BuildOptionDefinitionReference', + 'BuildOptionGroupDefinition', + 'BuildOptionInputDefinition', + 'BuildReportMetadata', + 'BuildRepository', + 'BuildRequestValidationResult', + 'BuildResourceUsage', + 'BuildSettings', + 'Change', + 'DataSourceBindingBase', + 'DefinitionReference', + 'DefinitionResourceReference', + 'Deployment', + 'Folder', + 'GraphSubjectBase', + 'IdentityRef', + 'Issue', + 'JobReference', + 'JsonPatchOperation', + 'MinimalRetentionLease', + 'NewRetentionLease', + 'PhaseReference', + 'PipelineGeneralSettings', + 'PipelineReference', + 'ProcessParameters', + 'ProjectRetentionSetting', + 'PullRequest', + 'ReferenceLinks', + 'ReleaseReference', + 'RepositoryWebhook', + 'ResourceRef', + 'RetentionLease', + 'RetentionPolicy', + 'RetentionSetting', + 'SourceProviderAttributes', + 'SourceRepositories', + 'SourceRepository', + 'SourceRepositoryItem', + 'StageReference', + 'SupportedTrigger', + 'TaskAgentPoolReference', + 'TaskDefinitionReference', + 'TaskInputDefinitionBase', + 'TaskInputValidation', + 'TaskOrchestrationPlanReference', + 'TaskReference', + 'TaskSourceDefinitionBase', + 'TeamProjectReference', + 'TestResultsContext', + 'TimelineAttempt', + 'TimelineRecord', + 'TimelineReference', + 'UpdateProjectRetentionSettingModel', + 'UpdateRetentionSettingModel', + 'UpdateStageParameters', + 'VariableGroupReference', + 'WebApiConnectedServiceRef', + 'XamlBuildControllerReference', + 'BuildController', + 'BuildDefinitionReference', + 'BuildDefinitionReference3_2', + 'BuildLog', + 'BuildOptionDefinition', + 'Timeline', + 'VariableGroup', + 'BuildDefinition', + 'BuildDefinition3_2', +] diff --git a/azure-devops/azext_devops/devops_sdk/v6_0/cix/__init__.py b/azure-devops/azext_devops/devops_sdk/v6_0/cix/__init__.py new file mode 100644 index 00000000..b654a5ef --- /dev/null +++ b/azure-devops/azext_devops/devops_sdk/v6_0/cix/__init__.py @@ -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 .models import * +from .cix_client import CixClient + +__all__ = [ + 'ConfigurationFile', + 'CreatedResources', + 'CreatePipelineConnectionInputs', + 'DetectedBuildFramework', + 'DetectedBuildTarget', + 'Operation', + 'OperationReference', + 'OperationResultReference', + 'PipelineConnection', + 'ReferenceLinks', + 'ResourceCreationParameter', + 'TeamProject', + 'TeamProjectReference', + 'Template', + 'TemplateAsset', + 'TemplateDataSourceBinding', + 'TemplateParameterDefinition', + 'TemplateParameters', + 'WebApiTeamRef', + 'CixClient' +] diff --git a/azure-devops/azext_devops/devops_sdk/v6_0/cix/cix_client.py b/azure-devops/azext_devops/devops_sdk/v6_0/cix/cix_client.py new file mode 100644 index 00000000..d0459986 --- /dev/null +++ b/azure-devops/azext_devops/devops_sdk/v6_0/cix/cix_client.py @@ -0,0 +1,171 @@ +# -------------------------------------------------------------------------------------------- +# 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 ...client import Client +from . import models + + +class CixClient(Client): + """Cix + :param str base_url: Service URL + :param Authentication creds: Authenticated credentials. + """ + + def __init__(self, base_url=None, creds=None): + super(CixClient, 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_configurations(self, project, repository_type=None, repository_id=None, branch=None, service_connection_id=None): + """GetConfigurations. + [Preview API] Gets a list of existing configuration files for the given repository. + :param str project: Project ID or project name + :param str repository_type: The type of the repository such as GitHub, TfsGit (i.e. Azure Repos), Bitbucket, etc. + :param str repository_id: The vendor-specific identifier or the name of the repository, e.g. Microsoft/vscode (GitHub) or e9d82045-ddba-4e01-a63d-2ab9f040af62 (Azure Repos) + :param str branch: The repository branch where to look for the configuration file. + :param str service_connection_id: If specified, the ID of the service endpoint to query. Can only be omitted for providers that do not use service endpoints, e.g. TfsGit (i.e. Azure Repos). + :rtype: [ConfigurationFile] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if repository_type is not None: + query_parameters['repositoryType'] = self._serialize.query('repository_type', repository_type, 'str') + if repository_id is not None: + query_parameters['repositoryId'] = self._serialize.query('repository_id', repository_id, 'str') + if branch is not None: + query_parameters['branch'] = self._serialize.query('branch', branch, 'str') + if service_connection_id is not None: + query_parameters['serviceConnectionId'] = self._serialize.query('service_connection_id', service_connection_id, 'str') + response = self._send(http_method='GET', + location_id='8fc87684-9ebc-4c37-ab92-f4ac4a58cb3a', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[ConfigurationFile]', self._unwrap_collection(response)) + + def create_project_connection(self, create_connection_inputs, project): + """CreateProjectConnection. + [Preview API] Creates a new Pipeline connection between the provider installation and the specified project. Returns the PipelineConnection object created. + :param :class:` ` create_connection_inputs: + :param str project: + :rtype: :class:` ` + """ + query_parameters = {} + if project is not None: + query_parameters['project'] = self._serialize.query('project', project, 'str') + content = self._serialize.body(create_connection_inputs, 'CreatePipelineConnectionInputs') + response = self._send(http_method='POST', + location_id='00df4879-9216-45d5-b38d-4a487b626b2c', + version='6.0-preview.1', + query_parameters=query_parameters, + content=content) + return self._deserialize('PipelineConnection', response) + + def get_detected_build_frameworks(self, project, repository_type=None, repository_id=None, branch=None, detection_type=None, service_connection_id=None): + """GetDetectedBuildFrameworks. + [Preview API] Returns a list of build frameworks that best match the given repository based on its contents. + :param str project: Project ID or project name + :param str repository_type: The type of the repository such as GitHub, TfsGit (i.e. Azure Repos), Bitbucket, etc. + :param str repository_id: The vendor-specific identifier or the name of the repository, e.g. Microsoft/vscode (GitHub) or e9d82045-ddba-4e01-a63d-2ab9f040af62 (Azure Repos) + :param str branch: The repository branch to detect build frameworks for. + :param str detection_type: + :param str service_connection_id: If specified, the ID of the service endpoint to query. Can only be omitted for providers that do not use service endpoints, e.g. TfsGit (i.e. Azure Repos). + :rtype: [DetectedBuildFramework] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if repository_type is not None: + query_parameters['repositoryType'] = self._serialize.query('repository_type', repository_type, 'str') + if repository_id is not None: + query_parameters['repositoryId'] = self._serialize.query('repository_id', repository_id, 'str') + if branch is not None: + query_parameters['branch'] = self._serialize.query('branch', branch, 'str') + if detection_type is not None: + query_parameters['detectionType'] = self._serialize.query('detection_type', detection_type, 'str') + if service_connection_id is not None: + query_parameters['serviceConnectionId'] = self._serialize.query('service_connection_id', service_connection_id, 'str') + response = self._send(http_method='GET', + location_id='29a30bab-9efb-4652-bf1b-9269baca0980', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[DetectedBuildFramework]', self._unwrap_collection(response)) + + def get_template_recommendations(self, project, repository_type=None, repository_id=None, branch=None, service_connection_id=None): + """GetTemplateRecommendations. + [Preview API] Returns a list of all YAML templates with weighting based on which would best fit the given repository. + :param str project: Project ID or project name + :param str repository_type: The type of the repository such as GitHub, TfsGit (i.e. Azure Repos), Bitbucket, etc. + :param str repository_id: The vendor-specific identifier or the name of the repository, e.g. Microsoft/vscode (GitHub) or e9d82045-ddba-4e01-a63d-2ab9f040af62 (Azure Repos) + :param str branch: The repository branch which to find matching templates for. + :param str service_connection_id: If specified, the ID of the service endpoint to query. Can only be omitted for providers that do not use service endpoints, e.g. TfsGit (i.e. Azure Repos). + :rtype: [Template] + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + query_parameters = {} + if repository_type is not None: + query_parameters['repositoryType'] = self._serialize.query('repository_type', repository_type, 'str') + if repository_id is not None: + query_parameters['repositoryId'] = self._serialize.query('repository_id', repository_id, 'str') + if branch is not None: + query_parameters['branch'] = self._serialize.query('branch', branch, 'str') + if service_connection_id is not None: + query_parameters['serviceConnectionId'] = self._serialize.query('service_connection_id', service_connection_id, 'str') + response = self._send(http_method='GET', + location_id='63ea8f13-b563-4be7-bc31-3a96eda27220', + version='6.0-preview.1', + route_values=route_values, + query_parameters=query_parameters) + return self._deserialize('[Template]', self._unwrap_collection(response)) + + def create_resources(self, creation_parameters, project): + """CreateResources. + [Preview API] + :param {ResourceCreationParameter} creation_parameters: + :param str project: Project ID or project name + :rtype: :class:` ` + """ + route_values = {} + if project is not None: + route_values['project'] = self._serialize.url('project', project, 'str') + content = self._serialize.body(creation_parameters, '{ResourceCreationParameter}') + response = self._send(http_method='POST', + location_id='43201899-7690-4870-9c79-ab69605f21ed', + version='6.0-preview.1', + route_values=route_values, + content=content) + return self._deserialize('CreatedResources', response) + + def render_template(self, template_parameters, template_id): + """RenderTemplate. + [Preview API] + :param :class:` ` template_parameters: + :param str template_id: + :rtype: :class:`