Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Example API for Google Cloud's Service Infrastructure.
For more information, see https://cloud.google.com/service-infrastructure. PiperOrigin-RevId: 326096336
- Loading branch information
Google APIs
authored and
Copybara-Service
committed
Aug 11, 2020
1 parent
393d030
commit 49784a3
Showing
6 changed files
with
213 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
exports_files(glob(["*.yaml"])) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
type: google.api.Service | ||
config_version: 3 | ||
name: endpointsapis.appspot.com | ||
title: Endpoints APIs | ||
producer_project_id: endpointsapis | ||
|
||
apis: | ||
- name: google.example.endpointsapis.v1.Workspaces | ||
|
||
control: | ||
environment: servicecontrol.googleapis.com | ||
|
||
resources: | ||
- type: endpointsapis.appspot.com/Workspace | ||
plural: workspaces | ||
singular: workspace | ||
name_descriptor: | ||
- pattern: projects/{project}/locations/{location}/workspaces/{workspace} | ||
parent_type: cloudresourcemanager.googleapis.com/Project | ||
parent_name_extractor: projects/{project} | ||
|
||
iam: | ||
launch_stage: ALPHA | ||
resources: | ||
- type: endpointsapis.appspot.com/Workspace | ||
internal: | ||
# This is the internal resource 'type' in the IAM service file in the format of | ||
# "<servicename>_<resourceplural>", and the 'PolicyName.type' must use this value when | ||
# making CheckPolicy calls. | ||
name_for_resource: endpointsapis_workspaces | ||
permissions: | ||
- name: endpointsapis.appspot.com/workspaces.get | ||
display_name: Get workspaces | ||
type: DATA_READ | ||
scope: USER_SCOPE | ||
- name: endpointsapis.appspot.com/workspaces.list | ||
display_name: List all workspaces under a project | ||
type: DATA_READ | ||
scope: USER_SCOPE | ||
parent_only: true | ||
- name: endpointsapis.appspot.com/workspaces.create | ||
display_name: Create new workspaces | ||
type: DATA_WRITE | ||
scope: ADMIN_SCOPE | ||
parent_only: true | ||
- name: endpointsapis.appspot.com/workspaces.update | ||
display_name: Update existing workspaces | ||
type: DATA_WRITE | ||
scope: ADMIN_SCOPE | ||
- name: endpointsapis.appspot.com/workspaces.delete | ||
display_name: Delete workspaces | ||
type: DATA_WRITE | ||
scope: ADMIN_SCOPE | ||
roles: | ||
# Viewer role: only includes get/list permissions | ||
- name: endpointsapis.appspot.com/viewer | ||
display_name: Workspace Viewer | ||
description: This role can list and view all workspaces. | ||
permissions: | ||
# These are recommended for all roles that could be granted to a user at or above the | ||
# project level | ||
- cloudresourcemanager.googleapis.com/projects.get | ||
- cloudresourcemanager.googleapis.com/projects.list | ||
# Additional permissions for read access | ||
- endpointsapis.appspot.com/workspaces.get | ||
- endpointsapis.appspot.com/workspaces.list | ||
|
||
# Editor role: Includes all permission from viewer role, and workspaces edit permissions | ||
- name: endpointsapis.appspot.com/editor | ||
display_name: Workspace Editor | ||
description: This role can list, view, and update all workspaces. | ||
permissions: | ||
# These are recommended for all roles that could be granted to a user at or above the | ||
# project level | ||
- cloudresourcemanager.googleapis.com/projects.get | ||
- cloudresourcemanager.googleapis.com/projects.list | ||
# Viewer permissions + additional edit permissions | ||
- endpointsapis.appspot.com/workspaces.get | ||
- endpointsapis.appspot.com/workspaces.list | ||
- endpointsapis.appspot.com/workspaces.create | ||
- endpointsapis.appspot.com/workspaces.update | ||
- endpointsapis.appspot.com/workspaces.delete | ||
|
||
# This setting means the service will use Service Control API v2 for admission control. | ||
reader: group:servicecontrol | ||
|
||
# This setting is **unused** for services using Service Control API v2 for admission control. | ||
environment: PROD |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
runtime: go113 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
type: google.api.Service | ||
config_version: 3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
type: google.api.Service | ||
config_version: 3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
// Copyright 2020 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.example.endpointsapis.v1; | ||
|
||
import "google/api/annotations.proto"; | ||
import "google/protobuf/empty.proto"; | ||
|
||
option java_multiple_files = true; | ||
option java_package = "com.google.example.endpointsapis.v1"; | ||
option java_outer_classname = "WorkspaceProto"; | ||
|
||
// Manages workspaces. | ||
service Workspaces { | ||
// List workspaces. | ||
rpc ListWorkspaces(ListWorkspacesRequest) returns (ListWorkspacesResponse) { | ||
option (google.api.http) = { | ||
get: "/v1/{parent=projects/*/locations/*}/workspaces" | ||
}; | ||
} | ||
|
||
// Get information about a Workspace. | ||
rpc GetWorkspace(GetWorkspaceRequest) returns (Workspace) { | ||
option (google.api.http) = { | ||
get: "/v1/{name=projects/*/locations/*/workspaces/*}" | ||
}; | ||
} | ||
|
||
// Create a Workspace. | ||
rpc CreateWorkspace(CreateWorkspaceRequest) returns (Workspace) { | ||
option (google.api.http) = { | ||
post: "/v1/{parent=projects/*/locations/*}/workspaces" | ||
body: "workspace" | ||
}; | ||
} | ||
|
||
// Updates a Workspace. | ||
rpc UpdateWorkspace(UpdateWorkspaceRequest) returns (Workspace) { | ||
option (google.api.http) = { | ||
patch: "/v1/{name=projects/*/locations/*/Workspaces/*}" | ||
body: "workspace" | ||
}; | ||
} | ||
|
||
// Deletes a Workspace. | ||
rpc DeleteWorkspace(DeleteWorkspaceRequest) returns (google.protobuf.Empty) { | ||
option (google.api.http) = { | ||
delete: "/v1/{name=projects/*/locations/*/workspaces/*}" | ||
}; | ||
} | ||
} | ||
|
||
// Presents a workspace | ||
message Workspace { | ||
// The Workspace name in the format of "projects/*/locations/*/workspaces/*". | ||
string name = 1; | ||
} | ||
|
||
// Request message for listing Workspaces. | ||
message ListWorkspacesRequest { | ||
// The parent used for listing. It should have the format of | ||
// `projects/{number}/locations/{location}`. | ||
string parent = 1; | ||
// The page size for list pagination. | ||
int32 page_size = 2; | ||
// The page token for list pagination. | ||
string page_token = 3; | ||
} | ||
|
||
// A list of workspaces. | ||
message ListWorkspacesResponse { | ||
// The list of workspaces. | ||
repeated Workspace items = 1; | ||
// The next page token for list pagination. | ||
string next_page_token = 2; | ||
} | ||
|
||
// Request message for retrieving a Workspace. | ||
message GetWorkspaceRequest { | ||
// The name of the Workspace to retrieve. | ||
string name = 1; | ||
} | ||
|
||
// Request message for creating a Workspace. | ||
message CreateWorkspaceRequest { | ||
// The namespace in which the Workspace should be created. | ||
string parent = 1; | ||
|
||
// The Workspace instance to create. | ||
Workspace workspace = 2; | ||
} | ||
|
||
// Request message for replacing a Workspace. | ||
message UpdateWorkspaceRequest { | ||
// The name of the Workspace being replaced. | ||
string name = 1; | ||
|
||
// The Workspace object being replaced. | ||
Workspace workspace = 2; | ||
} | ||
|
||
// Request message for deleting a Workspace. | ||
message DeleteWorkspaceRequest { | ||
// The name of the Workspace to delete. | ||
string name = 1; | ||
} |