openapi: 3.1.0 info: title: Azure DevOps Artifacts API description: > REST API for managing packages, feeds, and artifact dependencies in Azure Artifacts. Supports NuGet, npm, Maven, Python, and Universal package formats in private or public feeds. Enables programmatic management of package feeds, discovery of packages and their versions, and lifecycle operations such as deprecating or deleting package versions. version: '7.1' contact: name: Microsoft Azure DevOps url: https://learn.microsoft.com/en-us/rest/api/azure/devops/artifacts/ license: name: MIT url: https://opensource.org/licenses/MIT servers: - url: https://feeds.dev.azure.com/{organization}/{project}/_apis description: Azure DevOps Artifacts API (project-scoped) variables: organization: description: Azure DevOps organization name or ID default: myorganization project: description: Azure DevOps project name or ID default: myproject security: - bearerAuth: [] - basicAuth: [] tags: - name: Feeds description: Operations for managing artifact feeds - name: Package Versions description: Operations for managing specific package versions - name: Packages description: Operations for listing and managing packages within feeds paths: /packaging/feeds: get: operationId: feeds_list summary: Azure DevOps List feeds description: > Returns a list of package feeds accessible within the organization or project. Feeds are the primary containers for packages in Azure Artifacts. A project can have multiple feeds with different visibility and upstream source settings. tags: - Feeds parameters: - $ref: '#/components/parameters/ApiVersion' - name: feedRole in: query required: false description: Filter feeds by the current user's role schema: type: string enum: [none, reader, contributor, administrator] - name: includeDeletedUpstreams in: query required: false description: Whether to include feeds with deleted upstream sources schema: type: boolean - name: includeUrls in: query required: false description: Whether to include package manager endpoint URLs schema: type: boolean responses: '200': description: List of feeds returned successfully content: application/json: schema: type: object properties: count: type: integer description: Number of feeds returned value: type: array items: $ref: '#/components/schemas/Feed' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' post: operationId: feeds_create summary: Azure DevOps Create a feed description: > Creates a new artifact feed. You can configure whether the feed allows upstream sources (for fetching public packages), its visibility (project-wide or organization-wide), and whether the feed is public or requires authentication. tags: - Feeds parameters: - $ref: '#/components/parameters/ApiVersion' requestBody: required: true description: Feed creation parameters content: application/json: schema: $ref: '#/components/schemas/FeedCreateRequest' example: name: 'my-packages' description: 'Internal NuGet packages feed' upstreamEnabled: true upstreamSources: - id: 'nuget-gallery' name: 'NuGet Gallery' upstreamSourceType: public protocol: nuget location: 'https://api.nuget.org/v3/index.json' hideDeletedPackageVersions: true responses: '200': description: Feed created successfully content: application/json: schema: $ref: '#/components/schemas/Feed' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' /packaging/feeds/{feedId}: get: operationId: feeds_get summary: Azure DevOps Get a feed description: > Returns detailed information about a specific feed, including its configuration, upstream sources, and visibility settings. The feedId can be either the feed GUID or its name. tags: - Feeds parameters: - $ref: '#/components/parameters/ApiVersion' - $ref: '#/components/parameters/FeedId' - name: includeDeletedUpstreams in: query required: false description: Whether to include deleted upstream sources in the response schema: type: boolean responses: '200': description: Feed returned successfully content: application/json: schema: $ref: '#/components/schemas/Feed' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' patch: operationId: feeds_update summary: Azure DevOps Update a feed description: > Updates properties of a feed such as its name, description, upstream sources, and retention policy. Only fields provided in the request body will be changed. tags: - Feeds parameters: - $ref: '#/components/parameters/ApiVersion' - $ref: '#/components/parameters/FeedId' requestBody: required: true description: Feed properties to update content: application/json: schema: $ref: '#/components/schemas/FeedUpdateRequest' responses: '200': description: Feed updated successfully content: application/json: schema: $ref: '#/components/schemas/Feed' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' delete: operationId: feeds_delete summary: Azure DevOps Delete a feed description: > Permanently deletes a feed and all packages it contains. This operation cannot be undone. All packages will be permanently removed from the feed. Consumers of packages from this feed will lose access immediately. tags: - Feeds parameters: - $ref: '#/components/parameters/ApiVersion' - $ref: '#/components/parameters/FeedId' responses: '204': description: Feed deleted successfully '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' /packaging/feeds/{feedId}/packages: get: operationId: packages_list summary: Azure DevOps List packages in a feed description: > Returns a list of packages in a specific feed. Supports filtering by package name, protocol type (nuget, npm, maven, pypi, upack), and whether to include deleted packages. tags: - Packages parameters: - $ref: '#/components/parameters/ApiVersion' - $ref: '#/components/parameters/FeedId' - name: protocolType in: query required: false description: Filter packages by protocol type schema: type: string enum: [nuget, npm, maven, pypi, upack, cargo, swift] - name: packageNameQuery in: query required: false description: Filter packages whose names contain this string schema: type: string - name: normalizedPackageName in: query required: false description: Exact package name match (normalized form) schema: type: string - name: includeUrls in: query required: false description: Whether to include package manager URLs in the response schema: type: boolean - name: includeAllVersions in: query required: false description: Whether to include all versions or only the latest schema: type: boolean - name: isListed in: query required: false description: Filter by listed status (true=published, false=unlisted) schema: type: boolean - name: getTopPackageVersions in: query required: false description: Whether to include the top versions for each package schema: type: boolean - name: isDeleted in: query required: false description: Whether to include deleted packages schema: type: boolean - name: $top in: query required: false description: Maximum number of packages to return schema: type: integer - name: $skip in: query required: false description: Number of packages to skip (for pagination) schema: type: integer - name: continuationToken in: query required: false description: Continuation token for paginated results schema: type: string responses: '200': description: List of packages returned successfully content: application/json: schema: type: object properties: count: type: integer value: type: array items: $ref: '#/components/schemas/Package' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' /packaging/feeds/{feedId}/packages/{packageId}: get: operationId: packages_get summary: Azure DevOps Get package details description: > Returns detailed information about a specific package, including all versions, its protocol type, and normalized name. The packageId is the GUID assigned to the package, not the package name. tags: - Packages parameters: - $ref: '#/components/parameters/ApiVersion' - $ref: '#/components/parameters/FeedId' - name: packageId in: path required: true description: GUID identifier of the package schema: type: string format: uuid - name: includeAllVersions in: query required: false description: Whether to include all versions or only the latest schema: type: boolean - name: includeUrls in: query required: false description: Whether to include package manager URLs schema: type: boolean - name: isListed in: query required: false description: Filter versions by listed status schema: type: boolean - name: isDeleted in: query required: false description: Whether to include deleted versions schema: type: boolean responses: '200': description: Package details returned successfully content: application/json: schema: $ref: '#/components/schemas/Package' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' /packaging/feeds/{feedId}/packages/{packageId}/versions/{packageVersionId}: delete: operationId: packageVersions_delete summary: Azure DevOps Delete a package version description: > Deletes a specific version of a package from the feed. By default this moves the version to the recycle bin. Use the permanentlyDelete parameter to permanently remove it. Once permanently deleted, the version cannot be recovered and the same version number cannot be reused. tags: - Package Versions parameters: - $ref: '#/components/parameters/ApiVersion' - $ref: '#/components/parameters/FeedId' - name: packageId in: path required: true description: GUID identifier of the package schema: type: string format: uuid - name: packageVersionId in: path required: true description: GUID identifier of the package version schema: type: string format: uuid responses: '204': description: Package version deleted successfully '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' components: securitySchemes: bearerAuth: type: http scheme: bearer description: Azure AD OAuth 2.0 bearer token basicAuth: type: http scheme: basic description: Basic authentication using a Personal Access Token (PAT). Use any string as the username and the PAT as the password, then base64-encode the result. parameters: ApiVersion: name: api-version in: query required: true description: Azure DevOps REST API version. Use 7.1 for the latest stable version. schema: type: string default: '7.1' enum: ['7.1', '7.0', '6.0'] FeedId: name: feedId in: path required: true description: Feed GUID or feed name schema: type: string responses: BadRequest: description: Bad request - invalid parameters or request body content: application/json: schema: $ref: '#/components/schemas/ApiError' Unauthorized: description: Unauthorized - missing or invalid authentication credentials content: application/json: schema: $ref: '#/components/schemas/ApiError' Forbidden: description: Forbidden - insufficient permissions to perform this operation content: application/json: schema: $ref: '#/components/schemas/ApiError' NotFound: description: Not found - the requested resource does not exist content: application/json: schema: $ref: '#/components/schemas/ApiError' schemas: Feed: type: object description: An Azure Artifacts package feed properties: id: type: string format: uuid description: Unique GUID identifier of the feed name: type: string description: Display name of the feed example: 'my-packages' description: type: string description: Description of the feed and its contents url: type: string format: uri description: URL to access this feed via the REST API upstreamEnabled: type: boolean description: Whether upstream sources are enabled for this feed upstreamSources: type: array description: Upstream package sources configured for this feed items: $ref: '#/components/schemas/UpstreamSource' hideDeletedPackageVersions: type: boolean description: Whether to hide deleted package versions from package listings defaultViewId: type: string format: uuid description: ID of the default view for this feed views: type: array description: Views defined for this feed (e.g., @local, @prerelease, @release) items: $ref: '#/components/schemas/FeedView' isReadOnly: type: boolean description: Whether the feed is read-only deletedDate: type: string format: date-time nullable: true description: Date the feed was deleted (null if active) project: type: object description: Project this feed belongs to properties: id: type: string format: uuid name: type: string _links: type: object additionalProperties: type: object properties: href: type: string format: uri FeedCreateRequest: type: object description: Parameters for creating a new feed required: - name properties: name: type: string description: Name for the new feed example: 'my-packages' description: type: string description: Description of the feed upstreamEnabled: type: boolean description: Whether to enable upstream sources default: true upstreamSources: type: array description: Upstream package sources to configure items: $ref: '#/components/schemas/UpstreamSource' hideDeletedPackageVersions: type: boolean description: Whether to hide deleted package versions default: true badgesEnabled: type: boolean description: Whether to enable package badges default: false FeedUpdateRequest: type: object description: Parameters for updating a feed properties: name: type: string description: New name for the feed description: type: string description: Updated description upstreamEnabled: type: boolean description: Whether to enable/disable upstream sources upstreamSources: type: array description: Updated list of upstream sources items: $ref: '#/components/schemas/UpstreamSource' hideDeletedPackageVersions: type: boolean description: Whether to hide deleted versions badgesEnabled: type: boolean description: Whether to enable package badges UpstreamSource: type: object description: An upstream package source configured for a feed properties: id: type: string description: Upstream source identifier name: type: string description: Display name of the upstream source example: 'NuGet Gallery' upstreamSourceType: type: string description: Type of upstream source enum: [public, internal] protocol: type: string description: Package protocol type enum: [nuget, npm, maven, pypi, upack, cargo, swift] location: type: string format: uri description: URL of the upstream package registry example: 'https://api.nuget.org/v3/index.json' status: type: string description: Current status of the upstream source enum: [ok, disabled] deletedDate: type: string format: date-time nullable: true FeedView: type: object description: A view of a feed (e.g., @local, @prerelease, @release) properties: id: type: string format: uuid description: View ID name: type: string description: View name (e.g., '@local', '@release') example: '@release' type: type: string description: View type enum: [none, release, implicit] url: type: string format: uri _links: type: object additionalProperties: type: object properties: href: type: string format: uri Package: type: object description: A package in an Azure Artifacts feed properties: id: type: string format: uuid description: Unique GUID identifier of the package name: type: string description: Display name of the package example: 'MyCompany.MyLibrary' normalizedName: type: string description: Normalized (lowercase) version of the package name example: 'mycompany.mylibrary' protocolType: type: string description: Package manager protocol type enum: [nuget, npm, maven, pypi, upack, cargo, swift] versions: type: array description: List of available versions (if requested) items: $ref: '#/components/schemas/PackageVersion' url: type: string format: uri description: URL to access this package via the REST API _links: type: object additionalProperties: type: object properties: href: type: string format: uri PackageVersion: type: object description: A specific version of a package properties: id: type: string format: uuid description: Unique GUID identifier of this version version: type: string description: Version string (e.g., '1.2.3' or '1.0.0-beta.1') example: '1.2.3' normalizedVersion: type: string description: Normalized version string for comparison example: '1.2.3' isLatest: type: boolean description: Whether this is the latest stable version isListed: type: boolean description: Whether the version is listed (visible in package managers) storageId: type: string description: Storage identifier for the package files views: type: array description: Feed views this version is promoted to items: $ref: '#/components/schemas/FeedView' deletedDate: type: string format: date-time nullable: true description: Date the version was deleted (null if active) publishDate: type: string format: date-time description: Date and time this version was published sourceChain: type: array description: Upstream source chain for packages from upstream sources items: type: object properties: id: type: string name: type: string upstreamSourceType: type: string protocol: type: string location: type: string format: uri url: type: string format: uri ApiError: type: object description: Error response from the Azure DevOps API properties: id: type: string format: uuid message: type: string typeName: type: string typeKey: type: string errorCode: type: integer eventId: type: integer