123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692 |
- // Copyright 2022 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.cloud.visionai.v1alpha1;
- import "google/api/annotations.proto";
- import "google/api/client.proto";
- import "google/api/field_behavior.proto";
- import "google/api/resource.proto";
- import "google/longrunning/operations.proto";
- import "google/protobuf/any.proto";
- import "google/protobuf/duration.proto";
- import "google/protobuf/empty.proto";
- import "google/protobuf/field_mask.proto";
- import "google/protobuf/struct.proto";
- import "google/protobuf/timestamp.proto";
- import "google/rpc/status.proto";
- import "google/type/datetime.proto";
- option csharp_namespace = "Google.Cloud.VisionAI.V1Alpha1";
- option go_package = "google.golang.org/genproto/googleapis/cloud/visionai/v1alpha1;visionai";
- option java_multiple_files = true;
- option java_outer_classname = "WarehouseProto";
- option java_package = "com.google.cloud.visionai.v1alpha1";
- option php_namespace = "Google\\Cloud\\VisionAI\\V1alpha1";
- option ruby_package = "Google::Cloud::VisionAI::V1alpha1";
- // Service that manages media content + metadata for streaming.
- service Warehouse {
- option (google.api.default_host) = "visionai.googleapis.com";
- option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
- // Creates an asset inside corpus.
- rpc CreateAsset(CreateAssetRequest) returns (Asset) {
- option (google.api.http) = {
- post: "/v1alpha1/{parent=projects/*/locations/*/corpora/*}/assets"
- body: "asset"
- };
- option (google.api.method_signature) = "parent,asset,asset_id";
- }
- // Updates an asset inside corpus.
- rpc UpdateAsset(UpdateAssetRequest) returns (Asset) {
- option (google.api.http) = {
- patch: "/v1alpha1/{asset.name=projects/*/locations/*/corpora/*/assets/*}"
- body: "asset"
- };
- option (google.api.method_signature) = "asset,update_mask";
- }
- // Reads an asset inside corpus.
- rpc GetAsset(GetAssetRequest) returns (Asset) {
- option (google.api.http) = {
- get: "/v1alpha1/{name=projects/*/locations/*/corpora/*/assets/*}"
- };
- option (google.api.method_signature) = "name";
- }
- // Lists an list of assets inside corpus.
- rpc ListAssets(ListAssetsRequest) returns (ListAssetsResponse) {
- option (google.api.http) = {
- get: "/v1alpha1/{parent=projects/*/locations/*/corpora/*}/assets"
- };
- option (google.api.method_signature) = "parent";
- }
- // Deletes asset inside corpus.
- rpc DeleteAsset(DeleteAssetRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- delete: "/v1alpha1/{name=projects/*/locations/*/corpora/*/assets/*}"
- };
- option (google.api.method_signature) = "name";
- option (google.longrunning.operation_info) = {
- response_type: "google.protobuf.Empty"
- metadata_type: "DeleteAssetMetadata"
- };
- }
- // Creates a corpus inside a project.
- rpc CreateCorpus(CreateCorpusRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = {
- post: "/v1alpha1/{parent=projects/*/locations/*}/corpora"
- body: "corpus"
- };
- option (google.api.method_signature) = "parent,corpus";
- option (google.longrunning.operation_info) = {
- response_type: "Corpus"
- metadata_type: "CreateCorpusMetadata"
- };
- }
- // Gets corpus details inside a project.
- rpc GetCorpus(GetCorpusRequest) returns (Corpus) {
- option (google.api.http) = {
- get: "/v1alpha1/{name=projects/*/locations/*/corpora/*}"
- };
- option (google.api.method_signature) = "name";
- }
- // Updates a corpus in a project.
- rpc UpdateCorpus(UpdateCorpusRequest) returns (Corpus) {
- option (google.api.http) = {
- patch: "/v1alpha1/{corpus.name=projects/*/locations/*/corpora/*}"
- body: "corpus"
- };
- option (google.api.method_signature) = "corpus,update_mask";
- }
- // Lists all corpora in a project.
- rpc ListCorpora(ListCorporaRequest) returns (ListCorporaResponse) {
- option (google.api.http) = {
- get: "/v1alpha1/{parent=projects/*/locations/*}/corpora"
- };
- option (google.api.method_signature) = "parent";
- }
- // Deletes a corpus only if its empty.
- // Returns empty response.
- rpc DeleteCorpus(DeleteCorpusRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/v1alpha1/{name=projects/*/locations/*/corpora/*}"
- };
- option (google.api.method_signature) = "name";
- }
- // Creates data schema inside corpus.
- rpc CreateDataSchema(CreateDataSchemaRequest) returns (DataSchema) {
- option (google.api.http) = {
- post: "/v1alpha1/{parent=projects/*/locations/*/corpora/*}/dataSchemas"
- body: "data_schema"
- };
- option (google.api.method_signature) = "parent,data_schema";
- }
- // Updates data schema inside corpus.
- rpc UpdateDataSchema(UpdateDataSchemaRequest) returns (DataSchema) {
- option (google.api.http) = {
- patch: "/v1alpha1/{data_schema.name=projects/*/locations/*/corpora/*/dataSchemas/*}"
- body: "data_schema"
- };
- option (google.api.method_signature) = "data_schema,update_mask";
- }
- // Gets data schema inside corpus.
- rpc GetDataSchema(GetDataSchemaRequest) returns (DataSchema) {
- option (google.api.http) = {
- get: "/v1alpha1/{name=projects/*/locations/*/corpora/*/dataSchemas/*}"
- };
- option (google.api.method_signature) = "name";
- }
- // Deletes data schema inside corpus.
- rpc DeleteDataSchema(DeleteDataSchemaRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/v1alpha1/{name=projects/*/locations/*/corpora/*/dataSchemas/*}"
- };
- option (google.api.method_signature) = "name";
- }
- // Lists a list of data schemas inside corpus.
- rpc ListDataSchemas(ListDataSchemasRequest) returns (ListDataSchemasResponse) {
- option (google.api.http) = {
- get: "/v1alpha1/{parent=projects/*/locations/*/corpora/*}/dataSchemas"
- };
- option (google.api.method_signature) = "parent";
- }
- // Creates annotation inside asset.
- rpc CreateAnnotation(CreateAnnotationRequest) returns (Annotation) {
- option (google.api.http) = {
- post: "/v1alpha1/{parent=projects/*/locations/*/corpora/*/assets/*}/annotations"
- body: "annotation"
- };
- option (google.api.method_signature) = "parent,annotation,annotation_id";
- }
- // Reads annotation inside asset.
- rpc GetAnnotation(GetAnnotationRequest) returns (Annotation) {
- option (google.api.http) = {
- get: "/v1alpha1/{name=projects/*/locations/*/corpora/*/assets/*/annotations/*}"
- };
- option (google.api.method_signature) = "name";
- }
- // Lists a list of annotations inside asset.
- rpc ListAnnotations(ListAnnotationsRequest) returns (ListAnnotationsResponse) {
- option (google.api.http) = {
- get: "/v1alpha1/{parent=projects/*/locations/*/corpora/*/assets/*}/annotations"
- };
- option (google.api.method_signature) = "parent";
- }
- // Updates annotation inside asset.
- rpc UpdateAnnotation(UpdateAnnotationRequest) returns (Annotation) {
- option (google.api.http) = {
- patch: "/v1alpha1/{annotation.name=projects/*/locations/*/corpora/*/assets/*/annotations/*}"
- body: "annotation"
- };
- option (google.api.method_signature) = "annotation,update_mask";
- }
- // Deletes annotation inside asset.
- rpc DeleteAnnotation(DeleteAnnotationRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/v1alpha1/{name=projects/*/locations/*/corpora/*/assets/*/annotations/*}"
- };
- option (google.api.method_signature) = "name";
- }
- // Ingests data for the asset. It is not allowed to ingest a data chunk which
- // is already expired according to TTL.
- // This method is only available via the gRPC API (not HTTP since
- // bi-directional streaming is not supported via HTTP).
- rpc IngestAsset(stream IngestAssetRequest) returns (stream IngestAssetResponse) {
- }
- // Generates clips for downloading. The api takes in a time range, and
- // generates a clip of the first content available after start_time and
- // before end_time, which may overflow beyond these bounds.
- // Returned clips are truncated if the total size of the clips are larger
- // than 100MB.
- rpc ClipAsset(ClipAssetRequest) returns (ClipAssetResponse) {
- option (google.api.http) = {
- post: "/v1alpha1/{name=projects/*/locations/*/corpora/*/assets/*}:clip"
- body: "*"
- };
- }
- // Generates a uri for an HLS manifest. The api takes in a collection of time
- // ranges, and generates a URI for an HLS manifest that covers all the
- // requested time ranges.
- rpc GenerateHlsUri(GenerateHlsUriRequest) returns (GenerateHlsUriResponse) {
- option (google.api.http) = {
- post: "/v1alpha1/{name=projects/*/locations/*/corpora/*/assets/*}:generateHlsUri"
- body: "*"
- };
- }
- // Creates a search configuration inside a corpus.
- //
- // Please follow the rules below to create a valid CreateSearchConfigRequest.
- // --- General Rules ---
- // 1. Request.search_config_id must not be associated with an existing
- // SearchConfig.
- // 2. Request must contain at least one non-empty search_criteria_property or
- // facet_property.
- // 3. mapped_fields must not be empty, and must map to existing UGA keys.
- // 4. All mapped_fields must be of the same type.
- // 5. All mapped_fields must share the same granularity.
- // 6. All mapped_fields must share the same semantic SearchConfig match
- // options.
- // For property-specific rules, please reference the comments for
- // FacetProperty and SearchCriteriaProperty.
- rpc CreateSearchConfig(CreateSearchConfigRequest) returns (SearchConfig) {
- option (google.api.http) = {
- post: "/v1alpha1/{parent=projects/*/locations/*/corpora/*}/searchConfigs"
- body: "search_config"
- };
- option (google.api.method_signature) = "parent,search_config,search_config_id";
- }
- // Updates a search configuration inside a corpus.
- //
- // Please follow the rules below to create a valid UpdateSearchConfigRequest.
- // --- General Rules ---
- // 1. Request.search_configuration.name must already exist.
- // 2. Request must contain at least one non-empty search_criteria_property or
- // facet_property.
- // 3. mapped_fields must not be empty, and must map to existing UGA keys.
- // 4. All mapped_fields must be of the same type.
- // 5. All mapped_fields must share the same granularity.
- // 6. All mapped_fields must share the same semantic SearchConfig match
- // options.
- // For property-specific rules, please reference the comments for
- // FacetProperty and SearchCriteriaProperty.
- rpc UpdateSearchConfig(UpdateSearchConfigRequest) returns (SearchConfig) {
- option (google.api.http) = {
- patch: "/v1alpha1/{search_config.name=projects/*/locations/*/corpora/*/searchConfigs/*}"
- body: "search_config"
- };
- option (google.api.method_signature) = "search_config,update_mask";
- }
- // Gets a search configuration inside a corpus.
- rpc GetSearchConfig(GetSearchConfigRequest) returns (SearchConfig) {
- option (google.api.http) = {
- get: "/v1alpha1/{name=projects/*/locations/*/corpora/*/searchConfigs/*}"
- };
- option (google.api.method_signature) = "name";
- }
- // Deletes a search configuration inside a corpus.
- //
- // For a DeleteSearchConfigRequest to be valid,
- // Request.search_configuration.name must already exist.
- rpc DeleteSearchConfig(DeleteSearchConfigRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = {
- delete: "/v1alpha1/{name=projects/*/locations/*/corpora/*/searchConfigs/*}"
- };
- option (google.api.method_signature) = "name";
- }
- // Lists all search configurations inside a corpus.
- rpc ListSearchConfigs(ListSearchConfigsRequest) returns (ListSearchConfigsResponse) {
- option (google.api.http) = {
- get: "/v1alpha1/{parent=projects/*/locations/*/corpora/*}/searchConfigs"
- };
- option (google.api.method_signature) = "parent";
- }
- // Search media asset.
- rpc SearchAssets(SearchAssetsRequest) returns (SearchAssetsResponse) {
- option (google.api.http) = {
- post: "/v1alpha1/{corpus=projects/*/locations/*/corpora/*}:searchAssets"
- body: "*"
- };
- }
- }
- // Different types for a facet bucket.
- enum FacetBucketType {
- // Unspecified type.
- FACET_BUCKET_TYPE_UNSPECIFIED = 0;
- // Value type.
- FACET_BUCKET_TYPE_VALUE = 1;
- // Datetime type.
- FACET_BUCKET_TYPE_DATETIME = 2;
- // Fixed Range type.
- FACET_BUCKET_TYPE_FIXED_RANGE = 3;
- // Custom Range type.
- FACET_BUCKET_TYPE_CUSTOM_RANGE = 4;
- }
- // Request message for CreateAssetRequest.
- message CreateAssetRequest {
- // Required. The parent resource where this asset will be created.
- // Format: projects/*/locations/*/corpora/*
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Corpus"
- }
- ];
- // Required. The asset to create.
- Asset asset = 2 [(google.api.field_behavior) = REQUIRED];
- // Optional. The ID to use for the asset, which will become the final component of
- // the asset's resource name if user choose to specify. Otherwise, asset id
- // will be generated by system.
- //
- // This value should be up to 63 characters, and valid characters
- // are /[a-z][0-9]-/. The first character must be a letter, the last could be
- // a letter or a number.
- optional string asset_id = 3 [(google.api.field_behavior) = OPTIONAL];
- }
- // Request message for GetAsset.
- message GetAssetRequest {
- // Required. The name of the asset to retrieve.
- // Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Asset"
- }
- ];
- }
- // Request message for ListAssets.
- message ListAssetsRequest {
- // Required. The parent, which owns this collection of assets.
- // Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- child_type: "visionai.googleapis.com/Asset"
- }
- ];
- // The maximum number of assets to return. The service may return fewer than
- // this value.
- // If unspecified, at most 50 assets will be returned.
- // The maximum value is 1000; values above 1000 will be coerced to 1000.
- int32 page_size = 2;
- // A page token, received from a previous `ListAssets` call.
- // Provide this to retrieve the subsequent page.
- //
- // When paginating, all other parameters provided to `ListAssets` must match
- // the call that provided the page token.
- string page_token = 3;
- }
- // Response message for ListAssets.
- message ListAssetsResponse {
- // The assets from the specified corpus.
- repeated Asset assets = 1;
- // A token, which can be sent as `page_token` to retrieve the next page.
- // If this field is omitted, there are no subsequent pages.
- string next_page_token = 2;
- }
- // Response message for UpdateAsset.
- message UpdateAssetRequest {
- // Required. The asset to update.
- //
- // The asset's `name` field is used to identify the asset to be updated.
- // Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}
- Asset asset = 1 [(google.api.field_behavior) = REQUIRED];
- // The list of fields to be updated.
- google.protobuf.FieldMask update_mask = 2;
- }
- // Request message for DeleteAsset.
- message DeleteAssetRequest {
- // Required. The name of the asset to delete.
- // Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Asset"
- }
- ];
- }
- // An asset is a resource in corpus. It represents a media object inside corpus,
- // contains metadata and another resource annotation. Different feature could be
- // applied to the asset to generate annotations. User could specified annotation
- // related to the target asset.
- message Asset {
- option (google.api.resource) = {
- type: "visionai.googleapis.com/Asset"
- pattern: "projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}"
- };
- // Resource name of the asset.
- // Form:
- // `projects/{project_number}/locations/{location_id}/corpora/{corpus_id}/assets/{asset_id}`
- string name = 1;
- // The duration for which all media assets, associated metadata, and search
- // documents can exist. If not set, then it will using the default ttl in the
- // parent corpus resource.
- google.protobuf.Duration ttl = 2;
- }
- // Request message of CreateCorpus API.
- message CreateCorpusRequest {
- // Required. Form: `projects/{project_number}/locations/{location_id}`
- string parent = 1 [(google.api.field_behavior) = REQUIRED];
- // Required. The corpus to be created.
- Corpus corpus = 2 [(google.api.field_behavior) = REQUIRED];
- }
- // Corpus is a set of video contents for management. Within a corpus, videos
- // share the same data schema. Search is also restricted within a single corpus.
- message Corpus {
- option (google.api.resource) = {
- type: "visionai.googleapis.com/Corpus"
- pattern: "projects/{project_number}/locations/{location}/corpora/{corpus}"
- };
- // Resource name of the corpus.
- // Form:
- // `projects/{project_number}/locations/{location_id}/corpora/{corpus_id}`
- string name = 1;
- // Required. The corpus name to shown in the UI. The name can be up to 32 characters
- // long.
- string display_name = 2 [(google.api.field_behavior) = REQUIRED];
- // Optional. Description of the corpus. Can be up to 25000 characters long.
- string description = 3 [(google.api.field_behavior) = OPTIONAL];
- // Required. The default TTL value for all assets under the corpus without a asset level
- // user-defined TTL with a maximum of 10 years. This is required for all
- // corpora.
- google.protobuf.Duration default_ttl = 5 [(google.api.field_behavior) = REQUIRED];
- }
- // Request message for GetCorpus.
- message GetCorpusRequest {
- // Required. The resource name of the corpus to retrieve.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Corpus"
- }
- ];
- }
- // Request message for UpdateCorpus.
- message UpdateCorpusRequest {
- // Required. The corpus which replaces the resource on the server.
- Corpus corpus = 1 [(google.api.field_behavior) = REQUIRED];
- // The list of fields to be updated.
- google.protobuf.FieldMask update_mask = 2;
- }
- // Request message for ListCorpora.
- message ListCorporaRequest {
- // Required. The resource name of the project from which to list corpora.
- string parent = 1 [(google.api.field_behavior) = REQUIRED];
- // Requested page size. API may return fewer results than requested.
- // If negative, INVALID_ARGUMENT error will be returned.
- // If unspecified or 0, API will pick a default size, which is 10.
- // If the requested page size is larger than the maximum size, API will pick
- // use the maximum size, which is 20.
- int32 page_size = 2;
- // A token identifying a page of results for the server to return.
- // Typically obtained via [ListCorpora.next_page_token][] of the previous
- // [Warehouse.ListCorpora][google.cloud.visionai.v1alpha1.Warehouse.ListCorpora] call.
- string page_token = 3;
- }
- // Response message for ListCorpora.
- message ListCorporaResponse {
- // The corpora in the project.
- repeated Corpus corpora = 1;
- // A token to retrieve next page of results.
- // Pass to [ListCorporaRequest.page_token][google.cloud.visionai.v1alpha1.ListCorporaRequest.page_token] to obtain that page.
- string next_page_token = 2;
- }
- // Request message for DeleteCorpus.
- message DeleteCorpusRequest {
- // Required. The resource name of the corpus to delete.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Corpus"
- }
- ];
- }
- // Request message for CreateDataSchema.
- message CreateDataSchemaRequest {
- // Required. The parent resource where this data schema will be created.
- // Format: projects/*/locations/*/corpora/*
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Corpus"
- }
- ];
- // Required. The data schema to create.
- DataSchema data_schema = 2 [(google.api.field_behavior) = REQUIRED];
- }
- // Data schema indicates how the user specified annotation is interpreted in the
- // system.
- message DataSchema {
- option (google.api.resource) = {
- type: "visionai.googleapis.com/DataSchema"
- pattern: "projects/{project_number}/locations/{location}/corpora/{corpus}/dataSchemas/{data_schema}"
- };
- // Resource name of the data schema in the form of:
- // `projects/{project_number}/locations/{location}/corpora/{corpus}/dataSchemas/{data_schema}`
- // where {data_schema} part should be the same as the `key` field below.
- string name = 1;
- // Required. The key of this data schema. This key should be matching the key of user
- // specified annotation and unique inside corpus. This value can be up to
- // 63 characters, and valid characters are /[a-z][0-9]-/. The first character
- // must be a letter, the last could be a letter or a number.
- string key = 2 [(google.api.field_behavior) = REQUIRED];
- // The schema details mapping to the key.
- DataSchemaDetails schema_details = 3;
- }
- // Data schema details indicates the data type and the data struct corresponding
- // to the key of user specified annotation.
- message DataSchemaDetails {
- // The configuration for `PROTO_ANY` data type.
- message ProtoAnyConfig {
- // The type URI of the proto message.
- string type_uri = 1;
- }
- // The search strategy for annotations value of the `key`.
- message SearchStrategy {
- // The types of search strategies to be applied on the annotation key.
- enum SearchStrategyType {
- // Annotatation values of the `key` above will not be searchable.
- NO_SEARCH = 0;
- // When searching with `key`, the value must be exactly as the annotation
- // value that has been ingested.
- EXACT_SEARCH = 1;
- // When searching with `key`, Warehouse will perform broad search based on
- // semantic of the annotation value.
- SMART_SEARCH = 2;
- }
- // The type of search strategy to be applied on the `key` above.
- // The allowed `search_strategy_type` is different for different data types,
- // which is documented in the DataSchemaDetails.DataType. Specifying
- // unsupported `search_strategy_type` for data types will result in
- // INVALID_ARGUMENT error.
- SearchStrategyType search_strategy_type = 1;
- }
- // Data type of the annotation.
- enum DataType {
- // Unspecified type.
- DATA_TYPE_UNSPECIFIED = 0;
- // Integer type.
- // Allowed search strategies:
- // - DataSchema.SearchStrategy.NO_SEARCH,
- // - DataSchema.SearchStrategy.EXACT_SEARCH.
- // Supports query by IntRangeArray.
- INTEGER = 1;
- // Float type.
- // Allowed search strategies:
- // - DataSchema.SearchStrategy.NO_SEARCH,
- // - DataSchema.SearchStrategy.EXACT_SEARCH.
- // Supports query by FloatRangeArray.
- FLOAT = 2;
- // String type.
- // Allowed search strategies:
- // - DataSchema.SearchStrategy.NO_SEARCH,
- // - DataSchema.SearchStrategy.EXACT_SEARCH,
- // - DataSchema.SearchStrategy.SMART_SEARCH.
- STRING = 3;
- // Supported formats:
- // %Y-%m-%dT%H:%M:%E*S%E*z (absl::RFC3339_full)
- // %Y-%m-%dT%H:%M:%E*S
- // %Y-%m-%dT%H:%M%E*z
- // %Y-%m-%dT%H:%M
- // %Y-%m-%dT%H%E*z
- // %Y-%m-%dT%H
- // %Y-%m-%d%E*z
- // %Y-%m-%d
- // %Y-%m
- // %Y
- // Allowed search strategies:
- // - DataSchema.SearchStrategy.NO_SEARCH,
- // - DataSchema.SearchStrategy.EXACT_SEARCH.
- // Supports query by DateTimeRangeArray.
- DATETIME = 5;
- // Geo coordinate type.
- // Allowed search strategies:
- // - DataSchema.SearchStrategy.NO_SEARCH,
- // - DataSchema.SearchStrategy.EXACT_SEARCH.
- // Supports query by GeoLocationArray.
- GEO_COORDINATE = 7;
- // Type to pass any proto as available in annotations.proto. Only use
- // internally.
- // Available proto types and its corresponding search behavior:
- // - ImageObjectDetectionPredictionResult, allows SMART_SEARCH on
- // display_names and NO_SEARCH.
- // - ClassificationPredictionResult, allows SMART_SEARCH on display_names
- // and NO_SEARCH.
- // - ImageSegmentationPredictionResult, allows NO_SEARCH.
- // - VideoActionRecognitionPredictionResult, allows SMART_SEARCH on
- // display_name and NO_SEARCH.
- // - VideoObjectTrackingPredictionResult, allows SMART_SEARCH on
- // display_name and NO_SEARCH.
- // - VideoClassificationPredictionResult, allows SMART_SEARCH on
- // display_name and NO_SEARCH.
- // - OccupancyCountingPredictionResult, allows EXACT_SEARCH on
- // stats.full_frame_count.count and NO_SEARCH.
- // - ObjectDetectionPredictionResult, allows SMART_SEARCH on
- // identified_boxes.entity.label_string and NO_SEARCH.
- PROTO_ANY = 8;
- // Boolean type.
- // Allowed search strategies:
- // - DataSchema.SearchStrategy.NO_SEARCH,
- // - DataSchema.SearchStrategy.EXACT_SEARCH.
- BOOLEAN = 9;
- }
- // The granularity of annotations under this DataSchema.
- enum Granularity {
- // Unspecified granularity.
- GRANULARITY_UNSPECIFIED = 0;
- // Asset-level granularity (annotations must not contain partition info).
- GRANULARITY_ASSET_LEVEL = 1;
- // Partition-level granularity (annotations must contain partition info).
- GRANULARITY_PARTITION_LEVEL = 2;
- }
- // Type of the annotation.
- DataType type = 1;
- // Config for protobuf any type.
- ProtoAnyConfig proto_any_config = 6;
- // The granularity associated with this DataSchema.
- Granularity granularity = 5;
- // The search strategy to be applied on the `key` above.
- SearchStrategy search_strategy = 7;
- }
- // Request message for UpdateDataSchema.
- message UpdateDataSchemaRequest {
- // Required. The data schema's `name` field is used to identify the data schema to be
- // updated. Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}/dataSchemas/{data_schema}
- DataSchema data_schema = 1 [(google.api.field_behavior) = REQUIRED];
- // The list of fields to be updated.
- google.protobuf.FieldMask update_mask = 2;
- }
- // Request message for GetDataSchema.
- message GetDataSchemaRequest {
- // Required. The name of the data schema to retrieve.
- // Format:
- // projects/{project_number}/locations/{location_id}/corpora/{corpus_id}/dataSchemas/{data_schema_id}
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/DataSchema"
- }
- ];
- }
- // Request message for DeleteDataSchema.
- message DeleteDataSchemaRequest {
- // Required. The name of the data schema to delete.
- // Format:
- // projects/{project_number}/locations/{location_id}/corpora/{corpus_id}/dataSchemas/{data_schema_id}
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/DataSchema"
- }
- ];
- }
- // Request message for ListDataSchemas.
- message ListDataSchemasRequest {
- // Required. The parent, which owns this collection of data schemas.
- // Format:
- // projects/{project_number}/locations/{location_id}/corpora/{corpus_id}
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- child_type: "visionai.googleapis.com/DataSchema"
- }
- ];
- // The maximum number of data schemas to return. The service may return fewer
- // than this value. If unspecified, at most 50 data schemas will be returned.
- // The maximum value is 1000; values above 1000 will be coerced to 1000.
- int32 page_size = 2;
- // A page token, received from a previous `ListDataSchemas` call.
- // Provide this to retrieve the subsequent page.
- //
- // When paginating, all other parameters provided to `ListDataSchemas` must
- // match the call that provided the page token.
- string page_token = 3;
- }
- // Response message for ListDataSchemas.
- message ListDataSchemasResponse {
- // The data schemas from the specified corpus.
- repeated DataSchema data_schemas = 1;
- // A token, which can be sent as `page_token` to retrieve the next page.
- // If this field is omitted, there are no subsequent pages.
- string next_page_token = 2;
- }
- // Request message for CreateAnnotation.
- message CreateAnnotationRequest {
- // Required. The parent resource where this annotation will be created.
- // Format: projects/*/locations/*/corpora/*/assets/*
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Asset"
- }
- ];
- // Required. The annotation to create.
- Annotation annotation = 2 [(google.api.field_behavior) = REQUIRED];
- // Optional. The ID to use for the annotation, which will become the final component of
- // the annotation's resource name if user choose to specify. Otherwise,
- // annotation id will be generated by system.
- //
- // This value should be up to 63 characters, and valid characters
- // are /[a-z][0-9]-/. The first character must be a letter, the last could be
- // a letter or a number.
- optional string annotation_id = 3 [(google.api.field_behavior) = OPTIONAL];
- }
- // An annotation is a resource in asset. It represents a key-value mapping of
- // content in asset.
- message Annotation {
- option (google.api.resource) = {
- type: "visionai.googleapis.com/Annotation"
- pattern: "projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}/annotations/{annotation}"
- };
- // Resource name of the annotation.
- // Form:
- // `projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}/annotations/{annotation}`
- string name = 1;
- // User provided annotation.
- UserSpecifiedAnnotation user_specified_annotation = 2;
- }
- // Annotation provided by users.
- message UserSpecifiedAnnotation {
- // Required. Key of the annotation. The key must be set with type by CreateDataSchema.
- string key = 1 [(google.api.field_behavior) = REQUIRED];
- // Value of the annotation. The value must be able to convert
- // to the type according to the data schema.
- AnnotationValue value = 2;
- // Partition information in time and space for the sub-asset level annotation.
- Partition partition = 3;
- }
- // Location Coordinate Representation
- message GeoCoordinate {
- // Latitude Coordinate. Degrees [-90 .. 90]
- double latitude = 1;
- // Longitude Coordinate. Degrees [-180 .. 180]
- double longitude = 2;
- }
- // Value of annotation, including all types available in data schema.
- message AnnotationValue {
- oneof value {
- // Value of int type annotation.
- int64 int_value = 1;
- // Value of float type annotation.
- float float_value = 2;
- // Value of string type annotation.
- string str_value = 3;
- // Value of date time type annotation.
- string datetime_value = 5;
- // Value of geo coordinate type annotation.
- GeoCoordinate geo_coordinate = 7;
- // Value of any proto value.
- google.protobuf.Any proto_any_value = 8;
- // Value of boolean type annotation.
- bool bool_value = 9;
- // Value of customized struct annotation.
- google.protobuf.Struct customized_struct_data_value = 10;
- }
- }
- // Request message for GetAnnotation API.
- message ListAnnotationsRequest {
- // The parent, which owns this collection of annotations.
- // Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}
- string parent = 1 [(google.api.resource_reference) = {
- type: "visionai.googleapis.com/Asset"
- }];
- // The maximum number of annotations to return. The service may return fewer
- // than this value. If unspecified, at most 50 annotations will be returned.
- // The maximum value is 1000; values above 1000 will be coerced to 1000.
- int32 page_size = 2;
- // A page token, received from a previous `ListAnnotations` call.
- // Provide this to retrieve the subsequent page.
- //
- // When paginating, all other parameters provided to `ListAnnotations` must
- // match the call that provided the page token.
- string page_token = 3;
- // The filter applied to the returned list.
- // We only support filtering for the following fields:
- // `partition.temporal_partition.start_time`,
- // `partition.temporal_partition.end_time`, and `key`.
- // Timestamps are specified in the RFC-3339 format, and only one restriction
- // may be applied per field, joined by conjunctions.
- // Format:
- // "partition.temporal_partition.start_time > "2012-04-21T11:30:00-04:00" AND
- // partition.temporal_partition.end_time < "2012-04-22T11:30:00-04:00" AND
- // key = "example_key""
- string filter = 4;
- }
- // Request message for ListAnnotations API.
- message ListAnnotationsResponse {
- // The annotations from the specified asset.
- repeated Annotation annotations = 1;
- // A token, which can be sent as `page_token` to retrieve the next page.
- // If this field is omitted, there are no subsequent pages.
- string next_page_token = 2;
- }
- // Request message for GetAnnotation API.
- message GetAnnotationRequest {
- // Required. The name of the annotation to retrieve.
- // Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}/annotations/{annotation}
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Annotation"
- }
- ];
- }
- // Request message for UpdateAnnotation API.
- message UpdateAnnotationRequest {
- // Required. The annotation to update.
- // The annotation's `name` field is used to identify the annotation to be
- // updated. Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}/annotations/{annotation}
- Annotation annotation = 1 [(google.api.field_behavior) = REQUIRED];
- // The list of fields to be updated.
- google.protobuf.FieldMask update_mask = 2;
- }
- // Request message for DeleteAnnotation API.
- message DeleteAnnotationRequest {
- // Required. The name of the annotation to delete.
- // Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}/assets/{asset}/annotations/{annotation}
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Annotation"
- }
- ];
- }
- // Request message for CreateSearchConfig.
- message CreateSearchConfigRequest {
- // Required. The parent resource where this search configuration will be created.
- // Format: projects/*/locations/*/corpora/*
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- child_type: "visionai.googleapis.com/SearchConfig"
- }
- ];
- // Required. The search config to create.
- SearchConfig search_config = 2 [(google.api.field_behavior) = REQUIRED];
- // Required. ID to use for the new search config. Will become the final component of the
- // SearchConfig's resource name. This value should be up to 63 characters, and
- // valid characters are /[a-z][0-9]-_/. The first character must be a letter,
- // the last could be a letter or a number.
- string search_config_id = 3 [(google.api.field_behavior) = REQUIRED];
- }
- // Request message for UpdateSearchConfig.
- message UpdateSearchConfigRequest {
- // Required. The search configuration to update.
- //
- // The search configuration's `name` field is used to identify the resource to
- // be updated. Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}/searchConfigs/{search_config}
- SearchConfig search_config = 1 [(google.api.field_behavior) = REQUIRED];
- // The list of fields to be updated. If left unset, all field paths will be
- // updated/overwritten.
- google.protobuf.FieldMask update_mask = 2;
- }
- // Request message for GetSearchConfig.
- message GetSearchConfigRequest {
- // Required. The name of the search configuration to retrieve.
- // Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}/searchConfigs/{search_config}
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/SearchConfig"
- }
- ];
- }
- // Request message for DeleteSearchConfig.
- message DeleteSearchConfigRequest {
- // Required. The name of the search configuration to delete.
- // Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}/searchConfigs/{search_config}
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/SearchConfig"
- }
- ];
- }
- // Request message for ListSearchConfigs.
- message ListSearchConfigsRequest {
- // Required. The parent, which owns this collection of search configurations.
- // Format:
- // projects/{project_number}/locations/{location}/corpora/{corpus}
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- child_type: "visionai.googleapis.com/SearchConfig"
- }
- ];
- // The maximum number of search configurations to return. The service may
- // return fewer than this value. If unspecified, a page size of 50 will be
- // used. The maximum value is 1000; values above 1000 will be coerced to 1000.
- int32 page_size = 2;
- // A page token, received from a previous `ListSearchConfigs` call.
- // Provide this to retrieve the subsequent page.
- //
- // When paginating, all other parameters provided to
- // `ListSearchConfigs` must match the call that provided the page
- // token.
- string page_token = 3;
- }
- // Response message for ListSearchConfigs.
- message ListSearchConfigsResponse {
- // The search configurations from the specified corpus.
- repeated SearchConfig search_configs = 1;
- // A token, which can be sent as `page_token` to retrieve the next page.
- // If this field is omitted, there are no subsequent pages.
- string next_page_token = 2;
- }
- // SearchConfig stores different properties that will affect search
- // behaviors and search results.
- message SearchConfig {
- option (google.api.resource) = {
- type: "visionai.googleapis.com/SearchConfig"
- pattern: "projects/{project_number}/locations/{location}/corpora/{corpus}/searchConfigs/{search_config}"
- };
- // Resource name of the search configuration.
- // For CustomSearchCriteria, search_config would be the search
- // operator name. For Facets, search_config would be the facet
- // dimension name.
- // Form:
- // `projects/{project_number}/locations/{location}/corpora/{corpus}/searchConfigs/{search_config}`
- string name = 1;
- // Establishes a FacetDimension and associated specifications.
- FacetProperty facet_property = 2;
- // Creates a mapping between a custom SearchCriteria and one or more UGA keys.
- SearchCriteriaProperty search_criteria_property = 3;
- }
- // Central configuration for a facet.
- message FacetProperty {
- // If bucket type is FIXED_RANGE, specify how values are bucketized. Use
- // FixedRangeBucketSpec when you want to create multiple buckets with equal
- // granularities. Using integer bucket value as an example, when
- // bucket_start = 0, bucket_granularity = 10, bucket_count = 5, this facet
- // will be aggregated via the following buckets:
- // [-inf, 0), [0, 10), [10, 20), [20, 30), [30, inf).
- // Notably, bucket_count <= 1 is an invalid spec.
- message FixedRangeBucketSpec {
- // Lower bound of the bucket. NOTE: Only integer type is currently supported
- // for this field.
- FacetValue bucket_start = 1;
- // Bucket granularity. NOTE: Only integer type is currently supported for
- // this field.
- FacetValue bucket_granularity = 2;
- // Total number of buckets.
- int32 bucket_count = 3;
- }
- // If bucket type is CUSTOM_RANGE, specify how values are bucketized. Use
- // integer bucket value as an example, when the endpoints are 0, 10, 100, and
- // 1000, we will generate the following facets:
- // [-inf, 0), [0, 10), [10, 100), [100, 1000), [1000, inf).
- // Notably:
- // - endpoints must be listed in ascending order. Otherwise, the SearchConfig
- // API will reject the facet config.
- // - < 1 endpoints is an invalid spec.
- message CustomRangeBucketSpec {
- // Currently, only integer type is supported for this field.
- repeated FacetValue endpoints = 1;
- }
- // If bucket type is DATE, specify how date values are bucketized.
- message DateTimeBucketSpec {
- // Granularity enum for the datetime bucket.
- enum Granularity {
- // Unspecified granularity.
- GRANULARITY_UNSPECIFIED = 0;
- // Granularity is year.
- YEAR = 1;
- // Granularity is month.
- MONTH = 2;
- // Granularity is day.
- DAY = 3;
- }
- // Granularity of date type facet.
- Granularity granularity = 1;
- }
- oneof range_facet_config {
- // Fixed range facet bucket config.
- FixedRangeBucketSpec fixed_range_bucket_spec = 5;
- // Custom range facet bucket config.
- CustomRangeBucketSpec custom_range_bucket_spec = 6;
- // Datetime range facet bucket config.
- DateTimeBucketSpec datetime_bucket_spec = 7;
- }
- // Name of the facets, which are the dimensions users want to use to refine
- // search results. `mapped_fields` will match UserSpecifiedDataSchema keys.
- //
- // For example, user can add a bunch of UGAs with the same key, such as
- // player:adam, player:bob, player:charles. When multiple mapped_fields are
- // specified, will merge their value together as final facet value. E.g.
- // home_team: a, home_team:b, away_team:a, away_team:c, when facet_field =
- // [home_team, away_team], facet_value will be [a, b, c].
- //
- // UNLESS this is a 1:1 facet dimension (mapped_fields.size() == 1) AND the
- // mapped_field equals the parent SearchConfig.name, the parent must
- // also contain a SearchCriteriaProperty that maps to the same fields.
- // mapped_fields must not be empty.
- repeated string mapped_fields = 1;
- // Display name of the facet. To be used by UI for facet rendering.
- string display_name = 2;
- // Maximum number of unique bucket to return for one facet. Bucket number can
- // be large for high-cardinality facet such as "player". We only return top-n
- // most related ones to user. If it's <= 0, the server will decide the
- // appropriate result_size.
- int64 result_size = 3;
- // Facet bucket type e.g. value, range.
- FacetBucketType bucket_type = 4;
- }
- // Central configuration for custom search criteria.
- message SearchCriteriaProperty {
- // Each mapped_field corresponds to a UGA key. To understand how this property
- // works, take the following example. In the SearchConfig table, the
- // user adds this entry:
- // search_config {
- // name: "person"
- // search_criteria_property {
- // mapped_fields: "player"
- // mapped_fields: "coach"
- // }
- // }
- //
- // Now, when a user issues a query like:
- // criteria {
- // field: "person"
- // text_array {
- // txt_values: "Tom Brady"
- // txt_values: "Bill Belichick"
- // }
- // }
- //
- // MWH search will return search documents where (player=Tom Brady ||
- // coach=Tom Brady || player=Bill Belichick || coach=Bill Belichick).
- repeated string mapped_fields = 1;
- }
- // Definition of a single value with generic type.
- message FacetValue {
- oneof value {
- // String type value.
- string string_value = 1;
- // Integer type value.
- int64 integer_value = 2;
- // Datetime type value.
- google.type.DateTime datetime_value = 3;
- }
- }
- // Holds the facet value, selections state, and metadata.
- message FacetBucket {
- // The range of values [start, end) for which faceting is applied.
- message Range {
- // Start of the range. Non-existence indicates some bound (e.g. -inf).
- FacetValue start = 1;
- // End of the range. Non-existence indicates some bound (e.g. inf).
- FacetValue end = 2;
- }
- // Bucket associated with a facet. For example, bucket of facet “team”
- // can be "49ers", "patriots", etc; bucket of facet "player" can be "tom
- // brady", "drew brees", etc.
- oneof bucket_value {
- // Singular value.
- FacetValue value = 2;
- // Range value.
- Range range = 4;
- }
- // Whether one facet bucket is selected. This field represents user's facet
- // selection. It is set by frontend in SearchVideosRequest.
- bool selected = 3;
- }
- // A group of facet buckets to be passed back and forth between backend &
- // frontend.
- message FacetGroup {
- // Unique id of the facet group.
- string facet_id = 1;
- // Display name of the facet. To be used by UI for facet rendering.
- string display_name = 2;
- // Buckets associated with the facet. E.g. for "Team" facet, the bucket
- // can be 49ers, patriots, etc.
- repeated FacetBucket buckets = 3;
- // Facet bucket type.
- FacetBucketType bucket_type = 4;
- // If true, return query matched annotations for this facet group's selection.
- // This option is only applicable for facets based on partition level
- // annotations. It supports the following facet values:
- // - INTEGER
- // - STRING (DataSchema.SearchStrategy.EXACT_SEARCH only)
- bool fetch_matched_annotations = 5;
- }
- // Request message for IngestAsset API.
- message IngestAssetRequest {
- // Configuration for the data.
- message Config {
- // Type information for video data.
- message VideoType {
- // Container format of the video.
- enum ContainerFormat {
- // The default type, not supposed to be used.
- CONTAINER_FORMAT_UNSPECIFIED = 0;
- // Mp4 container format.
- CONTAINER_FORMAT_MP4 = 1;
- }
- // Container format of the video data.
- ContainerFormat container_format = 1;
- }
- oneof data_type {
- // Type information for video data.
- VideoType video_type = 2;
- }
- // Required. The resource name of the asset that the ingested data belongs to.
- string asset = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Asset"
- }
- ];
- }
- // Contains the data and the corresponding time range this data is for.
- message TimeIndexedData {
- // Data to be ingested.
- bytes data = 1;
- // Time range of the data.
- Partition.TemporalPartition temporal_partition = 2;
- }
- oneof streaming_request {
- // Provides information for the data and the asset resource name that the
- // data belongs to. The first `IngestAssetRequest` message must only contain
- // a `Config` message.
- Config config = 1;
- // Data to be ingested.
- TimeIndexedData time_indexed_data = 2;
- }
- }
- // Response message for IngestAsset API.
- message IngestAssetResponse {
- // Time range of the data that has been successfully ingested.
- Partition.TemporalPartition successfully_ingested_partition = 1;
- }
- // Request message for ClipAsset API.
- message ClipAssetRequest {
- // Required. The resource name of the asset to request clips for.
- // Form:
- // 'projects/{project_number}/locations/{location_id}/corpora/{corpus_id}/assets/{asset_id}'
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Asset"
- }
- ];
- // Required. The time range to request clips for.
- Partition.TemporalPartition temporal_partition = 2 [(google.api.field_behavior) = REQUIRED];
- }
- // Response message for ClipAsset API.
- message ClipAssetResponse {
- // Signed uri with corresponding time range.
- message TimeIndexedUri {
- // Time range of the video that the uri is for.
- Partition.TemporalPartition temporal_partition = 1;
- // Signed uri to download the video clip.
- string uri = 2;
- }
- // A list of signed uris to download the video clips that cover the requested
- // time range ordered by time.
- repeated TimeIndexedUri time_indexed_uris = 1;
- }
- // Request message for GenerateHlsUri API.
- message GenerateHlsUriRequest {
- // Required. The resource name of the asset to request clips for.
- // Form:
- // 'projects/{project_number}/locations/{location_id}/corpora/{corpus_id}/assets/{asset_id}'
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Asset"
- }
- ];
- // Required. The time range to request clips for.
- repeated Partition.TemporalPartition temporal_partitions = 2 [(google.api.field_behavior) = REQUIRED];
- }
- // Response message for GenerateHlsUri API.
- message GenerateHlsUriResponse {
- // A signed uri to download the HLS manifest corresponding to the requested
- // times.
- string uri = 1;
- // A list of temporal partitions of the content returned in the order they
- // appear in the stream.
- repeated Partition.TemporalPartition temporal_partitions = 2;
- }
- // Request message for SearchAssets.
- message SearchAssetsRequest {
- // Sorting specification. If this field is not specified, by default:
- // - STREAM_VIDEO: search results are sorted by the start time.
- oneof sort_spec {
- // Sort by the value under the data schema key.
- SchemaKeySortingStrategy schema_key_sorting_strategy = 9;
- }
- // Required. The parent corpus to search.
- // Form: `projects/{project_id}/locations/{location_id}/corpora/{corpus_id}'
- string corpus = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "visionai.googleapis.com/Corpus"
- }
- ];
- // The number of results to be returned in this page. If it's 0, the server
- // will decide the appropriate page_size.
- int32 page_size = 2;
- // The continuation token to fetch the next page. If empty, it means it is
- // fetching the first page.
- string page_token = 3;
- // Time ranges that matching video content must fall within. If no ranges are
- // provided, there will be no time restriction. This field is treated just
- // like the criteria below, but defined separately for convenience as it is
- // used frequently. Note that if the end_time is in the future, it will be
- // clamped to the time the request was received.
- DateTimeRangeArray content_time_ranges = 5;
- // Criteria applied to search results.
- repeated Criteria criteria = 4;
- // Stores most recent facet selection state. Only facet groups with user's
- // selection will be presented here. Selection state is either selected or
- // unselected. Only selected facet buckets will be used as search criteria.
- repeated FacetGroup facet_selections = 6;
- // A list of annotation keys to specify the annotations to be retrieved and
- // returned with each search result.
- // Annotation granularity must be GRANULARITY_ASSET_LEVEL and its search
- // strategy must not be NO_SEARCH.
- repeated string result_annotation_keys = 8;
- }
- // A strategy to specify how to sort by data schema key.
- message SchemaKeySortingStrategy {
- // Option for one data schema key.
- message Option {
- // When one result has multiple values with the same key, specify
- // which value is used to sort. By default, AGGREGATE_METHOD_LARGEST
- // is used when results are sorted in decreasing order,
- // AGGREGATE_METHOD_SMALLEST is used when results are sorted in
- // incresing order.
- enum AggregateMethod {
- // The unspecified aggregate method will be overwritten as mentioned
- // above.
- AGGREGATE_METHOD_UNSPECIFIED = 0;
- // Take the (lexicographical or numerical) largest value to sort.
- AGGREGATE_METHOD_LARGEST = 1;
- // Take the (lexicographical or numerical) smallest value to sort.
- AGGREGATE_METHOD_SMALLEST = 2;
- }
- // The data used to sort.
- string data_schema_key = 1;
- // Whether to sort in decreasing order or increasing order.
- // By default, results are sorted in incresing order.
- bool sort_decreasing = 2;
- // Aggregate method for the current data schema key.
- optional AggregateMethod aggregate_method = 3;
- }
- // Options in the front have high priority than those in the back.
- repeated Option options = 1;
- }
- // Stores the criteria-annotation matching results for each search result item.
- message AnnotationMatchingResult {
- // The criteria used for matching. It can be an input search criteria or a
- // criteria converted from a facet selection.
- Criteria criteria = 1;
- // Matched annotations for the criteria.
- repeated Annotation matched_annotations = 2;
- // Status of the match result. Possible values:
- // FAILED_PRECONDITION - the criteria is not eligible for match.
- // OK - matching is performed.
- google.rpc.Status status = 3;
- }
- // Search result contains asset name and corresponding time ranges.
- message SearchResultItem {
- // The resource name of the asset.
- // Form:
- // 'projects/{project_number}/locations/{location_id}/corpora/{corpus_id}/assets/{asset_id}'
- string asset = 1;
- // The matched asset segments.
- // Deprecated: please use singular `segment` field.
- repeated Partition.TemporalPartition segments = 2 [deprecated = true];
- // The matched asset segment.
- Partition.TemporalPartition segment = 5;
- // Search result annotations specified by result_annotation_keys in search
- // request.
- repeated Annotation requested_annotations = 3;
- // Criteria or facet-selection based annotation matching results associated to
- // this search result item. Only contains results for criteria or
- // facet_selections with fetch_matched_annotations=true.
- repeated AnnotationMatchingResult annotation_matching_results = 4;
- }
- // Response message for SearchAssets.
- message SearchAssetsResponse {
- // Returned search results.
- repeated SearchResultItem search_result_items = 1;
- // The next-page continuation token.
- string next_page_token = 2;
- // Facet search results of a given query, which contains user's
- // already-selected facet values and updated facet search results.
- repeated FacetGroup facet_results = 3;
- }
- // Integer range type.
- message IntRange {
- // Start of the int range.
- optional int64 start = 1;
- // End of the int range.
- optional int64 end = 2;
- }
- // Float range type.
- message FloatRange {
- // Start of the float range.
- optional float start = 1;
- // End of the float range.
- optional float end = 2;
- }
- // A list of string-type values.
- message StringArray {
- // String type values.
- repeated string txt_values = 1;
- }
- // A list of integer range values.
- message IntRangeArray {
- // Int range values.
- repeated IntRange int_ranges = 1;
- }
- // A list of float range values.
- message FloatRangeArray {
- // Float range values.
- repeated FloatRange float_ranges = 1;
- }
- // Datetime range type.
- message DateTimeRange {
- // Start date time.
- google.type.DateTime start = 1;
- // End data time.
- google.type.DateTime end = 2;
- }
- // A list of datetime range values.
- message DateTimeRangeArray {
- // Date time ranges.
- repeated DateTimeRange date_time_ranges = 1;
- }
- // Representation of a circle area.
- message CircleArea {
- // Latitude of circle area's center. Degrees [-90 .. 90]
- double latitude = 1;
- // Longitude of circle area's center. Degrees [-180 .. 180]
- double longitude = 2;
- // Radius of the circle area in meters.
- double radius_meter = 3;
- }
- // A list of locations.
- message GeoLocationArray {
- // A list of circle areas.
- repeated CircleArea circle_areas = 1;
- }
- message BoolValue {
- bool value = 1;
- }
- // Filter criteria applied to current search results.
- message Criteria {
- oneof value {
- // The text values associated with the field.
- StringArray text_array = 2;
- // The integer ranges associated with the field.
- IntRangeArray int_range_array = 3;
- // The float ranges associated with the field.
- FloatRangeArray float_range_array = 4;
- // The datetime ranges associated with the field.
- DateTimeRangeArray date_time_range_array = 5;
- // Geo Location array.
- GeoLocationArray geo_location_array = 6;
- // A Boolean value.
- BoolValue bool_value = 7;
- }
- // The UGA field or ML field to apply filtering criteria.
- string field = 1;
- // If true, return query matched annotations for this criteria.
- // This option is only applicable for partition level annotations and supports
- // the following data types:
- // - INTEGER
- // - FLOAT
- // - STRING (DataSchema.SearchStrategy.EXACT_SEARCH only)
- // - BOOLEAN
- bool fetch_matched_annotations = 8;
- }
- // Partition to specify the partition in time and space for sub-asset level
- // annotation.
- message Partition {
- // Partition of asset in UTC Epoch time.
- message TemporalPartition {
- // Start time of the partition.
- google.protobuf.Timestamp start_time = 1;
- // End time of the partition.
- google.protobuf.Timestamp end_time = 2;
- }
- // Partition of asset in space.
- message SpatialPartition {
- // The minimum x coordinate value.
- optional int64 x_min = 1;
- // The minimum y coordinate value.
- optional int64 y_min = 2;
- // The maximum x coordinate value.
- optional int64 x_max = 3;
- // The maximum y coordinate value.
- optional int64 y_max = 4;
- }
- // Partition of asset in time.
- TemporalPartition temporal_partition = 1;
- // Partition of asset in space.
- SpatialPartition spatial_partition = 2;
- }
- // The metadata for DeleteAsset API that embeds in
- // [metadata][google.longrunning.Operation.metadata] field.
- message DeleteAssetMetadata {}
- // Metadata for CreateCorpus API.
- message CreateCorpusMetadata {}
|