Skip to content

Commit

Permalink
chore: add third_party proto file
Browse files Browse the repository at this point in the history
  • Loading branch information
tosaken1116 committed Jan 4, 2024
1 parent 14c1f5a commit 73f24a6
Show file tree
Hide file tree
Showing 10 changed files with 1,428 additions and 0 deletions.
72 changes: 72 additions & 0 deletions openapi/api_definition.swagger.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
swagger: "2.0"
info:
title: proto/schema/tags/tags.proto
version: version not set
tags:
- name: TagsService
consumes:
- application/json
produces:
- application/json
paths:
/v1/tags:
get:
operationId: TagsService_GetTags
responses:
"200":
description: A successful response.
schema:
$ref: '#/definitions/rpcGetTagsResponse'
"422":
description: Validation Error
schema: {}
examples:
application/json:
detail:
- loc:
- string
- 0
msg: string
type: string
parameters:
- name: limit
in: query
required: false
type: integer
format: int32
- name: smallest_tag_id
in: query
required: false
type: string
- name: biggest_tag_id
in: query
required: false
type: string
- name: w
in: query
required: false
type: string
tags:
- TagsService
definitions:
rpcGetTagsResponse:
type: object
properties:
tags:
type: array
items:
type: object
$ref: '#/definitions/tagsresourcesTag'
tagsresourcesTag:
type: object
example:
color: '#000000'
id: "1"
name: tag1
properties:
id:
type: string
name:
type: string
color:
type: string
6 changes: 6 additions & 0 deletions proto/schema/error/message.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
syntax = "proto3";

package proto.schema.error;
option go_package = "./";


15 changes: 15 additions & 0 deletions proto/schema/tags/resources/tags.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
syntax = "proto3";

package proto.schema.tags.resources;
import "proto/third_party/grpc/openapiv2/options/annotations.proto";

option go_package = "./";

message Tag {
string id = 1;
string name = 2;
string color = 3;
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = {
example:"{ \"id\": \"1\", \"name\": \"tag1\", \"color\": \"#000000\" }"
};
}
22 changes: 22 additions & 0 deletions proto/schema/tags/rpc/tags.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
syntax = "proto3";

package proto.schema.tags.rpc;

import "proto/schema/tags/resources/tags.proto";
import "proto/third_party/grpc/openapiv2/options/annotations.proto";

option go_package = "./";

message GetTagsResponse {
repeated proto.schema.tags.resources.Tag tags = 1;
}

message GetTagsRequest {
int32 limit = 1;
string smallest_tag_id = 2;
string biggest_tag_id = 3;
string w = 4;
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = {
example:"{\"limit\": 10, \"smallest_tag_id\": \"\", \"biggest_tag_id\": \"\", \"w\": \"\"}"
};
}
35 changes: 35 additions & 0 deletions proto/schema/tags/tags.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
syntax = "proto3";

package proto.schema.tags;

import "proto/schema/tags/rpc/tags.proto";
import "proto/third_party/google/api/annotations.proto";
import "proto/third_party/grpc/openapiv2/options/annotations.proto";
option go_package = "./";

option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
responses: {
key: "422";
value: {
description: "Validation Error"
examples: {
key: "application/json"
value: "{\"detail\":[{\"loc\":[\"string\",0],\"msg\":\"string\",\"type\":\"string\"}]}"
}
}
}
};

message ErrorResponse {
int32 status = 1;
string title = 2;
string detail = 3;
}
service TagsService {
rpc GetTags(proto.schema.tags.rpc.GetTagsRequest)
returns (proto.schema.tags.rpc.GetTagsResponse) {
option (google.api.http) = {
get : "/v1/tags"
};
};
}
31 changes: 31 additions & 0 deletions proto/third_party/google/api/annotations.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Copyright 2015 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 "proto/third_party/google/api/http.proto";
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 = "AnnotationsProto";
option java_package = "com.google.api";
option objc_class_prefix = "GAPI";

extend google.protobuf.MethodOptions {
// See `HttpRule`.
HttpRule http = 72295728;
}
104 changes: 104 additions & 0 deletions proto/third_party/google/api/field_behavior.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
// Copyright 2023 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;

// Denotes that a (repeated) field is an unordered list.
// This indicates that the service may provide the elements of the list
// in any arbitrary order, rather than the order the user originally
// provided. Additionally, the list's order may or may not be stable.
UNORDERED_LIST = 6;

// Denotes that this field returns a non-empty default value if not set.
// This indicates that if the user provides the empty value in a request,
// a non-empty value will be returned. The user will not be aware of what
// non-empty value to expect.
NON_EMPTY_DEFAULT = 7;

// Denotes that the field in a resource (a message annotated with
// google.api.resource) is used in the resource name to uniquely identify the
// resource. For AIP-compliant APIs, this should only be applied to the
// `name` field on the resource.
//
// This behavior should not be applied to references to other resources within
// the message.
//
// The identifier field of resources often have different field behavior
// depending on the request it is embedded in (e.g. for Create methods name
// is optional and unused, while for Update methods it is required). Instead
// of method-specific annotations, only `IDENTIFIER` is required.
IDENTIFIER = 8;
}
Loading

0 comments on commit 73f24a6

Please sign in to comment.