googleapis/google/devtools/artifactregistry/v1/service.proto
Google APIs eb79455ae0 feat: add DIRSUM_SHA256 hash type
PiperOrigin-RevId: 865552557
2026-02-04 13:26:04 -08:00

561 lines
20 KiB
Protocol Buffer

// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.devtools.artifactregistry.v1;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/devtools/artifactregistry/v1/apt_artifact.proto";
import "google/devtools/artifactregistry/v1/artifact.proto";
import "google/devtools/artifactregistry/v1/attachment.proto";
import "google/devtools/artifactregistry/v1/export.proto";
import "google/devtools/artifactregistry/v1/file.proto";
import "google/devtools/artifactregistry/v1/package.proto";
import "google/devtools/artifactregistry/v1/repository.proto";
import "google/devtools/artifactregistry/v1/rule.proto";
import "google/devtools/artifactregistry/v1/settings.proto";
import "google/devtools/artifactregistry/v1/tag.proto";
import "google/devtools/artifactregistry/v1/version.proto";
import "google/devtools/artifactregistry/v1/vpcsc_config.proto";
import "google/devtools/artifactregistry/v1/yum_artifact.proto";
import "google/iam/v1/iam_policy.proto";
import "google/iam/v1/policy.proto";
import "google/longrunning/operations.proto";
import "google/protobuf/empty.proto";
option csharp_namespace = "Google.Cloud.ArtifactRegistry.V1";
option go_package = "cloud.google.com/go/artifactregistry/apiv1/artifactregistrypb;artifactregistrypb";
option java_multiple_files = true;
option java_outer_classname = "ServiceProto";
option java_package = "com.google.devtools.artifactregistry.v1";
option php_namespace = "Google\\Cloud\\ArtifactRegistry\\V1";
option ruby_package = "Google::Cloud::ArtifactRegistry::V1";
// The Artifact Registry API service.
//
// Artifact Registry is an artifact management system for storing artifacts
// from different package management systems.
//
// The resources managed by this API are:
//
// * Repositories, which group packages and their data.
// * Packages, which group versions and their tags.
// * Versions, which are specific forms of a package.
// * Tags, which represent alternative names for versions.
// * Files, which contain content and are optionally associated with a Package
// or Version.
service ArtifactRegistry {
option (google.api.default_host) = "artifactregistry.googleapis.com";
option (google.api.oauth_scopes) =
"https://www.googleapis.com/auth/cloud-platform,"
"https://www.googleapis.com/auth/cloud-platform.read-only";
// Lists docker images.
rpc ListDockerImages(ListDockerImagesRequest)
returns (ListDockerImagesResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/repositories/*}/dockerImages"
};
option (google.api.method_signature) = "parent";
}
// Gets a docker image.
rpc GetDockerImage(GetDockerImageRequest) returns (DockerImage) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/repositories/*/dockerImages/*}"
};
option (google.api.method_signature) = "name";
}
// Lists maven artifacts.
rpc ListMavenArtifacts(ListMavenArtifactsRequest)
returns (ListMavenArtifactsResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/repositories/*}/mavenArtifacts"
};
option (google.api.method_signature) = "parent";
}
// Gets a maven artifact.
rpc GetMavenArtifact(GetMavenArtifactRequest) returns (MavenArtifact) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/repositories/*/mavenArtifacts/*}"
};
option (google.api.method_signature) = "name";
}
// Lists npm packages.
rpc ListNpmPackages(ListNpmPackagesRequest)
returns (ListNpmPackagesResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/repositories/*}/npmPackages"
};
option (google.api.method_signature) = "parent";
}
// Gets a npm package.
rpc GetNpmPackage(GetNpmPackageRequest) returns (NpmPackage) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/repositories/*/npmPackages/*}"
};
option (google.api.method_signature) = "name";
}
// Lists python packages.
rpc ListPythonPackages(ListPythonPackagesRequest)
returns (ListPythonPackagesResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/repositories/*}/pythonPackages"
};
option (google.api.method_signature) = "parent";
}
// Gets a python package.
rpc GetPythonPackage(GetPythonPackageRequest) returns (PythonPackage) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/repositories/*/pythonPackages/*}"
};
option (google.api.method_signature) = "name";
}
// Imports Apt artifacts. The returned Operation will complete once the
// resources are imported. Package, Version, and File resources are created
// based on the imported artifacts. Imported artifacts that conflict with
// existing resources are ignored.
rpc ImportAptArtifacts(ImportAptArtifactsRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*/repositories/*}/aptArtifacts:import"
body: "*"
};
option (google.longrunning.operation_info) = {
response_type: "google.devtools.artifactregistry.v1.ImportAptArtifactsResponse"
metadata_type: "google.devtools.artifactregistry.v1.ImportAptArtifactsMetadata"
};
}
// Imports Yum (RPM) artifacts. The returned Operation will complete once the
// resources are imported. Package, Version, and File resources are created
// based on the imported artifacts. Imported artifacts that conflict with
// existing resources are ignored.
rpc ImportYumArtifacts(ImportYumArtifactsRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*/repositories/*}/yumArtifacts:import"
body: "*"
};
option (google.longrunning.operation_info) = {
response_type: "google.devtools.artifactregistry.v1.ImportYumArtifactsResponse"
metadata_type: "google.devtools.artifactregistry.v1.ImportYumArtifactsMetadata"
};
}
// Lists repositories.
rpc ListRepositories(ListRepositoriesRequest)
returns (ListRepositoriesResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*}/repositories"
};
option (google.api.method_signature) = "parent";
}
// Gets a repository.
rpc GetRepository(GetRepositoryRequest) returns (Repository) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/repositories/*}"
};
option (google.api.method_signature) = "name";
}
// Creates a repository. The returned Operation will finish once the
// repository has been created. Its response will be the created Repository.
rpc CreateRepository(CreateRepositoryRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*}/repositories"
body: "repository"
};
option (google.api.method_signature) = "parent,repository,repository_id";
option (google.longrunning.operation_info) = {
response_type: "google.devtools.artifactregistry.v1.Repository"
metadata_type: "google.devtools.artifactregistry.v1.OperationMetadata"
};
}
// Updates a repository.
rpc UpdateRepository(UpdateRepositoryRequest) returns (Repository) {
option (google.api.http) = {
patch: "/v1/{repository.name=projects/*/locations/*/repositories/*}"
body: "repository"
};
option (google.api.method_signature) = "repository,update_mask";
}
// Deletes a repository and all of its contents. The returned Operation will
// finish once the repository has been deleted. It will not have any Operation
// metadata and will return a google.protobuf.Empty response.
rpc DeleteRepository(DeleteRepositoryRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v1/{name=projects/*/locations/*/repositories/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "google.protobuf.Empty"
metadata_type: "google.devtools.artifactregistry.v1.OperationMetadata"
};
}
// Lists packages.
rpc ListPackages(ListPackagesRequest) returns (ListPackagesResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/repositories/*}/packages"
};
option (google.api.method_signature) = "parent";
}
// Gets a package.
rpc GetPackage(GetPackageRequest) returns (Package) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/repositories/*/packages/*}"
};
option (google.api.method_signature) = "name";
}
// Deletes a package and all of its versions and tags. The returned operation
// will complete once the package has been deleted.
rpc DeletePackage(DeletePackageRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v1/{name=projects/*/locations/*/repositories/*/packages/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "google.protobuf.Empty"
metadata_type: "google.devtools.artifactregistry.v1.OperationMetadata"
};
}
// Lists versions.
rpc ListVersions(ListVersionsRequest) returns (ListVersionsResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/repositories/*/packages/*}/versions"
};
option (google.api.method_signature) = "parent";
}
// Gets a version
rpc GetVersion(GetVersionRequest) returns (Version) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/repositories/*/packages/*/versions/*}"
};
option (google.api.method_signature) = "name";
}
// Deletes a version and all of its content. The returned operation will
// complete once the version has been deleted.
rpc DeleteVersion(DeleteVersionRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v1/{name=projects/*/locations/*/repositories/*/packages/*/versions/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "google.protobuf.Empty"
metadata_type: "google.devtools.artifactregistry.v1.OperationMetadata"
};
}
// Deletes multiple versions across a repository. The returned operation will
// complete once the versions have been deleted.
rpc BatchDeleteVersions(BatchDeleteVersionsRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*/repositories/*/packages/*}/versions:batchDelete"
body: "*"
};
option (google.api.method_signature) = "parent,names";
option (google.longrunning.operation_info) = {
response_type: "google.protobuf.Empty"
metadata_type: "google.devtools.artifactregistry.v1.BatchDeleteVersionsMetadata"
};
}
// Updates a version.
rpc UpdateVersion(UpdateVersionRequest) returns (Version) {
option (google.api.http) = {
patch: "/v1/{version.name=projects/*/locations/*/repositories/*/packages/*/versions/*}"
body: "version"
};
option (google.api.method_signature) = "version,update_mask";
}
// Lists files.
rpc ListFiles(ListFilesRequest) returns (ListFilesResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/repositories/*}/files"
};
option (google.api.method_signature) = "parent";
}
// Gets a file.
rpc GetFile(GetFileRequest) returns (File) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/repositories/*/files/**}"
};
option (google.api.method_signature) = "name";
}
// Deletes a file and all of its content. It is only allowed on generic
// repositories. The returned operation will complete once the file has been
// deleted.
rpc DeleteFile(DeleteFileRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v1/{name=projects/*/locations/*/repositories/*/files/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "google.protobuf.Empty"
metadata_type: "google.devtools.artifactregistry.v1.OperationMetadata"
};
}
// Updates a file.
rpc UpdateFile(UpdateFileRequest) returns (File) {
option (google.api.http) = {
patch: "/v1/{file.name=projects/*/locations/*/repositories/*/files/*}"
body: "file"
};
option (google.api.method_signature) = "file,update_mask";
}
// Lists tags.
rpc ListTags(ListTagsRequest) returns (ListTagsResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/repositories/*/packages/*}/tags"
};
option (google.api.method_signature) = "parent";
}
// Gets a tag.
rpc GetTag(GetTagRequest) returns (Tag) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/repositories/*/packages/*/tags/*}"
};
option (google.api.method_signature) = "name";
}
// Creates a tag.
rpc CreateTag(CreateTagRequest) returns (Tag) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*/repositories/*/packages/*}/tags"
body: "tag"
};
option (google.api.method_signature) = "parent,tag,tag_id";
}
// Updates a tag.
rpc UpdateTag(UpdateTagRequest) returns (Tag) {
option (google.api.http) = {
patch: "/v1/{tag.name=projects/*/locations/*/repositories/*/packages/*/tags/*}"
body: "tag"
};
option (google.api.method_signature) = "tag,update_mask";
}
// Deletes a tag.
rpc DeleteTag(DeleteTagRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1/{name=projects/*/locations/*/repositories/*/packages/*/tags/*}"
};
option (google.api.method_signature) = "name";
}
// Creates a rule.
rpc CreateRule(CreateRuleRequest) returns (Rule) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*/repositories/*}/rules"
body: "rule"
};
option (google.api.method_signature) = "parent,rule,rule_id";
}
// Lists rules.
rpc ListRules(ListRulesRequest) returns (ListRulesResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/repositories/*}/rules"
};
option (google.api.method_signature) = "parent";
}
// Gets a rule.
rpc GetRule(GetRuleRequest) returns (Rule) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/repositories/*/rules/*}"
};
option (google.api.method_signature) = "name";
}
// Updates a rule.
rpc UpdateRule(UpdateRuleRequest) returns (Rule) {
option (google.api.http) = {
patch: "/v1/{rule.name=projects/*/locations/*/repositories/*/rules/*}"
body: "rule"
};
option (google.api.method_signature) = "rule,update_mask";
}
// Deletes a rule.
rpc DeleteRule(DeleteRuleRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1/{name=projects/*/locations/*/repositories/*/rules/*}"
};
option (google.api.method_signature) = "name";
}
// Updates the IAM policy for a given resource.
rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest)
returns (google.iam.v1.Policy) {
option (google.api.http) = {
post: "/v1/{resource=projects/*/locations/*/repositories/*}:setIamPolicy"
body: "*"
};
}
// Gets the IAM policy for a given resource.
rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest)
returns (google.iam.v1.Policy) {
option (google.api.http) = {
get: "/v1/{resource=projects/*/locations/*/repositories/*}:getIamPolicy"
};
}
// Tests if the caller has a list of permissions on a resource.
rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest)
returns (google.iam.v1.TestIamPermissionsResponse) {
option (google.api.http) = {
post: "/v1/{resource=projects/*/locations/*/repositories/*}:testIamPermissions"
body: "*"
};
}
// Retrieves the Settings for the Project.
rpc GetProjectSettings(GetProjectSettingsRequest) returns (ProjectSettings) {
option (google.api.http) = {
get: "/v1/{name=projects/*/projectSettings}"
};
option (google.api.method_signature) = "name";
}
// Updates the Settings for the Project.
rpc UpdateProjectSettings(UpdateProjectSettingsRequest)
returns (ProjectSettings) {
option (google.api.http) = {
patch: "/v1/{project_settings.name=projects/*/projectSettings}"
body: "project_settings"
};
option (google.api.method_signature) = "project_settings,update_mask";
}
// Retrieves the VPCSC Config for the Project.
rpc GetVPCSCConfig(GetVPCSCConfigRequest) returns (VPCSCConfig) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/vpcscConfig}"
};
option (google.api.method_signature) = "name";
}
// Updates the VPCSC Config for the Project.
rpc UpdateVPCSCConfig(UpdateVPCSCConfigRequest) returns (VPCSCConfig) {
option (google.api.http) = {
patch: "/v1/{vpcsc_config.name=projects/*/locations/*/vpcscConfig}"
body: "vpcsc_config"
};
option (google.api.method_signature) = "vpcsc_config,update_mask";
}
// Updates a package.
rpc UpdatePackage(UpdatePackageRequest) returns (Package) {
option (google.api.http) = {
patch: "/v1/{package.name=projects/*/locations/*/repositories/*/packages/*}"
body: "package"
};
option (google.api.method_signature) = "package,update_mask";
}
// Lists attachments.
rpc ListAttachments(ListAttachmentsRequest)
returns (ListAttachmentsResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/repositories/*}/attachments"
};
option (google.api.method_signature) = "parent";
}
// Gets an attachment.
rpc GetAttachment(GetAttachmentRequest) returns (Attachment) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/repositories/*/attachments/*}"
};
option (google.api.method_signature) = "name";
}
// Creates an attachment. The returned Operation will finish once the
// attachment has been created. Its response will be the created attachment.
rpc CreateAttachment(CreateAttachmentRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*/repositories/*}/attachments"
body: "attachment"
};
option (google.api.method_signature) = "parent,attachment,attachment_id";
option (google.longrunning.operation_info) = {
response_type: "google.devtools.artifactregistry.v1.Attachment"
metadata_type: "google.devtools.artifactregistry.v1.OperationMetadata"
};
}
// Deletes an attachment. The returned Operation will
// finish once the attachments has been deleted. It will not have any
// Operation metadata and will return a `google.protobuf.Empty` response.
rpc DeleteAttachment(DeleteAttachmentRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v1/{name=projects/*/locations/*/repositories/*/attachments/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "google.protobuf.Empty"
metadata_type: "google.devtools.artifactregistry.v1.OperationMetadata"
};
}
// Exports an artifact to a Cloud Storage bucket.
rpc ExportArtifact(ExportArtifactRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1/{repository=projects/*/locations/*/repositories/*}:exportArtifact"
body: "*"
};
option (google.longrunning.operation_info) = {
response_type: "google.devtools.artifactregistry.v1.ExportArtifactResponse"
metadata_type: "google.devtools.artifactregistry.v1.ExportArtifactMetadata"
};
}
}
// Metadata type for longrunning-operations, currently empty.
message OperationMetadata {}