123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- // 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.contentwarehouse.v1;
- import "google/api/field_behavior.proto";
- import "google/api/resource.proto";
- import "google/iam/v1/policy.proto";
- option go_package = "google.golang.org/genproto/googleapis/cloud/contentwarehouse/v1;contentwarehouse";
- option java_multiple_files = true;
- option java_outer_classname = "RuleEngineProto";
- option java_package = "com.google.cloud.contentwarehouse.v1";
- // Represents a set of rules from a single customer.
- message RuleSet {
- option (google.api.resource) = {
- type: "contentwarehouse.googleapis.com/RuleSet"
- pattern: "projects/{project}/locations/{location}/ruleSets/{rule_set}"
- };
- // The resource name of the rule set. Managed internally.
- // Format:
- // projects/{project_number}/locations/{location}/ruleSet/{rule_set_id}.
- //
- // The name is ignored when creating a rule set.
- string name = 6;
- // Short description of the rule-set.
- string description = 1;
- // Source of the rules i.e., customer name.
- string source = 2;
- // List of rules given by the customer.
- repeated Rule rules = 3;
- }
- // Represents the rule for a content warehouse trigger.
- message Rule {
- enum TriggerType {
- UNKNOWN = 0;
- // Trigger for create document action.
- ON_CREATE = 1;
- // Trigger for update document action.
- ON_UPDATE = 4;
- }
- // Short description of the rule and its context.
- string description = 1;
- // ID of the rule. It has to be unique across all the examples.
- // This is managed internally.
- string rule_id = 2;
- // Identifies the trigger type for running the policy.
- TriggerType trigger_type = 3;
- // Represents the conditional expression to be evaluated.
- // Expression should evaluate to a boolean result.
- // When the condition is true actions are executed.
- // Example: user_role = "hsbc_role_1" AND doc.salary > 20000
- string condition = 4;
- // List of actions that are executed when the rule is satisfied.
- repeated Action actions = 5;
- }
- // Represents the action triggered by Rule Engine when the rule is true.
- message Action {
- // ID of the action. Managed internally.
- string action_id = 1;
- oneof action {
- // Action triggering access control operations.
- AccessControlAction access_control = 2;
- // Action triggering data validation operations.
- DataValidationAction data_validation = 3;
- // Action triggering data update operations.
- DataUpdateAction data_update = 4;
- // Action triggering create document link operation.
- AddToFolderAction add_to_folder = 5;
- // Action publish to Pub/Sub operation.
- PublishAction publish_to_pub_sub = 6;
- // Action removing a document from a folder.
- RemoveFromFolderAction remove_from_folder_action = 9;
- // Action deleting the document.
- DeleteDocumentAction delete_document_action = 10;
- }
- }
- // Represents the action responsible for access control list management
- // operations.
- message AccessControlAction {
- // Type of ACL modification operation.
- enum OperationType {
- UNKNOWN = 0;
- // Adds newly given policy bindings in the existing bindings list.
- ADD_POLICY_BINDING = 1;
- // Removes newly given policy bindings from the existing bindings list.
- REMOVE_POLICY_BINDING = 2;
- // Replaces existing policy bindings with the given policy binding list
- REPLACE_POLICY_BINDING = 3;
- }
- // Identifies the type of operation.
- OperationType operation_type = 1;
- // Represents the new policy from which bindings are added, removed or
- // replaced based on the type of the operation. the policy is limited to a few
- // 10s of KB.
- google.iam.v1.Policy policy = 2;
- }
- // Represents the action responsible for data validation operations.
- message DataValidationAction {
- // Map of (K, V) -> (field, string condition to be evaluated on the field)
- // E.g., ("age", "age > 18 && age < 60") entry triggers validation of field
- // age with the given condition. Map entries will be ANDed during validation.
- map<string, string> conditions = 1;
- }
- // Represents the action responsible for properties update operations.
- message DataUpdateAction {
- // Map of (K, V) -> (valid name of the field, new value of the field)
- // E.g., ("age", "60") entry triggers update of field age with a value of 60.
- // If the field is not present then new entry is added.
- // During update action execution, value strings will be casted to
- // appropriate types.
- map<string, string> entries = 1;
- }
- // Represents the action responsible for adding document under a folder.
- message AddToFolderAction {
- // Names of the folder under which new document is to be added.
- // Format:
- // projects/{project_number}/locations/{location}/documents/{document_id}.
- repeated string folders = 1 [(google.api.resource_reference) = {
- type: "contentwarehouse.googleapis.com/Document"
- }];
- }
- // Represents the action responsible for remove a document from a specific
- // folder.
- message RemoveFromFolderAction {
- // Condition of the action to be executed.
- string condition = 1;
- // Name of the folder under which new document is to be added.
- // Format:
- // projects/{project_number}/locations/{location}/documents/{document_id}.
- string folder = 2 [(google.api.resource_reference) = {
- type: "contentwarehouse.googleapis.com/Document"
- }];
- }
- // Represents the action responsible for publishing messages to a Pub/Sub topic.
- message PublishAction {
- // The topic id in the Pub/Sub service for which messages will be published
- // to.
- string topic_id = 1;
- // Messages to be published.
- repeated string messages = 2;
- }
- // Represents the action responsible for deleting the document.
- message DeleteDocumentAction {
- // Boolean field to select between hard vs soft delete options.
- // Set 'true' for 'hard delete' and 'false' for 'soft delete'.
- bool enable_hard_delete = 1;
- }
- // Records the output of Rule Engine including rule evaluation and actions
- // result.
- message RuleEngineOutput {
- // Name of the document against which the rules and actions were evaluated.
- string document_name = 3;
- // Output from Rule Evaluator containing matched, unmatched and invalid rules.
- RuleEvaluatorOutput rule_evaluator_output = 1;
- // Output from Action Executor containing rule and corresponding actions
- // execution result.
- ActionExecutorOutput action_executor_output = 2;
- }
- // Represents the output of the Rule Evaluator.
- message RuleEvaluatorOutput {
- // List of rules fetched from database for the given request trigger type.
- repeated Rule triggered_rules = 1;
- // A subset of triggered rules that are evaluated true for a given request.
- repeated Rule matched_rules = 2;
- // A subset of triggered rules that failed the validation check(s) after
- // parsing.
- repeated InvalidRule invalid_rules = 3;
- }
- // A triggered rule that failed the validation check(s) after parsing.
- message InvalidRule {
- // Triggered rule.
- Rule rule = 1;
- // Validation error on a parsed expression.
- string error = 2;
- }
- // Represents the output of the Action Executor.
- message ActionExecutorOutput {
- // List of rule and corresponding actions result.
- repeated RuleActionsPair rule_actions_pairs = 1;
- }
- // Represents a rule and outputs of associated actions.
- message RuleActionsPair {
- // Represents the rule.
- Rule rule = 1;
- // Outputs of executing the actions associated with the above rule.
- repeated ActionOutput action_outputs = 2;
- }
- // Represents the result of executing an action.
- message ActionOutput {
- // Represents execution state of the action.
- enum State {
- UNKNOWN = 0;
- // State indicating action executed successfully.
- ACTION_SUCCEEDED = 1;
- // State indicating action failed.
- ACTION_FAILED = 2;
- // State indicating action timed out.
- ACTION_TIMED_OUT = 3;
- // State indicating action is pending.
- ACTION_PENDING = 4;
- }
- // ID of the action.
- string action_id = 1;
- // State of an action.
- State action_state = 2;
- // Action execution output message.
- string output_message = 3;
- }
|