Azure / Azure/azure-rest-api-specs

[ACR] Publish data-plane artifact streaming operations in the Container Registry spec

Open
#43,492 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Container Registry customer-reported data-plane question Service Attention
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
  1. Publish these operations in the data-plane Registry spec (preview is fine — the CLI command is marked is_preview=True).
  2. Assign an api-version label so callers don't depend on path-versioned /acr/v1/.
  3. Once landed, regenerate azcontainerregistry so Go consumers can drop the hand-rolled REST call.

Happy to provide more detail or test against a draft PR.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.