1*d5c09012SAndroid Build Coastguard Worker// Copyright 2021 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.apigeeconnect.v1; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/duration.proto"; 20*d5c09012SAndroid Build Coastguard Workerimport "google/rpc/status.proto"; 21*d5c09012SAndroid Build Coastguard Workerimport "google/api/client.proto"; 22*d5c09012SAndroid Build Coastguard Worker 23*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.ApigeeConnect.V1"; 24*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/apigeeconnect/apiv1/apigeeconnectpb;apigeeconnectpb"; 25*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 26*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "TetherProto"; 27*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.apigeeconnect.v1"; 28*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\ApigeeConnect\\V1"; 29*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::ApigeeConnect::V1"; 30*d5c09012SAndroid Build Coastguard Worker 31*d5c09012SAndroid Build Coastguard Worker// Tether provides a way for the control plane to send HTTP API requests to 32*d5c09012SAndroid Build Coastguard Worker// services in data planes that runs in a remote datacenter without 33*d5c09012SAndroid Build Coastguard Worker// requiring customers to open firewalls on their runtime plane. 34*d5c09012SAndroid Build Coastguard Workerservice Tether { 35*d5c09012SAndroid Build Coastguard Worker option (google.api.default_host) = "apigeeconnect.googleapis.com"; 36*d5c09012SAndroid Build Coastguard Worker option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; 37*d5c09012SAndroid Build Coastguard Worker 38*d5c09012SAndroid Build Coastguard Worker // Egress streams egress requests and responses. Logically, this is not 39*d5c09012SAndroid Build Coastguard Worker // actually a streaming request, but uses streaming as a mechanism to flip 40*d5c09012SAndroid Build Coastguard Worker // the client-server relationship of gRPC so that the server can act as a 41*d5c09012SAndroid Build Coastguard Worker // client. 42*d5c09012SAndroid Build Coastguard Worker // The listener, the RPC server, accepts connections from the dialer, 43*d5c09012SAndroid Build Coastguard Worker // the RPC client. 44*d5c09012SAndroid Build Coastguard Worker // The listener streams http requests and the dialer streams http responses. 45*d5c09012SAndroid Build Coastguard Worker rpc Egress(stream EgressResponse) returns (stream EgressRequest) { 46*d5c09012SAndroid Build Coastguard Worker } 47*d5c09012SAndroid Build Coastguard Worker} 48*d5c09012SAndroid Build Coastguard Worker 49*d5c09012SAndroid Build Coastguard Worker// gRPC request payload for tether. 50*d5c09012SAndroid Build Coastguard Workermessage EgressRequest { 51*d5c09012SAndroid Build Coastguard Worker // Unique identifier for the request. 52*d5c09012SAndroid Build Coastguard Worker string id = 1; 53*d5c09012SAndroid Build Coastguard Worker 54*d5c09012SAndroid Build Coastguard Worker // Actual payload to send to agent. 55*d5c09012SAndroid Build Coastguard Worker Payload payload = 2; 56*d5c09012SAndroid Build Coastguard Worker 57*d5c09012SAndroid Build Coastguard Worker // Tether Endpoint. 58*d5c09012SAndroid Build Coastguard Worker TetherEndpoint endpoint = 3; 59*d5c09012SAndroid Build Coastguard Worker 60*d5c09012SAndroid Build Coastguard Worker // GCP Project. 61*d5c09012SAndroid Build Coastguard Worker // Format: `projects/{project_number}`. 62*d5c09012SAndroid Build Coastguard Worker string project = 4; 63*d5c09012SAndroid Build Coastguard Worker 64*d5c09012SAndroid Build Coastguard Worker // Unique identifier for clients to trace their request/response. 65*d5c09012SAndroid Build Coastguard Worker string trace_id = 5; 66*d5c09012SAndroid Build Coastguard Worker 67*d5c09012SAndroid Build Coastguard Worker // Timeout for the HTTP request. 68*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration timeout = 6; 69*d5c09012SAndroid Build Coastguard Worker} 70*d5c09012SAndroid Build Coastguard Worker 71*d5c09012SAndroid Build Coastguard Worker// Payload for EgressRequest. 72*d5c09012SAndroid Build Coastguard Workermessage Payload { 73*d5c09012SAndroid Build Coastguard Worker // The kind of payload. 74*d5c09012SAndroid Build Coastguard Worker oneof kind { 75*d5c09012SAndroid Build Coastguard Worker // The HttpRequest proto. 76*d5c09012SAndroid Build Coastguard Worker HttpRequest http_request = 1; 77*d5c09012SAndroid Build Coastguard Worker 78*d5c09012SAndroid Build Coastguard Worker // The information of stream. 79*d5c09012SAndroid Build Coastguard Worker StreamInfo stream_info = 2; 80*d5c09012SAndroid Build Coastguard Worker 81*d5c09012SAndroid Build Coastguard Worker // The action taken by agent. 82*d5c09012SAndroid Build Coastguard Worker Action action = 3; 83*d5c09012SAndroid Build Coastguard Worker } 84*d5c09012SAndroid Build Coastguard Worker} 85*d5c09012SAndroid Build Coastguard Worker 86*d5c09012SAndroid Build Coastguard Worker// The Information of bi-directional stream. 87*d5c09012SAndroid Build Coastguard Workermessage StreamInfo { 88*d5c09012SAndroid Build Coastguard Worker // Unique identifier for the stream. 89*d5c09012SAndroid Build Coastguard Worker string id = 1; 90*d5c09012SAndroid Build Coastguard Worker} 91*d5c09012SAndroid Build Coastguard Worker 92*d5c09012SAndroid Build Coastguard Worker// The action taken by agent. 93*d5c09012SAndroid Build Coastguard Workerenum Action { 94*d5c09012SAndroid Build Coastguard Worker // Unspecified Action. 95*d5c09012SAndroid Build Coastguard Worker ACTION_UNSPECIFIED = 0; 96*d5c09012SAndroid Build Coastguard Worker 97*d5c09012SAndroid Build Coastguard Worker // Indicates that agent should open a new stream. 98*d5c09012SAndroid Build Coastguard Worker OPEN_NEW_STREAM = 1; 99*d5c09012SAndroid Build Coastguard Worker} 100*d5c09012SAndroid Build Coastguard Worker 101*d5c09012SAndroid Build Coastguard Worker// gRPC response payload for tether. 102*d5c09012SAndroid Build Coastguard Workermessage EgressResponse { 103*d5c09012SAndroid Build Coastguard Worker // Unique identifier for the response. Matches the EgressRequest's id. 104*d5c09012SAndroid Build Coastguard Worker string id = 1; 105*d5c09012SAndroid Build Coastguard Worker 106*d5c09012SAndroid Build Coastguard Worker // HttpResponse. 107*d5c09012SAndroid Build Coastguard Worker HttpResponse http_response = 2; 108*d5c09012SAndroid Build Coastguard Worker 109*d5c09012SAndroid Build Coastguard Worker // Errors from application when handling the http request. 110*d5c09012SAndroid Build Coastguard Worker google.rpc.Status status = 3; 111*d5c09012SAndroid Build Coastguard Worker 112*d5c09012SAndroid Build Coastguard Worker // GCP Project. 113*d5c09012SAndroid Build Coastguard Worker // Format: `projects/{project_number}`. 114*d5c09012SAndroid Build Coastguard Worker string project = 4; 115*d5c09012SAndroid Build Coastguard Worker 116*d5c09012SAndroid Build Coastguard Worker // Unique identifier for clients to trace their request/response. Matches the 117*d5c09012SAndroid Build Coastguard Worker // EgressRequest's trace id 118*d5c09012SAndroid Build Coastguard Worker string trace_id = 5; 119*d5c09012SAndroid Build Coastguard Worker 120*d5c09012SAndroid Build Coastguard Worker // Tether Endpoint. 121*d5c09012SAndroid Build Coastguard Worker TetherEndpoint endpoint = 6; 122*d5c09012SAndroid Build Coastguard Worker 123*d5c09012SAndroid Build Coastguard Worker // Name is the full resource path of endpoint. 124*d5c09012SAndroid Build Coastguard Worker // Format: `projects/{project_number or project_id}/endpoints/{endpoint}` 125*d5c09012SAndroid Build Coastguard Worker string name = 7; 126*d5c09012SAndroid Build Coastguard Worker} 127*d5c09012SAndroid Build Coastguard Worker 128*d5c09012SAndroid Build Coastguard Worker// Endpoint indicates where the messages will be delivered. 129*d5c09012SAndroid Build Coastguard Workerenum TetherEndpoint { 130*d5c09012SAndroid Build Coastguard Worker // Unspecified tether endpoint. 131*d5c09012SAndroid Build Coastguard Worker TETHER_ENDPOINT_UNSPECIFIED = 0; 132*d5c09012SAndroid Build Coastguard Worker 133*d5c09012SAndroid Build Coastguard Worker // Apigee MART endpoint. 134*d5c09012SAndroid Build Coastguard Worker APIGEE_MART = 1; 135*d5c09012SAndroid Build Coastguard Worker 136*d5c09012SAndroid Build Coastguard Worker // Apigee Runtime endpoint. 137*d5c09012SAndroid Build Coastguard Worker APIGEE_RUNTIME = 2; 138*d5c09012SAndroid Build Coastguard Worker 139*d5c09012SAndroid Build Coastguard Worker // Apigee Mint Rating endpoint. 140*d5c09012SAndroid Build Coastguard Worker APIGEE_MINT_RATING = 3; 141*d5c09012SAndroid Build Coastguard Worker} 142*d5c09012SAndroid Build Coastguard Worker 143*d5c09012SAndroid Build Coastguard Worker// HTTP Scheme. 144*d5c09012SAndroid Build Coastguard Workerenum Scheme { 145*d5c09012SAndroid Build Coastguard Worker // Unspecified scheme. 146*d5c09012SAndroid Build Coastguard Worker SCHEME_UNSPECIFIED = 0; 147*d5c09012SAndroid Build Coastguard Worker 148*d5c09012SAndroid Build Coastguard Worker // HTTPS protocol. 149*d5c09012SAndroid Build Coastguard Worker HTTPS = 1; 150*d5c09012SAndroid Build Coastguard Worker} 151*d5c09012SAndroid Build Coastguard Worker 152*d5c09012SAndroid Build Coastguard Worker// The proto definition of http request. 153*d5c09012SAndroid Build Coastguard Workermessage HttpRequest { 154*d5c09012SAndroid Build Coastguard Worker // A unique identifier for the request. 155*d5c09012SAndroid Build Coastguard Worker string id = 1; 156*d5c09012SAndroid Build Coastguard Worker 157*d5c09012SAndroid Build Coastguard Worker // The HTTP request method. 158*d5c09012SAndroid Build Coastguard Worker // Valid methods: "GET", "HEAD", "POST", "PUT", "PATCH","DELETE". 159*d5c09012SAndroid Build Coastguard Worker string method = 2; 160*d5c09012SAndroid Build Coastguard Worker 161*d5c09012SAndroid Build Coastguard Worker // The HTTP request URL. 162*d5c09012SAndroid Build Coastguard Worker Url url = 3; 163*d5c09012SAndroid Build Coastguard Worker 164*d5c09012SAndroid Build Coastguard Worker // The HTTP request headers. 165*d5c09012SAndroid Build Coastguard Worker repeated Header headers = 4; 166*d5c09012SAndroid Build Coastguard Worker 167*d5c09012SAndroid Build Coastguard Worker // HTTP request body. 168*d5c09012SAndroid Build Coastguard Worker bytes body = 5; 169*d5c09012SAndroid Build Coastguard Worker} 170*d5c09012SAndroid Build Coastguard Worker 171*d5c09012SAndroid Build Coastguard Worker// The proto definition of url. 172*d5c09012SAndroid Build Coastguard Worker// A url represents a URL and the general form represented is: 173*d5c09012SAndroid Build Coastguard Worker// 174*d5c09012SAndroid Build Coastguard Worker// `[scheme://][google.cloud.apigeeconnect.v1.Url.host][path]` 175*d5c09012SAndroid Build Coastguard Workermessage Url { 176*d5c09012SAndroid Build Coastguard Worker // Scheme. 177*d5c09012SAndroid Build Coastguard Worker Scheme scheme = 1; 178*d5c09012SAndroid Build Coastguard Worker 179*d5c09012SAndroid Build Coastguard Worker // Host or Host:Port. 180*d5c09012SAndroid Build Coastguard Worker string host = 2; 181*d5c09012SAndroid Build Coastguard Worker 182*d5c09012SAndroid Build Coastguard Worker // Path starts with `/`. 183*d5c09012SAndroid Build Coastguard Worker string path = 3; 184*d5c09012SAndroid Build Coastguard Worker} 185*d5c09012SAndroid Build Coastguard Worker 186*d5c09012SAndroid Build Coastguard Worker// The http headers. 187*d5c09012SAndroid Build Coastguard Workermessage Header { 188*d5c09012SAndroid Build Coastguard Worker string key = 1; 189*d5c09012SAndroid Build Coastguard Worker 190*d5c09012SAndroid Build Coastguard Worker repeated string values = 2; 191*d5c09012SAndroid Build Coastguard Worker} 192*d5c09012SAndroid Build Coastguard Worker 193*d5c09012SAndroid Build Coastguard Worker// The proto definition of http response. 194*d5c09012SAndroid Build Coastguard Workermessage HttpResponse { 195*d5c09012SAndroid Build Coastguard Worker // A unique identifier that matches the request ID. 196*d5c09012SAndroid Build Coastguard Worker string id = 1; 197*d5c09012SAndroid Build Coastguard Worker 198*d5c09012SAndroid Build Coastguard Worker // Status of http response, e.g. "200 OK". 199*d5c09012SAndroid Build Coastguard Worker string status = 2; 200*d5c09012SAndroid Build Coastguard Worker 201*d5c09012SAndroid Build Coastguard Worker // Status code of http response, e.g. 200. 202*d5c09012SAndroid Build Coastguard Worker int32 status_code = 3; 203*d5c09012SAndroid Build Coastguard Worker 204*d5c09012SAndroid Build Coastguard Worker // The HTTP 1.1 response body. 205*d5c09012SAndroid Build Coastguard Worker bytes body = 4; 206*d5c09012SAndroid Build Coastguard Worker 207*d5c09012SAndroid Build Coastguard Worker // The HTTP response headers. 208*d5c09012SAndroid Build Coastguard Worker repeated Header headers = 5; 209*d5c09012SAndroid Build Coastguard Worker 210*d5c09012SAndroid Build Coastguard Worker // Content length records the length of the associated content. The 211*d5c09012SAndroid Build Coastguard Worker // value -1 indicates that the length is unknown. Unless http method 212*d5c09012SAndroid Build Coastguard Worker // is "HEAD", values >= 0 indicate that the given number of bytes may 213*d5c09012SAndroid Build Coastguard Worker // be read from Body. 214*d5c09012SAndroid Build Coastguard Worker int64 content_length = 6; 215*d5c09012SAndroid Build Coastguard Worker} 216