Skip to content

Commit

Permalink
integrated openapi generation (#759)
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelquigley committed Oct 1, 2024
1 parent 6942408 commit 0baf1dd
Show file tree
Hide file tree
Showing 9 changed files with 1,001 additions and 707 deletions.
310 changes: 158 additions & 152 deletions agent/agentGrpc/agent.pb.go

Large diffs are not rendered by default.

562 changes: 10 additions & 552 deletions agent/agentGrpc/agent.pb.gw.go

Large diffs are not rendered by default.

14 changes: 12 additions & 2 deletions agent/agentGrpc/agent.proto
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,25 @@ syntax = "proto3";

option go_package = "github.com/openziti/zrok/agent/agentGrpc";

import "google/api/annotations.proto";

service Agent {
rpc AccessPrivate(AccessPrivateRequest) returns (AccessPrivateResponse) {}
rpc ReleaseAccess(ReleaseAccessRequest) returns (ReleaseAccessResponse) {}
rpc ReleaseShare(ReleaseShareRequest) returns (ReleaseShareResponse) {}
rpc ShareReserved(ShareReservedRequest) returns (ShareReservedResponse) {}
rpc SharePrivate(SharePrivateRequest) returns (SharePrivateResponse) {}
rpc SharePublic(SharePublicRequest) returns (SharePublicResponse) {}
rpc Status(StatusRequest) returns (StatusResponse) {}
rpc Version(VersionRequest) returns (VersionResponse) {}
rpc Status(StatusRequest) returns (StatusResponse) {
option(google.api.http) = {
get: "/v1/agent/status"
};
}
rpc Version(VersionRequest) returns (VersionResponse) {
option(google.api.http) = {
get: "/v1/agent/version"
};
}
}

message AccessDetail {
Expand Down
232 changes: 232 additions & 0 deletions agent/agentGrpc/agent.swagger.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
{
"swagger": "2.0",
"info": {
"title": "agent/agentGrpc/agent.proto",
"version": "version not set"
},
"tags": [
{
"name": "Agent"
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"paths": {
"/v1/agent/status": {
"get": {
"operationId": "Agent_Status",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/StatusResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"tags": [
"Agent"
]
}
},
"/v1/agent/version": {
"get": {
"operationId": "Agent_Version",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/VersionResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"tags": [
"Agent"
]
}
}
},
"definitions": {
"AccessDetail": {
"type": "object",
"properties": {
"frontendToken": {
"type": "string"
},
"token": {
"type": "string"
},
"bindAddress": {
"type": "string"
},
"responseHeaders": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"AccessPrivateResponse": {
"type": "object",
"properties": {
"frontendToken": {
"type": "string"
}
}
},
"ReleaseAccessResponse": {
"type": "object"
},
"ReleaseShareResponse": {
"type": "object"
},
"ShareDetail": {
"type": "object",
"properties": {
"token": {
"type": "string"
},
"shareMode": {
"type": "string"
},
"backendMode": {
"type": "string"
},
"reserved": {
"type": "boolean"
},
"frontendEndpoint": {
"type": "array",
"items": {
"type": "string"
}
},
"backendEndpoint": {
"type": "string"
},
"closed": {
"type": "boolean"
},
"status": {
"type": "string"
}
}
},
"SharePrivateResponse": {
"type": "object",
"properties": {
"token": {
"type": "string"
}
}
},
"SharePublicResponse": {
"type": "object",
"properties": {
"token": {
"type": "string"
},
"frontendEndpoints": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"ShareReservedResponse": {
"type": "object",
"properties": {
"token": {
"type": "string"
},
"backendMode": {
"type": "string"
},
"shareMode": {
"type": "string"
},
"frontendEndpoints": {
"type": "array",
"items": {
"type": "string"
}
},
"target": {
"type": "string"
}
}
},
"StatusResponse": {
"type": "object",
"properties": {
"accesses": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/AccessDetail"
}
},
"shares": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/ShareDetail"
}
}
}
},
"VersionResponse": {
"type": "object",
"properties": {
"v": {
"type": "string"
}
}
},
"protobufAny": {
"type": "object",
"properties": {
"@type": {
"type": "string"
}
},
"additionalProperties": {}
},
"rpcStatus": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"details": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/protobufAny"
}
}
}
}
}
}
3 changes: 2 additions & 1 deletion bin/generate_pb.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ go install \

protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
--grpc-gateway_out=. --grpc-gateway_opt=paths=source_relative --grpc-gateway_opt=generate_unbound_methods=true \
--grpc-gateway_out=. --grpc-gateway_opt=paths=source_relative \
--openapiv2_out=. \
agent/agentGrpc/agent.proto

31 changes: 31 additions & 0 deletions google/api/annotations.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Copyright 2024 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/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;
}
Loading

0 comments on commit 0baf1dd

Please sign in to comment.