All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
artifacts_download: useUrl::path_segments_mutfor URL construction to prevent path injection via user-controlled segments.artifacts_download: reject manifest entries containing..path components to prevent path traversal.artifacts_download: normalize blob ID map keys to uppercase for consistent matching against locally-generated IDs.artifacts_download: batch-resolve all file root blob URLs in a single request instead of one per file.artifacts_download: cap deserialization error message previews at 512 bytes.artifacts_download: guardVec::with_capacityagainsti64-to-usizeoverflow on 32-bit targets.artifacts_download: simplifynibble_postype in decompressor (unused boolean removed).
- All generated enum types now implement
std::fmt::Display.
- Update
azure_coreandazure_identityto 0.35.
-
Breaking: Query and path parameters that accept a fixed set of values are now typed as enums instead of
impl Into<String>. This affects 105 parameters across all API areas. Examples:git::items::list/git::items::get:recursion_levelnow takesmodels::VersionControlRecursionType(also applies totfvcandwiki)build::builds::list:status_filtertakesmodels::BuildStatus,result_filtertakesmodels::BuildResult,reason_filtertakesmodels::BuildReason,query_ordertakesmodels::BuildQueryOrderrelease:status_filtertakesmodels::ReleaseStatus,query_ordertakesmodels::ReleaseQueryOrder,deployment_statustakesmodels::DeploymentStatusgit::pull_requests::list:search_criteria_statustakesmodels::PullRequestStatuswit::work_items::get_work_item:expandtakesmodels::WorkItemExpand
The enum types are defined in each module's
modelsand carry the same variant names as the API documentation (e.g.VersionControlRecursionType::Full,BuildStatus::InProgress).
- New
artifacts_downloadhigher-level module for downloading Universal Packages from Azure DevOps Artifacts. - Add example for downloading universal packages (
artifacts_download).
- Update
azure_coreandazure_identityto 0.34. - Improved README: added badges, quickstart guide, authentication section, feature table, MSRV, and updated links to learn.microsoft.com.
- Update
azure_coreandazure_identityto 0.33.
- Update
azure_coreandazure_identityto 0.32.
- Update
azure_coreandazure_identityto 0.30. - Changes to handle API changes in
azure_core:- Replace
azure_core::http::BufResponsewithazure_core::http::RawResponse/AsyncRawResponse - Change
Response::into_body().awaittoResponse::into_model()(now synchronous) - Update
ClientOptions::retryfield to beRetryOptions(no longerOption<RetryOptions>) - Add required
PipelineSendOptionsparameter toPipeline::send() - Update
transport()method to useTransporttype (replacesTransportOptions) - Fix
API_VERSIONreference to use string literal"api-version"instead of non-existentquery_parammodule
- Replace
- Changes to handle API changes in manually written code:
- Update
auth.rsto remove deprecatedResultExt::context()method - Update
date_time.rsto use direct error construction instead ofwith_context()closure - Update
telemetry.rsto useAsyncRawResponseand new construction API
- Update
- Update
azure_coreandazure_identityto 0.28. - Changes to handle API changes in
azure_core:- Replace
azure_core::http::RawResponsewithazure_core::http::BufResponse - Add extra parameter when creating new
azure_core::http::Pipeline
- Replace
- Changes to handle API changes in
azure_identity:- Updated examples to replace
DefaultAzureCredentialwithAzureCliCredential
- Updated examples to replace
- Change
AgentPoolQueuefield to be optional:name
- Change
ProjectReferencefield to be optional:name
- Change
ServiceEndpointProjectReferencefields to be optional:descriptionname
- Change
ServiceEndpointfield to be optional:description
- Change
AgentPoolQueuefield to be optional:pool
- Update
azure_core,azure_identityto 0.27 - Clippy fixes for
needless_lifetimewarnings.
- Update
azure_core,azure_identityto 0.26- Some significant updates needed to handle changes to
azure_core::http::ResponseResponse::into_raw_body()renamedResponse::into_body()Response::into_raw_response()now returnsazure_core::http::RawResponserather thanazure_core::http::ResponseClient::send()now returnsazure_core::http::RawResponserather thanazure_core::http::Response- Fix up examples to work with response changes.
- Some significant updates needed to handle changes to
- Disable wasm32 CI build due to issues with
getrandom
- Update
azure_core,azure_identityto 0.24 - Fix formatting of date-time parameters
- Reapplying a previous fix that was lost
- Update
azure_core,azure_identityto 0.23- Update minimum rust-version to 1.80.0 (required by
azure_core)
- Update minimum rust-version to 1.80.0 (required by
- Add missing
completionOptionsfield toGitPullRequestUpdateOptions.
This is a significant change due to updating to the first offical releases of
azure_core (0.22) and azure_identity (0.22). These crates have a number of
breaking changes over previous versions.
-
Update
azure_core,azure_identityto 0.22. -
ClientBuilder::per_retry_policies()renamed toper_try_policies()to align withazure_coreAPI naming. -
Response::into_body()renamed toResponse::into_raw_body()to align withazure_coreAPI naming. -
Renamed crate features to align with
azure_core:enable_reqwest=>reqwestenable_reqwest_rustls=>reqwest_rustls
-
Notes on changes to
azure_coreAPI:Response::into_body()is renamedResponse::into_raw_body()
-
Notes on changes to
azure_identityAPI:- The credential creation functions now return values wrapped in
Arc<_>, so you no longer need to do this in your client code.- Example:
DefaultAzureCredential::new()previously returnedResult<DefaultAzureCredential>but now returns aResult<Arc<DefaultAzureCredential>>.
- Example:
- The credential creation functions now return values wrapped in
- Change git 'Change::item' field to be optional.
- Discovered that in some returned values this field is not present.
Any code accessing this field now needs to wrap it in an
Option, or deal with the returned value being wrapped in anOption.
- Discovered that in some returned values this field is not present.
Any code accessing this field now needs to wrap it in an
- Clippy fixes for
needless_lifetimewarnings.
- Update
azure_core,azure_identityto 0.21.
- Change
IdentityRefidto be optional- Discovered that in some returned values this field is not present.
Any code accessing this field now needs to wrap it in an
Option, or deal with the returned value being wrapped in anOption.
- Discovered that in some returned values this field is not present.
Any code accessing this field now needs to wrap it in an
- Change
IdentityRefunique_nameto be optional- Discovered that in some returned values this field is not present.
Any code accessing this field now needs to wrap it in an
Option, or deal with the returned value being wrapped in anOption.
- Discovered that in some returned values this field is not present.
Any code accessing this field now needs to wrap it in an
- Update
search_codeexample to demonstrate use of filters.
- Fix datetime model fields being serialized when empty, causing invalid JSON to be sent to ADO for some requests
- Fix clippy failure with empty doc comments.
- Cleanup vsts-api-patcher structure.
- Update
autorustcode generator to latest version fromazure-sdk-for-rust.
- Add missing
distributed_tasksubmodules:eventslogsoidctokenrecords
- Add missing
artifactsSBOM-related data structures.
- Update
azure_core,azure_identityto 0.20.- Change example code
util::get_credentialreturn type fromCredentialtoResult<Credential>, asDefaultAzureCredentialBuilder::build()is now fallible. - Reinstate wasm build in CI pipeline.
- Fix
telemetrycode wasm build.
- Change example code
- Update
vsts-rest-api-specsto latest version- Additional parameters in
approvals_and_checks::ApprovalQueryParametersapprover_statustopuser_ids
- Additional fields in
build::PipelineGeneralSettingsbuilds_enabled_for_forksenable_shell_tasks_args_sanitizing_auditenforce_job_auth_scope_for_forksenforce_no_access_to_secrets_from_forksfork_protection_enabledis_comment_required_for_pull_requestrequire_comments_for_non_team_member_and_non_contributorsrequire_comments_for_non_team_members_only
- Additional field in
build::PullRequestTriggerpipeline_trigger_settings
- Additional field in
git::IdentityRefWithVoteis_reapprove
- Additional parameters in
- Fix clippy failures
- Implement
Responsemethodsinto_raw_response()andas_raw_responsefor all operations, even if they do not return a value. - Replace deprecated
time::Instantwithstd::time::Instant.
- Implement
- Add new
telemetrymodule with a request logger - New example:
telemetry_git_repo_get
- Remove
Optionwrappers fromgit::models::ItemContentfields:contentcontentType
- New example:
git_push
- Change
TeamProjectReferenceto make several fields optional, to allow projects to be created. Any existing code using the following fields will need to be changed to extract the value from theOption.idstatelastUpdateTime
- Change
GitCommitRefto makecommit_idoptional.- Previously
String, nowOption<String> - Any existing code using
commit_idwill need to be changed to extract the value from theOption.
- Previously
- Change definitions of
GitChangeandChangeto reinstate some optional fields that were previously removed in the mistaken belief that they were unused.GitChange:change_idnew_content_templateoriginal_path
Change:new_contentsource_server_itemurl
- Upgrade
azure_core,azure_identityto 0.19 - Change
ADO_SCOPEdefinition to add/.default, asTokenCredential::get_token(...)has changed to take a scope rather than a resource
- Fix response type for
git::items::get_items_batch()
- New example:
git_items_get_items_batch
- New
headersmodule with Azure DevOps custom rate-limiting response header definitions.
- Upgrade
azure_core,azure_identityto 0.18- Note:
AutoRefreshingTokenCredentialis no longer required (and has been removed fromazure_identity), as token refreshing is now built in to each credential provider
- Note:
- New value added to git
ChangeTypeenum:edit, rename
- New value added to git
ChangeTypeenum:delete, sourceRename - New examples:
git_repo_download_zipbuild_source_providers_list
- Updated example:
git_items_getnow includes downloading entire repo as a zip archive
- Enable configuration of per-retry policies on all client builders:
- new
ClientBuildermethod:per_retry_policies(...)
- new
- New example:
work
- New example:
wit_wiql
- Upgrade
azure_core,azure_identityto 0.17
- Add support for WASM builds
- Upgrade
azure_core,azure_identityto 0.16
- Upgrade
azure_core,azure_identityto 0.15
- Update
GitPullRequestUpdateOptionsto add new fieldautoCompleteSetBy - Update
GitCommitRefto makecommitIdandurlfields optional
- Upgrade
azure_core,azure_identityto 0.14 - Update
vsts-rest-api-specsto latest version- Picks up API and docs updates
- Adds new modules:
approvals_and_checksfavoritesecurity_roles
- Removes module:
clt
- Added missing
IntoFutureimplementations for operations that return an empty response - Upgrade
azure_core,azure_identityto 0.13
- New
tokensmodule - Upgrade
azure_core,azure_identityto 0.12
- Specify correct token scope for ADO by default
- Fixed multiple
policyAPI issues
- Fixed definition of git
PolicyConfiguration - Fixed pipeline
Runrequired fields- Changed
finishedDateandresultto optional, as they are not present if run is in progress
- Changed
- Change pipeline
Repositoryfields to be optional:id,type
- Upgrade
azure_core,azure_identityto 0.11 - New examples:
member_entitlement_managementgit_policy_config_list
- Fixed definition of wit
IdentityReference
- New example:
wit_work_item_queries - New example:
test_plan
- Wrapped
WorkItemTrackingResourcelinksin anOption
- Updated dependencies:
azure_coreto 0.10azure_identityto 0.10
- Renamed
witexamples:wit=>wit_work_item_getwit_create_work_item=>wit_work_item_create
- Improved
wit_work_item_getto display all work item relations - Improved
wit_work_item_getto demonstrateget_work_items_batch()
- Fix creating and updating work items
- New example:
wit_create_work_item
- New example:
- Improved
RequestBuilderdocumentation
- Implemented
std::future::IntoFuturefor request builder objects.- Removes need to call
into_future()to finalize request builders.awaitwill implicitly call theIntoFuture::into_future()method. This simplifies request calls. IntoFuturesupport requires Rust 1.64.0 or higher, so this is now enforced by settingrust-versioninCargo.toml.
- Removes need to call
- Examples: created new
utilsmodule with common authentication code.- Updated example authentication code to use
AutoRefreshingTokenCredentialandDefaultAzureCredentialBuilder.
- Updated example authentication code to use
- Updated dependency versions.
-
New examples:
git_items_listgit_items_getbuild_list_sync
-
New features:
enable_reqwest[default]enable_reqwest_rustls- Both of the above enable the corresponding feature in
azure_core
- New examples:
git_repo_get_raw_rspartifacts_listbuild_list_continuation_tokenrelease_logswiki_pages_create_or_updatesearch_repositoriespermissions_report
- Added new fields to
GitPullRequestCreateOptionsmerge_optionscompletion_options
- Fix
distributedTaskvariableGroupProjectReferencesdeserialization ofnullvalue - Fix
extensionManagementparsing offlagsfields- Change type from an
enumto aString, as field value is a comma-separated list
- Change type from an
- Revert all
GraphSubjectBasefields to be wrapped inOption - Upgrade
azure_coreto 0.5,azure_identityto 0.6AzureCliCredentialmust now be created viaazure_identity::AzureCliCredential::new()
- Upgrade
autorustcode generator- New
send()function on operations that enables access to full response details (headers, raw body data)
- New
- Add missing
distributedTaskElasticPooloperations - Patch
hooksspec:InputValidationfieldsminValueandmaxValueneed to benumber/floatSubscriptionfieldprobationRetriesneeds to beinteger/int32
- New examples:
code_searchhooks_listims_queryextension_management_listtest_rust_list
- Fixed up
GitCommitRefchange_countsfield type - Added back some required
buildstructure Option wrappers - Fixed formatting of date-time URL parameters
- Added
ims(Identity Management) example:ims_query - Fixed Pull Request create function
git::pull_requests::create() - Added
git_pr_createexample
- Implement custom date-time serde module to gracefully handle
0001-01-01T00:00:00 - Fixed response types for git::commits::get_changes()
- If response deserialization fails, include response content in error
- Removed Option wrappers on selected structs in
witandstatus
- Example improvements:
- New examples:
- wit (work items)
- status
- client_pipeline_policy
- policy
- Updated examples to use
ClientBuilder, eliminating default client arguments - Added logging via
env_logger
- New examples:
- Added
Credential::Unauthenticatedto enable unauthenticated operations
- Upgraded to latest
autorustcode generator fromazure-sdk-for-rust- Removed
operationmodules - all operations move up one level in the module hierarchy. - Second-level client functions changed to have a
_clientsuffix, e.g.client.repositories().get_repository(...)=>client.repositories_client().get_repository(...).
- New
options(azure_core::ClientOptions) parameter required when creating clients, which allows the HTTP pipeline to be customised with middleware. - Fields declared in the spec as
date-timeformat now parsed into Rusttime::OffsetDateTimetypes rather thanString.
- Removed
- Updated some struct fields to remove Option wrappers to make the values easier to use.
- Updated some
linksfields to have a struct with known fields, rather than a JsonValue.
pipeline_previewexample
- API documentation: autogenerate builder function descriptions.
- Upgrade Azure SDK dependencies:
- azure_core: 0.3
- azure_identity: 0.4
- Move
Credentialdefinition fromauthmodule to root, to separate it from all the feature modules.authmodule is now private.- To migrate change
use azure_devops_rust_api::auth::Credentialtouse azure_devops_rust_api::Credential
- To migrate change
- API documentation: autogenerate function description and parameter descriptions from fields in the OpenAPI spec.
- Credentials now need to be provided via a new type
auth::Credentialthat supports both PAT and TokenCredential types. For more details see examples and docs.rs.
- Support for PAT authentication
- Remove use of
unwrap()from examples.
0.1.3 - 2022-07-29
- Remove
--no-depsflag for docs.rs documentation generation.
0.1.2 - 2022-07-29
- Set
--no-depsflag for docs.rs documentation generation.
0.1.1 - 2022-07-29
- Enable
all-featuresflag for docs.rs documentation generation.
0.1.0 - 2022-07-29
- Initial release.