googleapis/google/cloud/documentai/v1beta3/document_processor_service....

292 lines
9.9 KiB
Protocol Buffer

// Copyright 2020 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.documentai.v1beta3;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/cloud/documentai/v1beta3/document.proto";
import "google/longrunning/operations.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/timestamp.proto";
import "google/rpc/status.proto";
option csharp_namespace = "Google.Cloud.DocumentAI.V1Beta3";
option go_package = "google.golang.org/genproto/googleapis/cloud/documentai/v1beta3;documentai";
option java_multiple_files = true;
option java_outer_classname = "DocumentAiProcessorService";
option java_package = "com.google.cloud.documentai.v1beta3";
option php_namespace = "Google\\Cloud\\DocumentAI\\V1beta3";
option ruby_package = "Google::Cloud::DocumentAI::V1beta3";
// (-- aip.dev/not-precedent: This is needed because we have references to
// these resources in our public API, but the resource management is not
// part of the public API (UI access only). So we have to define
// these resource here to avoid any "unable to find resources" error. --)
option (google.api.resource_definition) = {
type: "documentai.googleapis.com/Location"
pattern: "projects/{project}/locations/{location}"
};
option (google.api.resource_definition) = {
type: "documentai.googleapis.com/Processor"
pattern: "projects/{project}/locations/{location}/processors/{processor}"
};
option (google.api.resource_definition) = {
type: "documentai.googleapis.com/HumanReviewConfig"
pattern: "projects/{project}/locations/{location}/processors/{processor}/humanReviewConfig"
};
// Service to call Cloud DocumentAI to process documents according to the
// processor's definition. Processors are built using state-of-the-art Google
// AI such as natural language, computer vision, and translation to extract
// structured information from unstructured or semi-structured documents.
service DocumentProcessorService {
option (google.api.default_host) = "us-documentai.googleapis.com";
option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
// Processes a single document.
rpc ProcessDocument(ProcessRequest) returns (ProcessResponse) {
option (google.api.http) = {
post: "/v1beta3/{name=projects/*/locations/*/processors/*}:process"
body: "*"
};
option (google.api.method_signature) = "name";
}
// LRO endpoint to batch process many documents. The output is written
// to Cloud Storage as JSON in the [Document] format.
rpc BatchProcessDocuments(BatchProcessRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1beta3/{name=projects/*/locations/*/processors/*}:batchProcess"
body: "*"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "BatchProcessResponse"
metadata_type: "BatchProcessMetadata"
};
}
// Send a document for Human Review. The input document should be processed by
// the specified processor.
rpc ReviewDocument(ReviewDocumentRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1beta3/{human_review_config=projects/*/locations/*/processors/*/humanReviewConfig}:reviewDocument"
body: "*"
};
option (google.api.method_signature) = "human_review_config";
option (google.longrunning.operation_info) = {
response_type: "ReviewDocumentResponse"
metadata_type: "ReviewDocumentOperationMetadata"
};
}
}
// Request message for the process document method.
message ProcessRequest {
// Required. The processor resource name.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "documentai.googleapis.com/Processor"
}
];
// The document payload, the [content] and [mime_type] fields must be set.
Document document = 2;
// Whether Human Review feature should be skipped for this request. Default to
// false.
bool skip_human_review = 3;
}
// Response message for the process document method.
message ProcessResponse {
// The document payload, will populate fields based on the processor's
// behavior.
Document document = 1;
// The name of the operation triggered by the processed document. If the human
// review process is not triggered, this field will be empty. It has the same
// response type and metadata as the long running operation returned by
// ReviewDocument method.
string human_review_operation = 2;
}
// Request message for batch process document method.
message BatchProcessRequest {
// The message for input config in batch process.
message BatchInputConfig {
// The Cloud Storage location as the source of the document.
string gcs_source = 1;
// Mimetype of the input. If the input is a raw document, the supported
// mimetypes are application/pdf, image/tiff, and image/gif.
// If the input is a [Document] proto, the type should be application/json.
string mime_type = 2;
}
// The message for output config in batch process.
message BatchOutputConfig {
// The output Cloud Storage directory to put the processed documents.
string gcs_destination = 1;
}
// Required. The processor resource name.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "documentai.googleapis.com/Processor"
}
];
// The input config for each single document in the batch process.
repeated BatchInputConfig input_configs = 2;
// The overall output config for batch process.
BatchOutputConfig output_config = 3;
}
// Response message for batch process document method.
message BatchProcessResponse {
}
// The long running operation metadata for batch process method.
message BatchProcessMetadata {
// The status of a each individual document in the batch process.
message IndividualProcessStatus {
// The source of the document, same as the [input_gcs_source] field in the
// request when the batch process started. The batch process is started by
// take snapshot of that document, since a user can move or change that
// document during the process.
string input_gcs_source = 1;
// The status of the processing of the document.
google.rpc.Status status = 2;
// The output_gcs_destination (in the request as 'output_gcs_destination')
// of the processed document if it was successful, otherwise empty.
string output_gcs_destination = 3;
// The name of the operation triggered by the processed document. If the
// human review process is not triggered, this field will be empty. It has
// the same response type and metadata as the long running operation
// returned by ReviewDocument method.
string human_review_operation = 4;
}
// Possible states of the batch processing operation.
enum State {
// The default value. This value is used if the state is omitted.
STATE_UNSPECIFIED = 0;
// Request operation is waiting for scheduling.
WAITING = 1;
// Request is being processed.
RUNNING = 2;
// The batch processing completed successfully.
SUCCEEDED = 3;
// The batch processing was being cancelled.
CANCELLING = 4;
// The batch processing was cancelled.
CANCELLED = 5;
// The batch processing has failed.
FAILED = 6;
}
// The state of the current batch processing.
State state = 1;
// A message providing more details about the current state of processing.
// For example, the error message if the operation is failed.
string state_message = 2;
// The creation time of the operation.
google.protobuf.Timestamp create_time = 3;
// The last update time of the operation.
google.protobuf.Timestamp update_time = 4;
// The list of response details of each document.
repeated IndividualProcessStatus individual_process_statuses = 5;
}
// Request message for review document method.
message ReviewDocumentRequest {
// Required. The resource name of the HumanReviewConfig that the document will be
// reviewed with.
string human_review_config = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "documentai.googleapis.com/HumanReviewConfig"
}
];
// The document that needs human review.
Document document = 2;
}
// Response message for review document method.
message ReviewDocumentResponse {
// The Cloud Storage uri for the human reviewed document.
string gcs_destination = 1;
}
// The long running operation metadata for review document method.
message ReviewDocumentOperationMetadata {
// State of the longrunning operation.
enum State {
// Unspecified state.
STATE_UNSPECIFIED = 0;
// Operation is still running.
RUNNING = 1;
// Operation is being cancelled.
CANCELLING = 2;
// Operation succeeded.
SUCCEEDED = 3;
// Operation failed.
FAILED = 4;
// Operation is cancelled.
CANCELLED = 5;
}
// Used only when Operation.done is false.
State state = 1;
// A message providing more details about the current state of processing.
// For example, the error message if the operation is failed.
string state_message = 2;
// The creation time of the operation.
google.protobuf.Timestamp create_time = 3;
// The last update time of the operation.
google.protobuf.Timestamp update_time = 4;
}