1*d5c09012SAndroid Build Coastguard Worker// Copyright 2022 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.visionai.v1alpha1; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.VisionAI.V1Alpha1"; 20*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/visionai/apiv1alpha1/visionaipb;visionaipb"; 21*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 22*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "LvaProto"; 23*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.visionai.v1alpha1"; 24*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\VisionAI\\V1alpha1"; 25*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::VisionAI::V1alpha1"; 26*d5c09012SAndroid Build Coastguard Worker 27*d5c09012SAndroid Build Coastguard Worker// Represents an actual value of an operator attribute. 28*d5c09012SAndroid Build Coastguard Workermessage AttributeValue { 29*d5c09012SAndroid Build Coastguard Worker // Attribute value. 30*d5c09012SAndroid Build Coastguard Worker oneof value { 31*d5c09012SAndroid Build Coastguard Worker // int. 32*d5c09012SAndroid Build Coastguard Worker int64 i = 1; 33*d5c09012SAndroid Build Coastguard Worker 34*d5c09012SAndroid Build Coastguard Worker // float. 35*d5c09012SAndroid Build Coastguard Worker float f = 2; 36*d5c09012SAndroid Build Coastguard Worker 37*d5c09012SAndroid Build Coastguard Worker // bool. 38*d5c09012SAndroid Build Coastguard Worker bool b = 3; 39*d5c09012SAndroid Build Coastguard Worker 40*d5c09012SAndroid Build Coastguard Worker // string. 41*d5c09012SAndroid Build Coastguard Worker bytes s = 4; 42*d5c09012SAndroid Build Coastguard Worker } 43*d5c09012SAndroid Build Coastguard Worker} 44*d5c09012SAndroid Build Coastguard Worker 45*d5c09012SAndroid Build Coastguard Worker// Defines an Analyzer. 46*d5c09012SAndroid Build Coastguard Worker// 47*d5c09012SAndroid Build Coastguard Worker// An analyzer processes data from its input streams using the logic defined in 48*d5c09012SAndroid Build Coastguard Worker// the Operator that it represents. Of course, it produces data for the output 49*d5c09012SAndroid Build Coastguard Worker// streams declared in the Operator. 50*d5c09012SAndroid Build Coastguard Workermessage AnalyzerDefinition { 51*d5c09012SAndroid Build Coastguard Worker // The inputs to this analyzer. 52*d5c09012SAndroid Build Coastguard Worker // 53*d5c09012SAndroid Build Coastguard Worker // We accept input name references of the following form: 54*d5c09012SAndroid Build Coastguard Worker // <analyzer-name>:<output-argument-name> 55*d5c09012SAndroid Build Coastguard Worker // 56*d5c09012SAndroid Build Coastguard Worker // Example: 57*d5c09012SAndroid Build Coastguard Worker // 58*d5c09012SAndroid Build Coastguard Worker // Suppose you had an operator named "SomeOp" that has 2 output 59*d5c09012SAndroid Build Coastguard Worker // arguments, the first of which is named "foo" and the second of which is 60*d5c09012SAndroid Build Coastguard Worker // named "bar", and an operator named "MyOp" that accepts 2 inputs. 61*d5c09012SAndroid Build Coastguard Worker // 62*d5c09012SAndroid Build Coastguard Worker // Also suppose that there is an analyzer named "some-analyzer" that is 63*d5c09012SAndroid Build Coastguard Worker // running "SomeOp" and another analyzer named "my-analyzer" running "MyOp". 64*d5c09012SAndroid Build Coastguard Worker // 65*d5c09012SAndroid Build Coastguard Worker // To indicate that "my-analyzer" is to consume "some-analyzer"'s "foo" 66*d5c09012SAndroid Build Coastguard Worker // output as its first input and "some-analyzer"'s "bar" output as its 67*d5c09012SAndroid Build Coastguard Worker // second input, you can set this field to the following: 68*d5c09012SAndroid Build Coastguard Worker // input = ["some-analyzer:foo", "some-analyzer:bar"] 69*d5c09012SAndroid Build Coastguard Worker message StreamInput { 70*d5c09012SAndroid Build Coastguard Worker // The name of the stream input (as discussed above). 71*d5c09012SAndroid Build Coastguard Worker string input = 1; 72*d5c09012SAndroid Build Coastguard Worker } 73*d5c09012SAndroid Build Coastguard Worker 74*d5c09012SAndroid Build Coastguard Worker // Options available for debugging purposes only. 75*d5c09012SAndroid Build Coastguard Worker message DebugOptions { 76*d5c09012SAndroid Build Coastguard Worker // Environment variables. 77*d5c09012SAndroid Build Coastguard Worker map<string, string> environment_variables = 1; 78*d5c09012SAndroid Build Coastguard Worker } 79*d5c09012SAndroid Build Coastguard Worker 80*d5c09012SAndroid Build Coastguard Worker // The name of this analyzer. 81*d5c09012SAndroid Build Coastguard Worker // 82*d5c09012SAndroid Build Coastguard Worker // Tentatively [a-z][a-z0-9]*(_[a-z0-9]+)*. 83*d5c09012SAndroid Build Coastguard Worker string analyzer = 1; 84*d5c09012SAndroid Build Coastguard Worker 85*d5c09012SAndroid Build Coastguard Worker // The name of the operator that this analyzer runs. 86*d5c09012SAndroid Build Coastguard Worker // 87*d5c09012SAndroid Build Coastguard Worker // Must match the name of a supported operator. 88*d5c09012SAndroid Build Coastguard Worker string operator = 2; 89*d5c09012SAndroid Build Coastguard Worker 90*d5c09012SAndroid Build Coastguard Worker // Input streams. 91*d5c09012SAndroid Build Coastguard Worker repeated StreamInput inputs = 3; 92*d5c09012SAndroid Build Coastguard Worker 93*d5c09012SAndroid Build Coastguard Worker // The attribute values that this analyzer applies to the operator. 94*d5c09012SAndroid Build Coastguard Worker // 95*d5c09012SAndroid Build Coastguard Worker // Supply a mapping between the attribute names and the actual value you wish 96*d5c09012SAndroid Build Coastguard Worker // to apply. If an attribute name is omitted, then it will take a 97*d5c09012SAndroid Build Coastguard Worker // preconfigured default value. 98*d5c09012SAndroid Build Coastguard Worker map<string, AttributeValue> attrs = 4; 99*d5c09012SAndroid Build Coastguard Worker 100*d5c09012SAndroid Build Coastguard Worker // Debug options. 101*d5c09012SAndroid Build Coastguard Worker DebugOptions debug_options = 5; 102*d5c09012SAndroid Build Coastguard Worker} 103*d5c09012SAndroid Build Coastguard Worker 104*d5c09012SAndroid Build Coastguard Worker// Defines a full analysis. 105*d5c09012SAndroid Build Coastguard Worker// 106*d5c09012SAndroid Build Coastguard Worker// This is a description of the overall live analytics pipeline. 107*d5c09012SAndroid Build Coastguard Worker// You may think of this as an edge list representation of a multigraph. 108*d5c09012SAndroid Build Coastguard Worker// 109*d5c09012SAndroid Build Coastguard Worker// This may be directly authored by a human in protobuf textformat, or it may be 110*d5c09012SAndroid Build Coastguard Worker// generated by a programming API (perhaps Python or JavaScript depending on 111*d5c09012SAndroid Build Coastguard Worker// context). 112*d5c09012SAndroid Build Coastguard Workermessage AnalysisDefinition { 113*d5c09012SAndroid Build Coastguard Worker // Analyzer definitions. 114*d5c09012SAndroid Build Coastguard Worker repeated AnalyzerDefinition analyzers = 1; 115*d5c09012SAndroid Build Coastguard Worker} 116