IntegrationVersion

The integration version definition.

JSON representation
{
  "name": string,
  "description": string,
  "taskConfigs": [
    {
      object (TaskConfig)
    }
  ],
  "triggerConfigs": [
    {
      object (TriggerConfig)
    }
  ],
  "integrationParameters": [
    {
      object (IntegrationParameter)
    }
  ],
  "state": enum (IntegrationState),
  "snapshotNumber": string,
  "updateTime": string,
  "lockHolder": string,
  "createTime": string,
  "lastModifierEmail": string,
  "parentTemplateId": string
}
Fields
name

string

Output only. Auto-generated primary key.

description

string

Optional. The integration description.

taskConfigs[]

object (TaskConfig)

Optional. Task configuration for the integration. It's optional, but the integration doesn't do anything without taskConfigs.

triggerConfigs[]

object (TriggerConfig)

Optional. Trigger configurations.

integrationParameters[]

object (IntegrationParameter)

Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.

state

enum (IntegrationState)

Output only. User should not set it as an input.

snapshotNumber

string (int64 format)

Optional. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflowName, org_id latest(snapshotNumber)]. However, last created snapshot need not be same as the HEAD. So users should always use "HEAD" tag to identify the head.

updateTime

string (Timestamp format)

Output only. Auto-generated.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

lockHolder

string

Optional. The edit lock holder's email address. Generated based on the End User Credentials/LOAS role of the user making the call.

createTime

string (Timestamp format)

Output only. Auto-generated.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

lastModifierEmail

string

Optional. The last modifier's email address. Generated based on the End User Credentials/LOAS role of the user making the call.

parentTemplateId

string

Optional. The id of the template which was used to create this integrationVersion.

TaskConfig

The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task. Next available id: 12

JSON representation
{
  "task": string,
  "taskId": string,
  "parameters": {
    string: {
      object (EventParameter)
    },
    ...
  },
  "failurePolicy": {
    object (FailurePolicy)
  },
  "synchronousCallFailurePolicy": {
    object (FailurePolicy)
  },
  "nextTasks": [
    {
      object (NextTask)
    }
  ],
  "nextTasksExecutionPolicy": enum (NextTasksExecutionPolicy),
  "taskExecutionStrategy": enum (TaskExecutionStrategy),
  "displayName": string,
  "successPolicy": {
    object (SuccessPolicy)
  },
  "jsonValidationOption": enum (JsonValidationOption)
}
Fields
task

string

Optional. The name for the task.

taskId

string

Required. The identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field nextTasks.task_id).

parameters

map (key: string, value: object (EventParameter))

Optional. The customized parameters the user can pass to this task.

An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

failurePolicy

object (FailurePolicy)

Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (events.post To Queue, events.schedule etc.).

synchronousCallFailurePolicy

object (FailurePolicy)

Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (events.post).

nextTasks[]

object (NextTask)

Optional. The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by eventConfigId. Each of these next tasks are executed only if the condition associated with them evaluates to true.

nextTasksExecutionPolicy

enum (NextTasksExecutionPolicy)

Optional. The policy dictating the execution of the next set of tasks for the current task.

taskExecutionStrategy

enum (TaskExecutionStrategy)

Optional. The policy dictating the execution strategy of this task.

displayName

string

Optional. User-provided label that is attached to this TaskConfig in the UI.

successPolicy

object (SuccessPolicy)

Optional. Determines what action to take upon successful task completion.

jsonValidationOption

enum (JsonValidationOption)

Optional. If set, overrides the option configured in the Task implementation class.

EventParameter

This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus.

JSON representation
{
  "key": string,
  "value": {
    object (ValueType)
  }
}
Fields
key

string

Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.

value

object (ValueType)

Values for the defined keys. Each value can either be string, int, double or any proto message.

FailurePolicy

Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a retryStrategy of NONE will be applied).

JSON representation
{
  "retryStrategy": enum (RetryStrategy),
  "maxRetries": integer,
  "intervalTime": string
}
Fields
retryStrategy

enum (RetryStrategy)

Defines what happens to the task upon failure.

maxRetries

integer

Required if retryStrategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed.

intervalTime

string (Timestamp format)

Required if retryStrategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

NextTask

The task that is next in line to be executed, if the condition specified evaluated to true.

JSON representation
{
  "taskConfigId": string,
  "taskId": string,
  "condition": string,
  "displayName": string
}
Fields
taskConfigId

string

ID of the next task.

taskId

string

Task number of the next task.

condition

string

Standard filter expression for this task to become an eligible next task.

displayName

string

User-provided label that is attached to this edge in the UI.

SuccessPolicy

Policy that dictates the behavior for the task after it completes successfully.

JSON representation
{
  "finalState": enum (FinalState)
}
Fields
finalState

enum (FinalState)

State to which the execution snapshot status will be set if the task succeeds.

TriggerConfig

Configuration detail of a trigger. Next available id: 9

JSON representation
{
  "label": string,
  "startTasks": [
    {
      object (NextTask)
    }
  ],
  "properties": {
    string: string,
    ...
  },
  "triggerType": enum (TriggerType),
  "triggerNumber": string,
  "alertConfig": [
    {
      object (IntegrationAlertConfig)
    }
  ],
  "nextTasksExecutionPolicy": enum (NextTasksExecutionPolicy),
  "triggerId": string
}
Fields
label

string

Optional. The user created label for a particular trigger.

startTasks[]

object (NextTask)

Optional. Set of tasks numbers from where the integration execution is started by this trigger. If this is empty, then integration is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same integration execution graph).

properties

map (key: string, value: string)

Optional. Configurable properties of the trigger, not to be confused with integration parameters. E.g. "name" is a property for API triggers and "subscription" is a property for Pub/sub triggers.

An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

triggerType

enum (TriggerType)

Optional. Type of trigger

triggerNumber

string

Required. A number to uniquely identify each trigger config within the integration on UI.

alertConfig[]

object (IntegrationAlertConfig)

Optional. An alert threshold configuration for the [trigger + client + integration] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + integration] when published.

nextTasksExecutionPolicy

enum (NextTasksExecutionPolicy)

Optional. Dictates how next tasks will be executed.

triggerId

string

Optional. The backend trigger ID.

IntegrationAlertConfig

Message to be used to configure custom alerting in the {@code EventConfig} protos for an event. Next available id: 10

JSON representation
{
  "displayName": string,
  "metricType": enum (MetricType),
  "thresholdType": enum (ThresholdType),
  "thresholdValue": {
    object (ThresholdValue)
  },
  "durationThreshold": string,
  "aggregationPeriod": string,
  "alertThreshold": integer,
  "disableAlert": boolean,
  "onlyFinalAttempt": boolean
}
Fields
displayName

string

Name of the alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the integration.

metricType

enum (MetricType)

The type of metric.

thresholdType

enum (ThresholdType)

The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.

thresholdValue

object (ThresholdValue)

The metric value, above or below which the alert should be triggered.

durationThreshold

string (Duration format)

Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger.

A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s".

aggregationPeriod

string

The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week). For an EXPECTED_MIN threshold, this aggregationPeriod must be lesser than 24 hours.

alertThreshold

integer

For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired.

disableAlert

boolean

Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this integration alert.

onlyFinalAttempt

boolean

For either events or tasks, depending on the type of alert, count only final attempts, not retries.

ThresholdValue

The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case.

For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that.

For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below.

For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig.

JSON representation
{
  "absolute": string,
  "percentage": integer
}
Fields
absolute

string (int64 format)

Absolute value threshold.

percentage

integer

Percentage threshold.

IntegrationParameter

Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition. Next available id: 10

JSON representation
{
  "key": string,
  "dataType": enum (IntegrationParameterDataType),
  "defaultValue": {
    object (ValueType)
  },
  "searchable": boolean,
  "displayName": string,
  "inputOutputType": enum (InOutType),
  "isTransient": boolean,
  "producer": string,
  "jsonSchema": string
}
Fields
key

string

Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition.

dataType

enum (IntegrationParameterDataType)

Type of the parameter.

defaultValue

object (ValueType)

Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object.

searchable

boolean

Searchable in the execution log or not.

displayName

string

The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is "foo.bar.myName", then the name would be "myName".

inputOutputType

enum (InOutType)

Specifies the input/output type for the parameter.

isTransient

boolean

Whether this parameter is a transient parameter. go/ip-transient-parameters

producer

string

The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param.

jsonSchema

string

This schema will be used to validate runtime JSON-typed values of this parameter.