Azure / Azure/azure-rest-api-specs
[ACR] Publish data-plane artifact streaming operations in the Container Registry spec
Nobody has claimed this yet.
- Dominant language
- TypeSpec
- Stars
- 3.1k
- Forks
- 6k
- Avg merge
- 2d 21h
- Merged PRs (30d)
- 432
Description
Request
Please publish the ACR Artifact Streaming data-plane operations in the containerregistry/data-plane/Registry TypeSpec/OpenAPI so the typed SDKs (Go azcontainerregistry, Python azure-containerregistry, JS, .NET) can expose them.
Context
The operations are already implemented on the service and shipped via Azure CLI as az acr artifact-streaming ... (command source, product doc: https://learn.microsoft.com/azure/container-registry/container-registry-artifact-streaming). However, the REST contract is not declared in this repo — searching containerregistry/data-plane/Registry/{stable,preview}/** for convertPushedImages, _streaming, or enableArtifactStreaming returns zero hits.
Consequence: any non-Python SDK consumer (we're in Go) has to hand-roll an HTTP client against an undocumented path versioned as /acr/v1/ with no api-version query parameter. We will have to do this in our project (a Kubernetes operator managing ACR), but we'd much rather depend on a generated SDK method once the spec lands.
Operations to publish (extracted from the Azure CLI source)
All paths are against https://{registry}.azurecr.io. Auth: standard ACR data-plane Bearer (AAD → ACR refresh token → ACR access token with repository:{repo}:pull,push scope).
| Operation | HTTP | Path | Request body | Response |
|---|---|---|---|---|
| Get repository streaming config | GET |
/acr/v1/{repository}/_streaming |
— | 200 JSON |
| Enable/disable auto-convert on repository | POST |
/acr/v1/{repository}/_streaming |
{"convertPushedImages": bool, "conversionFormat": "overlaybd", "conversionVersion": "v1"} |
200 |
| Convert a specific image to streaming | POST |
/acr/v1/{repository}/_streaming/{digest} |
{"conversionFormat": "overlaybd", "conversionVersion": "v1"} |
202 {"id": "<operationId>", ...} |
| Get conversion operation status | GET |
/acr/v1/{repository}/_operations/{operationId} |
— | 200 {"id","status","progress",...} |
| Cancel conversion operation | POST |
/acr/v1/{repository}/_operations/{operationId}:cancel |
— | 200 |
The natural extension point on the existing model is RepositoryWriteableProperties (today canDelete/canList/canRead/canWrite) — or a new sibling resource representation under the repository.
Asks
- Publish these operations in the data-plane Registry spec (preview is fine — the CLI command is marked
is_preview=True). - Assign an
api-versionlabel so callers don't depend on path-versioned/acr/v1/. - Once landed, regenerate
azcontainerregistryso Go consumers can drop the hand-rolled REST call.
Happy to provide more detail or test against a draft PR.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the existing containerregistry/data-plane/Registry/{stable,preview} specifications and RepositoryWriteableProperties, then compare the operation details with azure-cli's artifact_streaming.py. Done means publishing the five streaming operations with an API-version label and updating the generated azcontainerregistry surface as requested.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- openapi
- Domain
- api, cloud
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100