Skip to content

Commit

Permalink
add admin proto for creating projects (#9)
Browse files Browse the repository at this point in the history
* add admin proto for creating projects

* fix field name
  • Loading branch information
Abhishekvrshny authored Dec 22, 2020
1 parent 4d1c219 commit 54495b5
Show file tree
Hide file tree
Showing 4 changed files with 120 additions and 3 deletions.
42 changes: 42 additions & 0 deletions metro/proto/v1/admin.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
syntax = "proto3";

package metro.v1;

option go_package = "github.com/razorpay/metro-proto/metro/proto/v1;metrov1";

import "google/api/annotations.proto";
import "google/api/field_behaviour.proto";
import "protoc-gen-openapiv2/options/annotations.proto";

// These annotations are used when generating the OpenAPI file.
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
info: {
version: "1.0";
};
external_docs: {
url: "https://github.com/razorpay/metro-proto";
description: "protobuf definitions for metro";
}
schemes: HTTP;
schemes: HTTPS;
};

service AdminService {
rpc CreateProject(Project) returns (Project){
option (google.api.http) = {
post: "/v1/projects"
body: "*"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Create a project"
description: "Topics and Subscriptions belong to a project"
tags: "Project"
};
}
}

message Project {
string name = 1 [(google.api.field_behavior) = REQUIRED];
string project_id = 2;
map<string, string> labels = 3;
}
1 change: 0 additions & 1 deletion metro/proto/v1/health.proto
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// (c) metro 2020
syntax = "proto3";

package metro.v1;
Expand Down
2 changes: 0 additions & 2 deletions metro/proto/v1/publisher.proto
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
// (c) metro 2020

syntax = "proto3";

package metro.v1;
Expand Down
78 changes: 78 additions & 0 deletions third_party/googleapis/google/api/field_behaviour.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
// 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.api;

import "google/protobuf/descriptor.proto";

option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
option java_multiple_files = true;
option java_outer_classname = "FieldBehaviorProto";
option java_package = "com.google.api";
option objc_class_prefix = "GAPI";

extend google.protobuf.FieldOptions {
// A designation of a specific field behavior (required, output only, etc.)
// in protobuf messages.
//
// Examples:
//
// string name = 1 [(google.api.field_behavior) = REQUIRED];
// State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// google.protobuf.Duration ttl = 1
// [(google.api.field_behavior) = INPUT_ONLY];
// google.protobuf.Timestamp expire_time = 1
// [(google.api.field_behavior) = OUTPUT_ONLY,
// (google.api.field_behavior) = IMMUTABLE];
repeated google.api.FieldBehavior field_behavior = 1052;
}

// An indicator of the behavior of a given field (for example, that a field
// is required in requests, or given as output but ignored as input).
// This **does not** change the behavior in protocol buffers itself; it only
// denotes the behavior and may affect how API tooling handles the field.
//
// Note: This enum **may** receive new values in the future.
enum FieldBehavior {
// Conventional default for enums. Do not use this.
FIELD_BEHAVIOR_UNSPECIFIED = 0;

// Specifically denotes a field as optional.
// While all fields in protocol buffers are optional, this may be specified
// for emphasis if appropriate.
OPTIONAL = 1;

// Denotes a field as required.
// This indicates that the field **must** be provided as part of the request,
// and failure to do so will cause an error (usually `INVALID_ARGUMENT`).
REQUIRED = 2;

// Denotes a field as output only.
// This indicates that the field is provided in responses, but including the
// field in a request does nothing (the server *must* ignore it and
// *must not* throw an error as a result of the field's presence).
OUTPUT_ONLY = 3;

// Denotes a field as input only.
// This indicates that the field is provided in requests, and the
// corresponding field is not included in output.
INPUT_ONLY = 4;

// Denotes a field as immutable.
// This indicates that the field may be set once in a request to create a
// resource, but may not be changed thereafter.
IMMUTABLE = 5;
}

0 comments on commit 54495b5

Please sign in to comment.