{"id":37024122,"url":"https://github.com/hkarthik7/azure-devops-java-sdk","last_synced_at":"2026-02-27T09:26:19.062Z","repository":{"id":37014612,"uuid":"316141686","full_name":"hkarthik7/azure-devops-java-sdk","owner":"hkarthik7","description":"Java SDK for managing Azure DevOps services","archived":false,"fork":false,"pushed_at":"2025-12-05T06:48:19.000Z","size":3941,"stargazers_count":44,"open_issues_count":1,"forks_count":29,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-12-08T14:33:24.376Z","etag":null,"topics":["api","azure-devops","azure-devops-java-api","azuredevops","devops","java","java-azure-devops-sdk","vsts"],"latest_commit_sha":null,"homepage":"https://azure-devops-java-sdk-docs.readthedocs.io/en/latest/?badge=latest","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hkarthik7.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-11-26T06:26:02.000Z","updated_at":"2025-11-05T08:24:34.000Z","dependencies_parsed_at":"2023-01-17T13:16:03.641Z","dependency_job_id":"8fa98552-cfbb-4392-840f-c95037e948a4","html_url":"https://github.com/hkarthik7/azure-devops-java-sdk","commit_stats":null,"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/hkarthik7/azure-devops-java-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkarthik7%2Fazure-devops-java-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkarthik7%2Fazure-devops-java-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkarthik7%2Fazure-devops-java-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkarthik7%2Fazure-devops-java-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hkarthik7","download_url":"https://codeload.github.com/hkarthik7/azure-devops-java-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkarthik7%2Fazure-devops-java-sdk/sbom","scorecard":{"id":466085,"data":{"date":"2025-08-11","repo":{"name":"github.com/hkarthik7/azure-devops-java-sdk","commit":"c0e2fbd2d5be10449ec9d151ceb31fe8558e55be"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":3,"reason":"2 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/maven.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":1,"reason":"Found 3/20 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/hkarthik7/azure-devops-java-sdk/maven.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/hkarthik7/azure-devops-java-sdk/maven.yml/main?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v6.0.3 not signed: https://api.github.com/repos/hkarthik7/azure-devops-java-sdk/releases/216656075","Warn: release artifact v6.0.2 not signed: https://api.github.com/repos/hkarthik7/azure-devops-java-sdk/releases/201911157","Warn: release artifact v6.0.1 not signed: https://api.github.com/repos/hkarthik7/azure-devops-java-sdk/releases/192918276","Warn: release artifact v6.0.0 not signed: https://api.github.com/repos/hkarthik7/azure-devops-java-sdk/releases/187463423","Warn: release artifact v5.0.13 not signed: https://api.github.com/repos/hkarthik7/azure-devops-java-sdk/releases/175862846","Warn: release artifact v6.0.3 does not have provenance: https://api.github.com/repos/hkarthik7/azure-devops-java-sdk/releases/216656075","Warn: release artifact v6.0.2 does not have provenance: https://api.github.com/repos/hkarthik7/azure-devops-java-sdk/releases/201911157","Warn: release artifact v6.0.1 does not have provenance: https://api.github.com/repos/hkarthik7/azure-devops-java-sdk/releases/192918276","Warn: release artifact v6.0.0 does not have provenance: https://api.github.com/repos/hkarthik7/azure-devops-java-sdk/releases/187463423","Warn: release artifact v5.0.13 does not have provenance: https://api.github.com/repos/hkarthik7/azure-devops-java-sdk/releases/175862846"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 21 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T12:32:50.372Z","repository_id":37014612,"created_at":"2025-08-19T12:32:50.372Z","updated_at":"2025-08-19T12:32:50.372Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408798,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","azure-devops","azure-devops-java-api","azuredevops","devops","java","java-azure-devops-sdk","vsts"],"created_at":"2026-01-14T02:54:42.029Z","updated_at":"2026-02-27T09:26:19.043Z","avatar_url":"https://github.com/hkarthik7.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# azure-devops-java-sdk\n\n# :loudspeaker: Legacy Api is decommissioned in v7.0.0. :exclamation::heavy_exclamation_mark:\n\n[![Build Status](https://dev.azure.com/harishkarthic/azure-devops-java-sdk/_apis/build/status/hkarthik7.azure-devops-java-sdk?branchName=main)](https://dev.azure.com/harishkarthic/azure-devops-java-sdk/_build/latest?definitionId=8\u0026branchName=main)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/hkarthik7/azure-devops-java-sdk/blob/main/LICENSE)\n[![Documentation Status](https://readthedocs.org/projects/azure-devops-java-sdk-docs/badge/?version=latest)](https://azure-devops-java-sdk-docs.readthedocs.io/en/latest/?badge=latest)\n[![Maven Central](https://img.shields.io/maven-central/v/io.github.hkarthik7/azd.svg)](https://search.maven.org/artifact/io.github.hkarthik7/azd/7.0.0/jar)\n\n**azd** library provides a convenient way to manage and interact with **Azure DevOps Services** REST API with ease. This SDK offers a set of APIs and utilities\nwith declarative syntax and provide functionalities to the significant services.\n\nYou can view the [blog post](https://hkarthik7.github.io/azure%20devops/2020/12/04/AzureDevOpsJavaSDK.html) for details about the library.\n\n## Features\n\n- **Pagination**: For the APIs that return continuation token in the header, **azd** constructs the next page `url` and returns it with the response.\n- **Retry**: Automatic retry is enabled and can be configured.\n- **Proxy**: Configure proxy for the requests and optionally with proxy authentication.\n- **Fluent API**: Request construction with fluent Api syntax.\n\n## Documentation\n\n- [Javadocs](https://hkarthik7.github.io/azd-docs/)\n- [Examples](https://github.com/hkarthik7/azure-devops-java-sdk/blob/main/examples)\n- [Read the docs](https://azure-devops-java-sdk-docs.readthedocs.io/en/latest/)\n\n## Getting Started\n\n### Install the SDK\n\nTo download the library and use it in your project, just add below in your pom.xml file.\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.github.hkarthik7\u003c/groupId\u003e\n  \u003cartifactId\u003eazd\u003c/artifactId\u003e\n  \u003cversion\u003e7.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n**Java docs**\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.github.hkarthik7\u003c/groupId\u003e\n    \u003cartifactId\u003eazd\u003c/artifactId\u003e\n    \u003cversion\u003e7.0.0\u003c/version\u003e\n    \u003cclassifier\u003ejavadoc\u003c/classifier\u003e\n\u003c/dependency\u003e\n```\n\n**Source jar**\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.github.hkarthik7\u003c/groupId\u003e\n    \u003cartifactId\u003eazd\u003c/artifactId\u003e\n    \u003cversion\u003e7.0.0\u003c/version\u003e\n    \u003cclassifier\u003esources\u003c/classifier\u003e\n\u003c/dependency\u003e\n```\n\n### Choose authentication provider\n\n- Choose the authentication provider.\n\n**Authentication using personal access token**\n\n```java\npublic class Main {\n    public static void main(String[] args) {\n        String personalAccessToken = \"myToken\";\n        String project = \"myProject\";\n        String baseUrl = \"https://dev.azure.com/{organization}\";\n        // or TFS URL\n        String baseUrl = \"https://{server:port}/tfs/{collection}\";\n\n        AccessTokenCredential pat = new PersonalAccessTokenCredential(baseUrl, project, personalAccessToken);\n    }\n}\n```\n\n**Authentication using OAuth token**\n\n- [Reference documentation](https://learn.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/azure-devops-oauth?view=azure-devops)\n\n```java\npublic class Main {\n    public static void main(String[] args) {\n        String project = \"myProject\";\n        String baseUrl = \"https://dev.azure.com/{organization}\";\n        // or TFS URL\n        String baseUrl = \"https://{server:port}/tfs/{collection}\";\n\n        String appSecret = \"registeredAppSecret\";\n        String authorizationCode = \"short lived auth code\";\n        String callBackUrl = \"redirect or callback url here\";\n\n        AccessTokenCredential oauth = new OAuthAccessTokenCredential(baseUrl, project, appSecret, authorizationCode, callBackUrl);\n    }\n}\n```\n\n**Authentication using service principal**\n\nTo use spn authentication you should create a new app registration in Entra ID, grant Api permissions on Azure DevOps, select right scope \nand grant admin consent.\n\n```java\npublic class Main {\n    public static void main(String[] args) {\n        String project = \"myProject\";\n        String baseUrl = \"https://dev.azure.com/{organization}\";\n        // or TFS URL\n        String baseUrl = \"https://{server:port}/tfs/{collection}\";\n\n        String tenantId = \"tenantId\";\n        String clientId = \"clientId\";\n        String clientSecret = \"clientSecret\";\n\n        AccessTokenCredential spn = new ServicePrincipalAccessTokenCredential(\n                baseUrl,\n                project, tenantId,\n                clientId, clientSecret);\n    }\n}\n```\n\n- Sample usage\n\n```java\n\npublic class Main {\n    public static void main(String[] args) {\n        // Create client object.\n        AzDServiceClient client = AzDService.builder().authentication(pat).buildClient();\n        // or\n        AzDServiceClient client = AzDService.builder().authentication(oauth).buildClient();\n        // or\n        AzDServiceClient client = AzDService.builder().authentication(spn).buildClient();\n\n        try {\n            // Get the list of projects. This return a future object.\n            CompletableFuture\u003cProjects\u003e futureProjects = client.core().projects().listAsync();\n\n            // All the Apis have overloaded methods. To get the list of project run,\n            Projects projects = client.core().projects().list();\n\n            projects.stream()\n                    .map(Project::getName)\n                    .forEach(System.out::println);\n\n            // Create default Scrum project.\n            ProjectCreationParameters projectParams = new ProjectCreationParameters();\n            projectParams.name = \"My new project\";\n            projectParams.description = \"New sample project.\";\n            projectParams.templateTypeId = \"6b724908-ef14-45cf-84f8-768b5384da45\";\n            projectParams.sourceControlType = \"Git\";\n\n            client.core().projects().create(projectParams);\n\n            futureProjects.join();\n\n            // List all repositories\n            client.git().repositories().listAsync();\n        } catch (AzDException e1) {\n            e1.printStackTrace();\n        }\n    }\n\n}\n```\n\n- Pagination\n\nApis that returns `x-ms-continuation` token has a method `getNextPageLink()` that constructs the next page url with continuation token appended. This can then\nbe used to query next set of results.\n\n```java\npublic class Main {\n    public static void main(String[] args) {\n        Builds builds = client.build().builds().list(r -\u003e {\n            r.queryParameters.top = 10;\n            r.queryParameters.queryOrder = BuildQueryOrder.START_TIME_DESCENDING;\n            r.queryParameters.reasonFilter = BuildReason.ALL;\n        });\n        if (builds != null)\n            // Get current set of results.\n            builds.getBuildResults().stream().map(b -\u003e Integer.toString(b.getId())).collect(Collectors.joining(\", \"));\n        while (builds != null) {\n            // Get next page\n            builds = ClientRequest.builder(client.accessTokenCredential())\n                    .URI(builds.getNextPageLink())\n                    .build()\n                    .execute(Builds.class);\n            if (builds.getNextPageLink() == null) break;\n            else\n                builds.getBuildResults().stream().map(b -\u003e Integer.toString(b.getId())).collect(Collectors.joining(\", \"));\n        }\n    }\n}\n```\n\n- Proxy\n\nSet proxy configuration and optionally with proxy authentication.\n\n```java\npublic class Main {\n    public static void main(String[] args) {\n        ProxyConfiguration proxyConfiguration = new ProxyConfiguration();\n        proxyConfiguration.proxyUrl = \"http://localhost\";\n        proxyConfiguration.proxyPort = 8888;\n\n        // Optionally with username and password\n        proxyConfiguration.proxyUsername = System.getenv(\"http.proxy_username\");\n        proxyConfiguration.proxyPassword = System.getenv(\"http.proxy_password\");\n        proxyConfiguration.noProxyHosts = List.of(\"hostname\");\n\n        client.configuration().proxy(proxyConfiguration);\n    }\n}\n```\n\n- Helpers package\n\nHelper methods in legacy APIs are re-implemented in `helpers` package. The Apis in helpers package are easy to use reusable code that extends from new implementation.\n\n**Easily clone a build pipeline**\n\n```java\npublic class Main {\n    public static void main(String[] args) {\n        try {\n            // Clone an existing pipeline with the pipeline name\n            String ciName = \"DeployTo-WebApp-CI\";\n            String ciCloneName = \"DeployTo-WebApp-CI-Copy\";\n\n            client.helpers().build().cloneBuildDefinition(ciName, ciCloneName);\n\n        } catch (AzDException e1) {\n            e1.printStackTrace();\n        }\n    }\n\n}\n```\n\n**Fork a repository**\n\n```java\npublic class Main {\n    public static void main(String[] args) {\n        try {\n            // Fork a repository\n            GitRepository repo = client.git().repositories().get(\"myRepo\");\n            String projectId = repo.getProject().getId();\n\n            GitRepository parentRepo = client.git().repositories().get(\"myParentRepo\");\n            String parentProjectId = parentRepo.getProject().getId();\n\n            client.helpers().git().createForkRepository(repo.getName(), projectId, parentProjectId, parentRepo.getName());\n\n        } catch (AzDException e1) {\n            e1.printStackTrace();\n        }\n    }\n}\n```\n\n- Advanced\n\n**Create your own extension or call any Azure DevOps Api**\n\nFor instance, call Identities Api - [documentation](https://learn.microsoft.com/en-us/rest/api/azure/devops/ims/identities/read-identities?view=azure-devops-rest-7.1\u0026tabs=HTTP#identity)\n\nUse the script under [tools](https://github.com/hkarthik7/azure-devops-java-sdk/tree/main/tools) directory to automatically generate the Identity model class as mentioned\n[here](https://learn.microsoft.com/en-us/rest/api/azure/devops/ims/identities/read-identities?view=azure-devops-rest-7.1\u0026tabs=HTTP#identity).\n\n```java\npublic class Main {\n    public static void main(String[] args) {\n        try {\n            // Get the location URL\n            // This returns https://vssps.dev.azure.com/{organization}\n            String locationUrl = client.locations().getUrl(ResourceId.IDENTITIES);\n            System.out.println(locationUrl);\n\n            // Get the descriptor of authenticated user.\n            String descriptors = client.locations().getConnectionData().getAuthenticatedUser().getDescriptor();\n\n            // Construct the request URI\n            URI requestUri = UrlBuilder.fromBaseUrl(locationUrl) // https://vssps.dev.azure.com/{organization}\n                    .appendPath(Constants.APIS_RELATIVE_PATH) // /_apis\n                    .appendPath(\"identities\") // /identities\n                    .appendQueryString(Constants.API_VERSION, ApiVersion.IDENTITY) // ?api-version=7.1\n                    .appendQueryString(\"descriptors\", descriptors) // \u0026descriptors={descriptors}\n                    .build(); // https://vssps.dev.azure.com/{organization}/_apis/identities?api-version=7.1\n\n            System.out.println(requestUri);\n\n            // Call Azure DevOps REST API.\n            String response = ClientRequest.builder(client.accessTokenCredential())\n                    .URI(requestUri)\n                    .build()\n                    .executeString(); // Or use Async method\n\n            System.out.println(response);\n\n        } catch (AzDException e1) {\n            e1.printStackTrace();\n        }\n    }\n}\n```\n\n## Documentation vs Api usage\n\nClient object is constructed in a way that you navigate the documentation.\n\n![Documentation](.github/screencaptures/doc_snip_1.png)\n\n### vs\n\n![Client](.github/screencaptures/client_snip_2.png)\n\n## Release Notes\n\n- [Change Log](CHANGELOG.md)\n\n## Dependencies\n\n| NAME                       | VERSION |\n| -------------------------- |---------|\n| com.fasterxml.jackson.core | v2.19.0 |\n\n## Build Locally\n\nYou are going to need JDK version 11 or above and can be downloaded from [here](https://www.oracle.com/java/technologies/javase-downloads.html).\nDownload Maven from the [official website](https://maven.apache.org/download.cgi). Once it is installed add `JAVA_HOME` to the path as Maven is\ngoing to need it. You can check if Maven is installed correctly by running `mvn -v`.\n\nOnce you have installed `JDK` and `Maven` you can then,\n\nClone the repository and navigate to root of the folder where `pom.xml` is placed.\n\n- Run `mvn clean` to clean the target folder if any exists\n- Update `_unitTest.json` with your organisation name, project name and personal access token.\n- Run `mvn test` to run unit tests\n- Run `mvn package` to install the dependencies and create the resultant `.jar` file.\n\n## License\n\nThis project is licensed under [MIT](LICENSE)\n\n## Contributors\n\nSee [Contribution Guidelines](.github/CONTRIBUTING.md)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhkarthik7%2Fazure-devops-java-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhkarthik7%2Fazure-devops-java-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhkarthik7%2Fazure-devops-java-sdk/lists"}