diff --git a/src/content/docs/workflow-automation/setup-and-configuration/actions-catalog/actions-catalog.mdx b/src/content/docs/workflow-automation/setup-and-configuration/actions-catalog/actions-catalog.mdx index 0d0ea809374..2427e592ee1 100644 --- a/src/content/docs/workflow-automation/setup-and-configuration/actions-catalog/actions-catalog.mdx +++ b/src/content/docs/workflow-automation/setup-and-configuration/actions-catalog/actions-catalog.mdx @@ -17,16 +17,288 @@ freshnessValidatedDate: never New Relic actions catalog provides actions that can be performed against your infrastructure and integrations. You can orchestrate and automate your end-to-end processes by linking together actions that perform tasks in your cloud providers, and New Relic accounts. -## Available action catalogs [#available-catalogs] +The actions follow a hierarchical naming convention: `company.product.action`, making it easy to find and use the right action for your workflow. -The following action catalogs are available for workflow automation: +## How to use this catalog -- [AWS actions](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws) - Integrate with AWS services including Lambda, EC2, and Systems Manager -- [Communication actions](/docs/workflow-automation/setup-and-configuration/actions-catalog/communication) - Send notifications and messages through various communication channels -- [HTTP actions](/docs/workflow-automation/setup-and-configuration/actions-catalog/http) - Make HTTP requests to external APIs and services -- [New Relic actions](/docs/workflow-automation/setup-and-configuration/actions-catalog/new-relic) - Interact with New Relic platform features and data -- [PagerDuty actions](/docs/workflow-automation/setup-and-configuration/actions-catalog/pagerduty) - Manage PagerDuty incidents and integrations -- [Utility actions](/docs/workflow-automation/setup-and-configuration/actions-catalog/others) - Perform common data transformation and utility operations +This catalog is organized by provider and product hierarchy. You can: +- Browse the complete list of actions in the table below +- Use your browser's search function (Ctrl+F or Cmd+F) to quickly find specific actions +- Navigate to detailed documentation pages for each product category +- Use the left navigation to drill down into specific action categories + +## Complete actions catalog + +The table below lists all available actions. Click on any action name to view its detailed documentation. + +
| Action Name | +Category | +Description | +
|---|---|---|
| [Get log events from CloudWatch Logs](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-cloudwatch#aws.cloudwatch.getLogEvents) | +AWS CloudWatch | +Get log events from CloudWatch Logs | +
| [Put log events to CloudWatch Logs](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-cloudwatch#aws.cloudwatch.putLogEvents) | +AWS CloudWatch | +Put log events to CloudWatch Logs | +
| [Delete an EBS snapshot](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-ec2#awsec2deletesnapshot) | +AWS EC2 | +Delete an EBS snapshot | +
| [Reboot EC2 instances](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-ec2#awsec2rebootinstances) | +AWS EC2 | +Reboot EC2 instances | +
| [Launch new EC2 instances](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-ec2#aws.ec2.runInstances) | +AWS EC2 | +Launch new EC2 instances | +
| [Start stopped EC2 instances](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-ec2#awsec2startinstances) | +AWS EC2 | +Start stopped EC2 instances | +
| [Terminate EC2 instances](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-ec2#awsec2terminateinstances) | +AWS EC2 | +Terminate EC2 instances | +
| [Execute any AWS API operation](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-execute-api#aws.execute.api) | +AWS Execute API | +Execute any AWS API operation | +
| [Get Lambda function configuration](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-lambda#aws.lambda.getFunction) | +AWS Lambda | +Get Lambda function configuration | +
| [Invoke a Lambda function](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-lambda#aws.lambda.invoke) | +AWS Lambda | +Invoke a Lambda function | +
| [List Lambda function aliases](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-lambda#aws.lambda.listAliases) | +AWS Lambda | +List Lambda function aliases | +
| [Update Lambda function configuration](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-lambda#aws.lambda.updateFunctionConfiguration) | +AWS Lambda | +Update Lambda function configuration | +
| [Delete an object from S3 bucket](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-s3#aws.s3.deleteObject) | +AWS S3 | +Delete an object from S3 bucket | +
| [Get an object from S3 bucket](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-s3#aws.s3.getObject) | +AWS S3 | +Get an object from S3 bucket | +
| [List objects in an S3 bucket](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-s3#aws.s3.listObjectsV2) | +AWS S3 | +List objects in an S3 bucket | +
| [Add an object to S3 bucket](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-s3#aws.s3.putObject) | +AWS S3 | +Add an object to S3 bucket | +
| [Publish a message to SNS topic](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-sns#aws.sns.publish) | +AWS SNS | +Publish a message to SNS topic | +
| [Receive a message from SQS queue](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-sqs#aws.sqs.receiveMessage) | +AWS SQS | +Receive a message from SQS queue | +
| [Send a message to SQS queue](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-sqs#aws.sqs.sendMessage) | +AWS SQS | +Send a message to SQS queue | +
| [Delete a Systems Manager document](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-systemsmanager#aws.systemsManager.deleteDocument) | +AWS Systems Manager | +Delete a Systems Manager document | +
| [Start a Systems Manager automation](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-systemsmanager#awssystemsmanagerstartautomation) | +AWS Systems Manager | +Start a Systems Manager automation | +
| [Wait for automation execution status](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-systemsmanager#awssystemsmanagerwaitforautomationstatus) | +AWS Systems Manager | +Wait for automation execution status | +
| [Create or update a Systems Manager document](/docs/workflow-automation/setup-and-configuration/actions-catalog/aws/aws-systemsmanager#awssystemsmanagerwritedocument) | +AWS Systems Manager | +Create or update a Systems Manager document | +
| [Perform HTTP DELETE request](/docs/workflow-automation/setup-and-configuration/actions-catalog/http/http-delete#httpdelete) | +HTTP | +Perform HTTP DELETE request | +
| [Perform HTTP GET request](/docs/workflow-automation/setup-and-configuration/actions-catalog/http/http-get#httpget) | +HTTP | +Perform HTTP GET request | +
| [Perform HTTP POST request](/docs/workflow-automation/setup-and-configuration/actions-catalog/http/http-post#httppost) | +HTTP | +Perform HTTP POST request | +
| [Perform HTTP PUT request](/docs/workflow-automation/setup-and-configuration/actions-catalog/http/http-put#httpput) | +HTTP | +Perform HTTP PUT request | +
| [Send custom events to New Relic](/docs/workflow-automation/setup-and-configuration/actions-catalog/newrelic/newrelic-ingest#newrelic.ingest.sendEvents) | +New Relic Ingest | +Send custom events to New Relic | +
| [Send logs to New Relic](/docs/workflow-automation/setup-and-configuration/actions-catalog/newrelic/newrelic-ingest#newrelic.ingest.sendLogs) | +New Relic Ingest | +Send logs to New Relic | +
| [Execute NerdGraph query or mutation](/docs/workflow-automation/setup-and-configuration/actions-catalog/newrelic/newrelic-nerdgraph#newrelic.nerdgraph.execute) | +New Relic NerdGraph | +Execute NerdGraph query or mutation | +
| [Send notification to New Relic destination](/docs/workflow-automation/setup-and-configuration/actions-catalog/newrelic/newrelic-notification#newrelic.notification.send) | +New Relic Notification | +Send notification to New Relic destination | +
| [Send email notification](/docs/workflow-automation/setup-and-configuration/actions-catalog/newrelic/newrelic-notification#newrelic.notification.sendEmail) | +New Relic Notification | +Send email notification | +
| [Send Microsoft Teams notification](/docs/workflow-automation/setup-and-configuration/actions-catalog/newrelic/newrelic-notification#newrelic.notification.sendMicrosoftTeams) | +New Relic Notification | +Send Microsoft Teams notification | +
| [Execute NRQL query](/docs/workflow-automation/setup-and-configuration/actions-catalog/newrelic/newrelic-nrdb#newrelic.nrdb.query) | +New Relic NRDB | +Execute NRQL query | +
| [Create a PagerDuty incident](/docs/workflow-automation/setup-and-configuration/actions-catalog/pagerduty/pagerduty-incident#pagerDuty.incident.create) | +PagerDuty Incident | +Create a PagerDuty incident | +
| [Get PagerDuty incident details](/docs/workflow-automation/setup-and-configuration/actions-catalog/pagerduty/pagerduty-incident#pagerDuty.incident.get) | +PagerDuty Incident | +Get PagerDuty incident details | +
| [List PagerDuty incidents](/docs/workflow-automation/setup-and-configuration/actions-catalog/pagerduty/pagerduty-incident#pagerDuty.incident.list) | +PagerDuty Incident | +List PagerDuty incidents | +
| [Resolve a PagerDuty incident](/docs/workflow-automation/setup-and-configuration/actions-catalog/pagerduty/pagerduty-incident#pagerDuty.incident.resolve) | +PagerDuty Incident | +Resolve a PagerDuty incident | +
| [Update a PagerDuty incident](/docs/workflow-automation/setup-and-configuration/actions-catalog/pagerduty/pagerduty-incident#pagerDuty.incident.update) | +PagerDuty Incident | +Update a PagerDuty incident | +
| [Get reactions from Slack message](/docs/workflow-automation/setup-and-configuration/actions-catalog/slack/slack-chat#slack.chat.getReactions) | +Slack Chat | +Get reactions from Slack message | +
| [Post a message to Slack channel](/docs/workflow-automation/setup-and-configuration/actions-catalog/slack/slack-chat#slack.chat.postMessage) | +Slack Chat | +Post a message to Slack channel | +
| [Convert epoch timestamp to datetime](/docs/workflow-automation/setup-and-configuration/actions-catalog/utils/utils-datetime#utils.datetime.fromEpoch) | +Utilities - DateTime | +Convert epoch timestamp to datetime | +
| [Transform data to CSV format](/docs/workflow-automation/setup-and-configuration/actions-catalog/utils/utils-transform#utils.transform.toCSV) | +Utilities - Transform | +Transform data to CSV format | +
| [Generate a UUID](/docs/workflow-automation/setup-and-configuration/actions-catalog/utils/utils-uuid#utils.uuid.generate) | +Utilities - UUID | +Generate a UUID | +
| Input Field | +Type | +Description | +Example | +
|---|---|---|---|
| **algorithm** | +String | +Algorithm used to sign the token. | +
+ RS256
+ Supported algorithms: RS256 ,ES256 + |
+
| **privateKey** | +String | ++ The private key for signing a JWT. + - RS256 supports private key in PKCS#8 & PKCS#1 format. ES256 supports private key in PKCS#8 (.p8) format. + - Private Key must be provided as a secret expression. + - PrivateKey must be stored as single line string in Secrets. + | +`${{ :secrets:namespace:privateKey }}` | +
| **headers** | +Map | +
+ Headers provides metadata for JWT
+ + **UnSupported headers**: nested objects, arrays, null are not supported + + |
+ `{"kid": "key-2025-09"}` | +
| **claims** | +Map | +
+ Claims are statements about an entity (typically, the user) and additional data
+ + **Unsupported Claim Types**: null, Nested objects / arbitrary maps, Lists containing non-strings or mixed types. + + |
+ `{"role": "admin", "scope": "read:all"}` | +
| **expirationTimeMinutes** | +Int | +
+ Expiration time in minutes
+ + Expiration time should be greater than 0 and less than 30days. + + |
+ 10 | +
| **includeIssuedAt** | +Boolean | +
+ Issued At timestamp
+ + Default: true + + |
+ true | +
| **selectors** | +List | ++ | + ```yaml + [name: token, + + expression: .jwt + + ] +``` + | +
| Output Field | +Type | +Description | +
|---|---|---|
| **success** | +Boolean | +`true/false` | +
| **jwt** | +String | +"`xxxxx.yyyyy.zzzzz`“ | +
| **errorMessage** | +String | +`“Unsupported algorithm for creating jwt token"` | +
| Workflow definition | +
|---|
| + ```yaml + name: create-json-web-token + description: "" + steps: + - name: auth_jwt_create_1 + type: action + action: auth.jwt.create + version: "1" + inputs: + algorithm: RS256 + privateKey: ${{ :secrets:namespace:privatekey}} + headers: + header1: value1 + claims: + claim1: value1 + expirationTimeMinutes: 10 + next: end + ``` + | +
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **functionName** | -Required | -String | -`my-lambda-function` | -
| **invocationType** | -Optional | -String | -`Event'|'RequestResponse'|'DryRun'` | -
| **payload** | -Optional | -String | -`'{"key": "value"}'` | -
| **parameters** | -Optional | -Map | -- ```yaml - { - "Qualifier": "1", - "ClientContext":"encoded value" - }, - ``` - | -
| **selectors** | -Optional | -List | -`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- ```yaml
- [{"success":true,"response":{"StatusCode":200,"ExecutedVersion":"$LATEST","Payload":{"statusCode":200,"body":"\"Hello userName\""}}}]
- ```
- - Response syntax can be referred to [invoke - Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda/client/invoke.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`"errorMessage": "ValidationException: 1 validation error detected"` | -
| Workflow example | -
|---|
| - ```yaml - name: lambda-invoke-function-test - description: 'Invokes a Lambda function with a payload' - workflowInputs: - arnRole: - type: String - steps: - - name: aws_lambda_invoke_1 - type: action - action: aws.lambda.invoke - version: '1' - inputs: - awsRoleArn: ${{ .workflowInputs.arnRole }} - region: us-east-1 - functionName: my-lambda-processor - payload: '{"orderId": "12345", "amount": 99.99}' - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **functionName** | -Required | -String | -`"my-lambda-function-to-update"` | -
| **role** | -Optional | -String | -`arn:aws:iam::123456789012:role/new-lambda-role` | -
| **handler** | -Optional | -String | -`“main.new_handler"` | -
| **description** | -Optional | -String | -`Updated function description` | -
| **parameters** | -Optional | -Map | -- ```yaml - { - "Timeout": "60", - "MemorySize": 123, - }, - ``` - | -
| **selectors** | -Optional | -List | -`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- ```yaml
- [{"success":true,"response":{"FunctionName":"hello-you","FunctionArn":"arn:aws:lambda:us-east-2:----:function:hello-you","Runtime":"nodejs20.x","Role":"arn:aws:iam::----:role/TF-hello-you-role","Handler":"hello-you.handler","CodeSize":334,"Description":"This is hello you description from action","Timeout":30,"MemorySize":128,"LastModified":"2025-09-23T13:57:03.000+0000","CodeSha256":"CU03aDDg+34=","Version":"$LATEST","TracingConfig":{"Mode":"PassThrough"},"RevisionId":"0f1e4d9b-c45a-4896-a32d-7cd78e77a273","State":"Active","LastUpdateStatus":"InProgress","LastUpdateStatusReason":"The function is being created.","LastUpdateStatusReasonCode":"Creating","PackageType":"Zip","Architectures":["x86_64"],"EphemeralStorage":{"Size":512},"SnapStart":{"ApplyOn":"None","OptimizationStatus":"Off"},"RuntimeVersionConfig":{"RuntimeVersionArn":"arn:aws:lambda:us-east-2::runtime:01eab27397bfdbdc243d363698d4bc355e3c8176d34a51cd47dfe58cf977f508"},"LoggingConfig":{"LogFormat":"Text","LogGroup":"/aws/lambda/hello-you"}}}]
- ```
- - Response syntax can be referred to [update_function_configuration - Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda/client/update_function_configuration.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`[ { "errorMessage": "An error occurred (ResourceNotFoundException) when calling the UpdateFunctionConfiguration operation: Function not found: arn:aws:lambda:us-east-2:661945836867:function:my-lambda-function-to-update", "success": false, "response": null } ]` | -
| Workflow example | -
|---|
| - ```yaml - name: lambda-update-config-test - description: 'Updates the timeout and memory of a Lambda function' - workflowInputs: - arnRole: - type: String - steps: - - name: aws_lambda_update_function_configuration_1 - type: action - action: aws.lambda.updateFunctionConfiguration - version: '1' - inputs: - awsRoleArn: ${{ .workflowInputs.arnRole }} - region: us-west-2 - functionName: my-lambda-function-to-update - parameters: - Timeout:60 - MemorySize:123 - - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **functionName** | -Required | -String | -`"my-lambda-function"` | -
| **parameters** | -Optional | -Map | -- ```yaml - { - "Qualifier": "1" - }, - ``` - | -
| **selectors** | -Optional | -List | -`[[{"name": "response", "expression": ".response"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- ```yaml
- {"response": - Response syntax can be referred to [update_function_configuration - Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda/client/get_function.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`"errorMessage": "ResourceNotFoundException: Function not found"` | -
| Workflow example | -
|---|
| - ```yaml - name: lambda-get-function-test - description: 'Retrieves the configuration of a specific Lambda function' - workflowInputs: - arnRole: - type: String - steps: - - name: aws_lambda_getFunction_1 - type: action - action: aws.lambda.getFunction - version: '1' - inputs: - awsRoleArn: ${{ .workflowInputs.arnRole }} - region: us-east-1 - FunctionName: hello-you - parameters: - Qualifier: 1 - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **functionName** | -Required | -String | -`“my-lambda-function“` | -
| **marker** | -Optional | -String | -
- Pass the `NextMarker` token from a previous response for pagination.
- - e.g., `“abcd....."` - - |
-
| **maxItems** | -Optional | -Int | -
- Limit the number of aliases returned
- - e.g., `123` - - |
-
| **parameters** | -Optional | -Map | -
- For additional optional API parameters.
- - e.g., `{"AnotherOptionalParam": "value"}` - - |
-
| **selectors** | -Optional | -List | -`[{"name": "response", "expression": ".response"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- ```yaml
- {"response": - Response syntax can be referred to [update_function_configuration - Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda/client/list_aliases.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`"errorMessage": "ResourceNotFoundException: Function not found"` | -
| Workflow example | -
|---|
| - ```yaml - name: lambda-list-aliases-test - description: 'Lists all aliases for a Lambda function' - workflowInputs: - arnRole: - type: String - steps: - - name: aws_lambda_list_aliases_1 - type: action - action: aws.lambda.listAliases - version: '1' - inputs: - awsRoleArn: ${{ .workflowInputs.arnRole }} - region: us-east-1 - functionName: hello-you - parameters: - FunctionVersion: 1 - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`region: "us-east-2"` | -
| **snapshotId** | -Required | -String | -`“snapshot-id-1"` | -
| **selectors** | -Optional | -String | -`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -Object | -
- No Response in case of success : true
- - Response syntax can be referred [delete_snapshot - Boto3 1.40.55 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/delete_snapshot.html). - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`errorMessage: "Failed to delete snapshot"` | -
| Workflow Example | -
|---|
| - ```yaml - name: ec2-deleteSnapshot-test - description: '' - workflowInputs: - arnRole: - type: String - region: - type: String - defaultValue: us-west-2 - snapshotId: - type: List - defaultValue: snapshot-id-1 - steps: - - name: aws_ec2_deleteSnapshot_1 - type: action - action: aws.ec2.deleteSnapshot - version: '1' - inputs: - awsRoleArn: ${{ .workflowInputs.arnRole }} - region: ${{ .workflowInputs.region }} - snapshotId: ${{ .workflowInputs.snapshotId }} - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`region: "us-east-2"` | -
| **instanceIds** | -Required | -List | -`"[\"i-0123456789abcdef0\", \"i-0fedcba9876543210\"]"` | -
| **selectors** | -Optional | -List | -`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -Object | -[reboot_instances - Boto3 1.40.56 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/reboot_instances.html) | -
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`errorMessage: ""` | -
| Workflow example | -
|---|
| - ```yaml - name: reboot-ec2-test - description: '' - workflowInputs: - arnRole: - type: String - region: - type: String - defaultValue: us-west-2 - instanceIds: - type: List - defaultValue: ["i-123456789abcdef0"] - steps: - - name: aws_ec2_rebootInstances_1 - type: action - action: aws.ec2.rebootInstances - version: '1' - inputs: - awsRoleArn: ${{ .workflowInputs.arnRole }} - region: ${{ .workflowInputs.region }} - instanceIds: ${{ .workflowInputs.instanceIds }} - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`region: "us-east-2"` | -
| **instanceIds** | -Required | -List | -`"[\"i-0123456789abcdef0\", \"i-0fedcba9876543210\"]"` | -
| **selectors** | -Optional | -List | -`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -Object | -
- ```yaml
- {"response":{
- 'StartingInstances': [
- {
- 'InstanceId': 'String',
- 'CurrentState': {
- 'Code': 123,
- 'Name': 'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'
- },
- 'PreviousState': {
- 'Code': 123,
- 'Name': 'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'
- }
- },
- ]
- }
-
- }
-
- }
- ```
- - Response syntax can be referred [start_instances - Boto3 1.40.50 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/start_instances.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`errorMessage: "The parameter instancesSet cannot be used with the parameter maxResults"` | -
| Workflow example | -
|---|
| - ```yaml - name: ab-ec2-startInstance-test - description: '' - workflowInputs: - arnRole: - type: String - region: - type: String - defaultValue: us-west-2 - instanceIds: - type: list - defaultValue: ["i-123456789abcdef0"] - steps: - - name: aws_ec2_startInstances_1 - type: action - action: aws.ec2.startInstances - version: '1' - inputs: - awsRoleArn: ${{ .workflowInputs.arnRole }} - region: ${{ .workflowInputs.region }} - instanceIds: ${{ .workflowInputs.instanceIds }} - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`region: "us-east-2"` | -
| **instanceIds** | -Required | -List | -`"[\"i-0123456789abcdef0\", \"i-0fedcba9876543210\"]"` | -
| **selectors** | -Optional | -List | -`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- ```yaml
- {
- 'TerminatingInstances': [
- {
- 'InstanceId': 'String',
- 'CurrentState': {
- 'Code': 123,
- 'Name': 'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'
- },
- 'PreviousState': {
- 'Code': 123,
- 'Name': 'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'
- }
- },
- ]
- }
- ```
- - Response syntax can be referred [terminate_instances - Boto3 1.40.50 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/terminate_instances.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`errorMessage: "An error occurred (`InvalidInstanceID.Malformed`) when calling the TerminateInstances operation: The instance ID 'i-012345678' is malformed"` | -
| Workflow example | -
|---|
| - ```yaml - name: ec2-terminate-test - description: '' - workflowInputs: - arnRole: - type: String - region: - type: String - defaultValue: us-west-2 - instanceIds: - type: list - defaultValue: ["i-123456789abcdef0"] - steps: - - name: aws_ec2_terminateInstances_1 - type: action - action: aws.ec2.terminateInstances - version: '1' - inputs: - awsRoleArn: ${{ .workflowInputs.arnRole }} - region: ${{ .workflowInputs.region }} - instanceIds: ${{ .workflowInputs.instanceIds }} - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`region: "us-east-2"` | -
| **imageId** | -Required | -String | -`“ami-0ca4d5db4872d0c28”` | -
| **instanceType** | -Required | -String | -`“t2.micro”` | -
| **minCount** | -Required | -Int | -`1` | -
| **maxCount** | -Required | -Int | -`10` | -
| **parameters** | -Optional | -Map | -- ```yaml - { - "EbsOptimized": false, - "TagSpecifications": [ - { - "ResourceType": "instance", - "Tags": [ - { - "Key": "Name", - "Value": "My-Web-Server" - } - ] - } - } - ``` - | -
| **selectors** | -Optional | -List | -`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- - Response syntax can be referred: [run_instances - Boto3 1.40.50 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/run_instances.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`errorMessage: ""` | -
| Workflow example | -
|---|
| - ```yaml - name: ec2_run_instance - workflowInputs: - arnRole: - type: String - required: true - steps: - - name: RunInstance - type: action - action: aws.ec2.runInstances - version: '1' - inputs: - awsRoleArn: ${{.workflowInputs.arnRole}} - region: us-east-2 - imageId: ami-0ca4d5db4872d0c28 - instanceType: t2.micro - minCount: 1 - maxCount: 1 - parameters: - EbsOptimized: false - TagSpecifications: - - ResourceType: instance - Tags: - - Key: Name - Value: My-Test-Instance - selectors: - - name: instanceId - expression: .response.Instances[0].InstanceId - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsAccessKeyId** | -Required | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Required | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`region: "us-east-2"` | -
| **documentName** | -Required | -String | -`documentName: "my-ssm-document"` | -
| **documentType** | -Optional | -String | -`documentType: "Command"` | -
| **documentFormat** | -Optional | -String | -`documentFormat: "YAML"` | -
| **documentContent** | -Required | -String | -- |
| **override** | -Optional | -Boolean | -- `override: true (default)`. When `true`, always write the document with the provided name even if one already exist. When `false`, if a document with the provided `documentName` already exist, the action returns `success: false` and `errorMessage:Document already exists`. Please enable override if you want to update the existing document. - | -
| Output Field | -Type | -Example | -
|---|---|---|
| **documentName** | -String | -`documentName: "my-ssm-document"` | -
| **documentVersion** | -String | -`documentVersion: 1` | -
| **documentType** | -String | -`documentType: "Command"` | -
| **documentStatus** | -String | -`documentStatus: "Active"`. | -
| **success** | -Boolean | -`success: true` | -
| **errorMessage** | -String | -`errorMessage: "Some error message from ssm"` | -
| Workflow definition | -Inputs | -Outputs | -
|---|---|---|
| - ```yaml - schemaVersion: '0.3' - description: List all Lambda function names. - mainSteps: - - name: ExecuteAwsApi - action: aws:executeAwsApi - isEnd: true - ``` - | -- ```yaml - inputs: - Service: lambda - Api: ListFunctions - ``` - | -- ```yaml - outputs: - - Name: resultFunctionName - Selector: $..FunctionName - Type: StringList - outputs: - - ExecuteAwsApi.resultFunctionName - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsAccessKeyId** | -Required | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Required | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`region: "us-east-2"` | -
| **documentName** | -Required | -String | -`documentName: "my-ssm-document"` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **documentName** | -String | -documentName: "my-ssm-document" | -
| **success** | -Boolean | -`success: true` | -
| **errorMessage** | -String | -`errorMessage: "Some error message from ssm"` | -
| Workflow definition | -Inputs | -Outputs | -
|---|---|---|
| - ```yaml - schemaVersion: '0.3' - description: List all Lambda function names. - mainSteps: - - name: ExecuteAwsApi - action: aws:executeAwsApi - isEnd: true - ``` - | -- ```yaml - inputs: - Service: lambda - Api: ListFunctions - ``` - | -- ```yaml - outputs: - - Name: resultFunctionName - Selector: $..FunctionName - Type: StringList - outputs: - - ExecuteAwsApi.resultFunctionName - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsAccessKeyId** | -Required | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Required | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`region: "us-east-2"` | -
| **documentName** | -Required | -String | -`documentName: "my-ssm-document"` | -
| **parameters** | -Optional | -Map | -`parameters: myKey: myValue` | -
| **idempotencyToken** | -Optional | -UUID | -`idempotencyToken: "any token"` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **automationExecutionId** | -String | -`automationExecutionId: "3143a28d-241c-4abd-a3ca-9c0ff3890241"` | -
| **success** | -Boolean | -`success: true` | -
| **errorMessage** | -String | -`errorMessage: "Some error message from ssm"` | -
| Workflow definition | -Inputs | -Outputs | -
|---|---|---|
| - ```yaml - schemaVersion: '0.3' - description: List all Lambda function names. - mainSteps: - - name: ExecuteAwsApi - action: aws:executeAwsApi - isEnd: true - ``` - | -- ```yaml - Service: lambda - Api: ListFunctions - ``` - | -- ```yaml - - Name: resultFunctionName - Selector: $..FunctionName - Type: StringList - outputs: - - ExecuteAwsApi.resultFunctionName - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`region: "us-east-2"` | -
| **automationExecutionId** | -Required | -String | -`automationExecutionId: "3143a28d-241c-4abd-a3ca-9c0ff3890241"`. The automation executionID for which we need to wait for its completion. | -
| **automationExecutionStatuses** | -Optional | -List | -List of automation execution statuses from [AutomationExecution](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_AutomationExecution.html#AutomationExecutionStatus) that can stop the waiting, `Default: ["Success", "Failed"]` | -
| **timeout** | -Optional | -int | -`timeout: 600`. The duration in seconds can wait for automation status to be one of the expected `automationExecutionStatuses`. Post this timeout duration, the action return value with timeout error. | -
| **selectors** | -Optional | -List | -`[{\"name\": \"automationExecutionStatus\", \"expression\": \".automationExecutionStatus\"}, {\"name\": \"scriptOutput\", \"expression\": \".automationExecutionOutputs.pythonStep.scriptOutput | tojson\"}]`. | -
| Output Field | -Type | -Example | -
|---|---|---|
| **automationExecutionId** | -String | -`automationExecutionId: "3143a28d-241c-4abd-a3ca-9c0ff3890241"` | -
| **automationExecutionStatus** | -String | -`automationExecutionStatus: "Success"`. If action is successful, It will either of the values passed in `automationExecutionStatuses` input field. Else, this will be null. | -
| **automationExecutionOutputs** | -Map | -
- ```yaml
- "automationExecutionOutputs": {
- "ExecuteGetApiResources": {
- "resultResourceId": [
- "pky3cb"
- ]
- },
- "ExecuteListVersionsByFunction": {
- "resultLambdaVersionArn": [
- "arn:aws:lambda:us-east-2:123456789012:function:ApiGwTestFn:1"
- ]
- }
- }
- ```
- - The output will be a map of output values from the document. Any output in the document can be collected using this output field and can be used in subsequent steps of the workflow automation definition. - - |
-
| **success** | -Boolean | -`success: true` | -
| **errorMessage** | -String | -`errorMessage: "Some error message from ssm"` | -
| Workflow definition | -Inputs | -Outputs | -
|---|---|---|
| - ```yaml - schemaVersion: '0.3' - description: List all Lambda function names. - mainSteps: - - name: ExecuteAwsApi - action: aws:executeAwsApi - isEnd: true - ``` - | -- ```yaml - Service: lambda - Api: ListFunctions - ``` - | -- ```yaml - - Name: resultFunctionName - Selector: $..FunctionName - Type: StringList - outputs: - - ExecuteAwsApi.resultFunctionName - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`region: "us-east-2"` | -
| **service** | -Required | -String | -`service: "sqs"`.[AWS available services](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) | -
| **api** | -Required | -String | -api: "create_queue" | -
| **parameters** | -Required | -Map | -- ```yaml - parameters: { - "QueueName": "dks-testing-queue", - "Attributes": { - "DelaySeconds": "0", - "MessageRetentionPeriod": "86400" - } - } - ``` - | -
| **selectors** | -Optional | -List | -`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -`{"response": |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`errorMessage: "User does not have permission to query DynamoDB"` | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **logStreamName** | -Required | -String | -`"2023/10/27/[$LATEST]abcdef123456"` | -
| **logGroupName** | -Optional | -String | -`"/aws/lambda/my-function"` | -
| **logGroupIdentifier** | -Optional | -String | -`“arn:partition:service:region:account-id:resource”` | -
| **startTime** | -Optional | -Int | -`1759296000000` | -
| **endTime** | -Optional | -Int | -`1759296000000` | -
| **limit** | -Optional | -Int | -`50` | -
| **startFromHead** | -Optional | -Boolean | -`true` | -
| **unmask** | -Optional | -Boolean | -`false` | -
| **nextToken** | -Optional | -String | -`“f/39218833627378687642013305455131706539523449361490509828/s”` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -- ```yaml - { - 'events': [ - { - 'timestamp': 123, - 'message': 'string', - 'ingestionTime': 123 - }, - ], - 'nextForwardToken': 'string', - 'nextBackwardToken': 'string' -} - ``` - | -
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`“An error occurred (ExpiredTokenException) when calling the GetLogEvents operation: The security token included in the request is expired”` | -
| Workflow example | -
|---|
| - ```yaml - name: get-lambda-logs - description: 'Retrieve log events from an AWS Lambda function' - workflowInputs: - region: - type: String - defaultValue: us-east-2 - logGroupName: - type: String - defaultValue: /aws/lambda/my-function - logStreamName: - type: String - defaultValue: 2023/10/27/[$LATEST]abcdef123456 - steps: - name: get_events_step - type: action - action: aws.cloudwatch.get_log_events - version: '1' - inputs: - region: ${{ .workflowInputs.region }} - logGroupName: ${{ .workflowInputs.logGroupName }} - logStreamName: ${{ .workflowInputs.logStreamName }} - limit: 100 - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **logGroupName** | -Required | -String | -`"/aws/lambda/hello-you"` | -
| **logStreamName** | -Required | -String | -`"2025/09/24/[$LATEST]09f7ca9e9ab044f389419ce60305f594"` | -
| **logEvents** | -Required | -List | -- ```yaml - [ - -{ "timestamp": 1698384000000, "message": "Workflow task started." }, - - { "timestamp": 1698384000015, "message": "Data validated successfully." } ] - ``` - | -
| **entity** | -Optional | -Dict | -`{ "entity": { "keyAttributes": { "ResourceType": "AWS::ElasticLoadBalancingV2::LoadBalancer", "Identifier": "app/my-web-lb/12345", "Environment": "Production" }, "attributes": { "MonitoringTier": "Gold", "OwnerTeam": "Networking", "MaintenanceWindow": "Sat: 0200-0400" } } }` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -- ```yaml - { - 'events': [ - { - 'timestamp': 123, - 'message': 'string', - 'ingestionTime': 123 - }, - ], - 'nextForwardToken': 'string', - 'nextBackwardToken': 'string' - } -``` - | -
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`“An error occurred (ExpiredTokenException) when calling the GetLogEvents operation: The security token included in the request is expired”` | -
| Workflow example | -
|---|
| - ```yaml - name: get-lambda-logs - description: 'Retrieve log events from an AWS Lambda function' - workflowInputs: - region: - type: String - defaultValue: us-east-2 - logGroupName: - type: String - defaultValue: /aws/lambda/my-function - logStreamName: - type: String - defaultValue: 2023/10/27/[$LATEST]abcdef123456 - steps: - name: get_events_step - type: action - action: aws.cloudwatch.get_log_events - version: '1' - inputs: - region: ${{ .workflowInputs.region }} - logGroupName: ${{ .workflowInputs.logGroupName }} - logStreamName: ${{ .workflowInputs.logStreamName }} - limit: 100 - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **bucket** | -Required | -String | -"`examplebucket`" | -
| **prefix** | -Optional | -String | -"`path/to/folder/`" | -
| **maxKeys** | -Optional | -Integer | -`100` | -
| **continuationToken** | -Optional | -String | -`some-token` | -
| **parameters** | -Optional | -Map | -- ```graphql - { - "Delimiter": "/" - } - ``` - | -
| **selectors** | -Optional | -List | -`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | -
| Input Field | -Type | -
|---|---|
| EncodingType | -String | -
| FetchOwner | -Boolean | -
| StartAfter | -String | -
| RequestPayer | -String | -
| ExpectedBucketOwner | -String | -
| OptionalObjectAttributes | -List | -
| Delimiter | -String | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- - Response syntax can be referred to in the [list_objects_v2 - Boto3 1.40.52 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/list_objects_v2.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`errorMessage: "Parameter validation failed:\nInvalid bucket name \"s3-activity-test \": Bucket name must match the regex \"^[a-zA-Z0-9.\\-_]{1,255}$\" or be an ARN matching the regex \"^arn:(aws).:(s3|s3-object-lambda):[a-z\\-0-9]:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\\-.]{1,63}$|^arn:(aws).*:s3-outposts:[a-z\\-0-9]+:[0-9]{12}:outpost[/:][a-zA-Z0-9\\-]{1,63}[/:]accesspoint[/:][a-zA-Z0-9\\-]{1,63}$\""` | -
| Workflow example | -
|---|
| - ```yaml - name: aws-s3-list-objects-v2 - description: 'List Objects in an AWS S3 Bucket' - - steps: - - name: aws_s3_listObjectsV2_1 - type: action - action: aws.s3.listObjectsV2 - version: '1' - inputs: - awsRoleArn: "arn:aws:iam::123456789012:role/my-workflow-role" - region: "us-east-2" - bucket: "examplebucket" - prefix: "path/to/folder/" - maxKeys: 100 - continuationToken: "some-token" - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **bucket** | -Required | -String | -"`examplebucket`" | -
| **key** | -Required | -String | -"`path/to/object.txt`" | -
| **parameters** | -Optional | -Map | -- ```yaml - { - "RequestPayer": "test", - "BypassGovernanceRetention": false - "VersionId":"testVersion", - "MFA":"Test" - } - ``` - | -
| **selectors** | -Optional | -List | -`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | -
| Input Field | -Type | -
|---|---|
| RequestPayer | -String | -
| BypassGovernanceRetention | -Boolean | -
| ExpectedBucketOwner | -String | -
| IfMatch | -String | -
| IfMatchLastModifiedTime | -Map | -
| IfMatchSize | -Int | -
| VersionId | -String | -
| MFA | -String | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- - Response syntax can be referred [delete_object - Boto3 1.40.55 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/delete_object.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`errorMessage: "Parameter validation failed:\nInvalid bucket name \"s3-activity-test \": Bucket name must match the regex \"^[a-zA-Z0-9.\\-_]{1,255}$\" or be an ARN matching the regex \"^arn:(aws).:(s3|s3-object-lambda):[a-z\\-0-9]:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\\-.]{1,63}$|^arn:(aws).*:s3-outposts:[a-z\\-0-9]+:[0-9]{12}:outpost[/:][a-zA-Z0-9\\-]{1,63}[/:]accesspoint[/:][a-zA-Z0-9\\-]{1,63}$\""` | -
| Workflow example | -
|---|
| - ```yaml - name: aws-s3-delete-object - description: 'Delete an AWS S3 Object' - - steps: - - name: aws_s3_deleteObject_1 - type: action - action: aws.s3.deleteObject - version: '1' - inputs: - awsRoleArn: "arn:aws:iam::123456789012:role/my-workflow-role" - region: "us-west-2" - bucket: "my-bucket" - key: "path/to/object.txt" - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **bucket** | -Required | -String | -"`examplebucket`" | -
| **key** | -Required | -String | -"`path/to/object.txt`" | -
| **body** | -Required | -String | -`file content` | -
| **contentType** | -Required | -String | -"`plain/text`" | -
| **tagging** | -Optional | -String | -`“key1=value1"` | -
| **parameters** | -Optional | -Map | -- ```yaml - { - "ServerSideEncryption": "AES256", - "Metadata": { - 'metadata1': 'value1', - 'metadata2': 'value2', - } - } - ``` - | -
| **selectors** | -Optional | -List | -`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | -
| Input Field | -Type | -
|---|---|
| RequestPayer | -String | -
| ACL | -String | -
| CacheControl | -String | -
| ContentDisposition | -String | -
| ContentEncoding | -String | -
| ContentLanguage | -String | -
| ContentLength | -Int | -
| ContentMD5 | -String | -
| ChecksumAlgorithm | -String | -
| ChecksumCRC32 | -String | -
| ChecksumCRC32C | -String | -
| ChecksumCRC64NVME | -String | -
| ChecksumSHA1 | -String | -
| ChecksumSHA256 | -String | -
| Expires | -Map | -
| IfMatch | -String | -
| IfNoneMatch | -String | -
| GrantFullControl | -String | -
| GrantRead | -String | -
| GrantReadACP | -String | -
| GrantWriteACP | -String | -
| WriteOffsetBytes | -Int | -
| ServerSideEncryption | -String | -
| StorageClass | -String | -
| WebsiteRedirectLocation | -String | -
| SSECustomerAlgorithm | -String | -
| SSECustomerKey | -String | -
| SSEKMSKeyId | -String | -
| SSEKMSEncryptionContext | -String | -
| BucketKeyEnabled | -Boolean | -
| RequestPayer | -String | -
| ObjectLockMode | -String | -
| ObjectLockRetainUntilDate | -Map | -
| ObjectLockLegalHoldStatus | -String | -
| ExpectedBucketOwner | -String | -
| Metadata | -Map | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- - Response syntax can be referred [put_object - Boto3 1.40.59 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/put_object.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`errorMessage: "An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist"` | -
| Workflow example | -
|---|
| - ```yaml - name: s3-put-object - description: 'Put an AWS S3 Object' - - steps: - - name: aws_s3_putObject_1 - type: action - action: aws.s3.putObject - version: '1' - inputs: - awsRoleArn: "arn:aws:iam::123456789012:role/my-workflow-role" - region: "us-east-2" - bucket: "examplebucket" - key: "path/to/object.txt" - body: "Hello world" - contentType: "plain/text" - tagging: "key1=value1" - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **bucket** | -Required | -String | -"`examplebucket`" | -
| **key** | -Required | -String | -"`path/to/object.txt`" | -
| **versionId** | -Optional | -String | -`"some-version-id"` | -
| **range** | -Optional | -String | -`bytes=0-99` | -
| **parameters** | -Optional | -Map | -- ```yaml - { - "ChecksumMode": "ENABLED", - "ExpectedBucketOwner": "test-user" - } - ``` - | -
| **selectors** | -Optional | -List | -`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | -
| Input Field | -Type | -
|---|---|
| IfMatch | -String | -
| IfModifiedSince | -Map | -
| IfNoneMatch | -String | -
| IfUnmodifiedSince | -Map | -
| ResponseCacheControl | -String | -
| ResponseContentDisposition | -String | -
| ResponseContentEncoding | -String | -
| ResponseContentLanguage | -String | -
| ResponseContentType | -String | -
| ResponseExpires | -Map | -
| SSECustomerAlgorithm | -String | -
| SSECustomerKey | -String | -
| RequestPayer | -String | -
| PartNumber | -Int | -
| ExpectedBucketOwner | -String | -
| ChecksumMode | -String | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- - Response syntax can be referred to in the [get_object - Boto3 1.40.59 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/get_object.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`errorMessage: "An error occurred (InvalidArgument) when calling the GetObject operation: Invalid version id specified"` | -
| Workflow example | -
|---|
| - ```yaml - name: s3-get-object - description: 'Get an AWS S3 Object' - - steps: - - name: aws_s3_getObject_1 - type: action - action: aws.s3.getObject - version: '1' - inputs: - awsRoleArn: "arn:aws:iam::123456789012:role/my-workflow-role" - region: "us-east-2" - bucket: "examplebucket" - key: "path/to/object.txt" - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **message** | -Required | -String | -
- Messages must be UTF-8 encoded strings and at most 256 KB in size
- - `'Workflow failed at step 3'` - - |
-
| **topicArn** | -Optional | -String | -
- If you don’t specify a value for the topicArn parameter, Must specify a value for the targetArn parameters.
- - `“arn:aws:sns:us-east-2:123456789012:my-topic”` - - |
-
| **targetArn** | -Optional | -String | -
- If you don’t specify a value for the topicArn parameter, Must specify a value for the targetArn parameters.
- - `"arn:aws:sns:us-east-2:123456789012:MySNSTopic"` - - |
-
| **subject** | -Optional | -String | -`"Workflow Update"` | -
| **MessageStructure** | -Optional | -String | -`MessageStructure` | -
| **messageAttributes** | -Optional | -Map | -- ```json - { - 'string': { - 'DataType': 'string', - 'StringValue': 'string', - 'BinaryValue': b'bytes' - } - }, - ``` - | -
| **messageDeduplicationId** | -Optional | -String | -`“abc123deduplicationId5678”` | -
| **messageGroupId** | -Optional | -String | -`“order-processing-group-2023_A”` | -
| Input Field | -Type | -Example | -
|---|---|---|
| PhoneNumber | -String | -We do not include PhoneNumber as it is considered Personally Identifiable Information (PII). | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- `[{"success":true,"response":{"MessageId":"2333ededwedwed-52f5-a716-e10355e3e2ff"}}]`
- - Response syntax can be referred to sns-publish- Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns/client/publish.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`[{"errorMessage":"An error occurred (InvalidParameter) when calling the Publish operation: Invalid parameter: TopicArn or TargetArn Reason: no value for required parameter","success":false,"response":null}]` | -
| Workflow example | -
|---|
| - ```yaml - name: sns-publish-test - description: Publishes a notification to an SNS topic - workflowInputs: - arnRole: - type: String - steps: - - name: aws_sns_publish_1 - type: action - action: aws.sns.publish - version: '1' - inputs: - awsRoleArn: ${{ .workflowInputs.arnRole }} - region: us-east-1 - topicArn: arn:aws:sns:us-east-1:123456789012:workflow-test-topic - subject: "Workflow Update" - message: "The data processing workflow has completed successfully." - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **queueUrl** | -Required | -String | -"`https://sqs.us-east-2.amazonaws.com/123456789012/my-queue`" | -
| **messageBody** | -Required | -String | -`“This is a test message”` | -
| **messageDeduplicationId** | -Optional | -String | -`“abc123deduplicationId5678”` | -
| **messageGroupId** | -Optional | -String | -`“group1”` | -
| **messageAttributes** | -Optional | -Map | -
- - `{ "my_attribute_name_1": { "DataType": "String", "StringValue":"my_attribute_value_1"},` - - -- `"my_attribute_name_2": { "DataType": "String", "StringValue":"my_attribute_value_2"}}` - - |
-
| **delaySeconds** | -Optional | -Int | -`123` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- `{"statusCode":200, "payload":{"status":"success","data":{"MessageId":"e9b73a52-d018-4a73-9fcd-8efb682fba43","MD5OfMessageBody":"fae535c7f7c5687a1c3d8bc52288e33a","MD5OfMessageAttributes":"3ae3c4f59958e031d0d53af2d157e834", }, "message":"Message sent successfully to the SQS queue." }}`
- - Response syntax can be referred to [SQS send_message - Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sqs/client/send_message.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`"errorMessage": "SQS.Client.exceptions.QueueDoesNotExist: "The specified queue does not exist.""` | -
| Workflow example | -
|---|
| - ```yaml - name: sqs-send-message-test - description: Sends a message to an SQS queue - workflowInputs: - arnRole: - type: String - steps: - - name: aws_sqs_sendMessage_1 - type: action - action: aws.sqs.sendMessage - version: '1' - inputs: - awsRoleArn: ${{ .workflowInputs.arnRole }} - region: us-east-2 - queueUrl: https://sqs.us-east-2.amazonaws.com/123456789012/workflow-test-queue - messageBody: "This is a test message" - messageAttributes: - my_attribute_name_1: - DataType: "String" - StringValue: "my_attribute_value_1" - my_attribute_name_2: - DataType: "String" - StringValue: "my_attribute_value_2" - next: end - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **awsRoleArn** | -Optional | -String | -`arn:aws:iam::123456789012:role/my-workflow-role` | -
| **awsAccessKeyId** | -Optional | -String | -`${{ :secrets: |
-
| **awsSecretAccessKey** | -Optional | -String | -`${{ :secrets: |
-
| **awsSessionToken** | -Optional | -String | -`${{ :secrets: |
-
| **region** | -Required | -String | -`"us-east-2"` | -
| **queueUrl** | -Required | -String | -"`https://sqs.us-east-2.amazonaws.com/123456789012/my-queue`" | -
| **maxNumberOfMessages** | -Optional | -Int | -`10` | -
| **waitTimeSeconds** | -Optional | -Int | -`5` | -
| **VisibilityTimeout** | -Optional | -Int | -`123` | -
| **AttributeNames** | -Optional | -List | -- ```yaml - [ - 'All'|'Policy'|'VisibilityTimeout'|'MaximumMessageSize'|'MessageRetentionPeriod'|'ApproximateNumberOfMessages'|'ApproximateNumberOfMessagesNotVisible'|'CreatedTimestamp'|'LastModifiedTimestamp'|'QueueArn'|'ApproximateNumberOfMessagesDelayed'|'DelaySeconds'|'ReceiveMessageWaitTimeSeconds'|'RedrivePolicy'|'FifoQueue'|'ContentBasedDeduplication'|'KmsMasterKeyId'|'KmsDataKeyReusePeriodSeconds'|'DeduplicationScope'|'FifoThroughputLimit'|'RedriveAllowPolicy'|'SqsManagedSseEnabled', - ] - ``` - | -
| **messageAttributeNames** | -Optional | -List | -- ```yaml - [ - 'message_attribute_name', - ], - ``` - | -
| **messageSystemAttributeNames** | -Optional | -List | -`['SenderId', 'SentTimestamp']` | -
| **receiveRequestAttemptId** | -Optional | -String | -`“req-1234abcd”` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **response** | -object | -
- `{"response": ` - - Response syntax can be referred to receive_message - Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sqs/client/receive_message.html) - - |
-
| **success** | -Boolean | -`success: true | false` | -
| **errorMessage** | -String | -`"errorMessage": "SQS.Client.exceptions.QueueDoesNotExist: "The specified queue does not exist.""` | -
| Workflow example | -
|---|
| - ```yaml - name: sqs-receive-message-test - description: 'Receives a message from an SQS queue' - steps: - - name: aws_sqs_receiveMessage_1 - type: action - action: aws.sqs.receiveMessage - version: '1' - inputs: - awsRoleArn: ${{ :secrets:awsRoleArn }} - region: us-east-1 - queueUrl: https://sqs.us-east-1.amazonaws.com/123456789012/workflow-test-queue - waitTimeSeconds: 5 - maxNumberOfMessages: 10 - messageAttributeNames: ['message_attribute_name'], - ``` - | -
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **logStreamName** | +Required | +String | +`"2023/10/27/[$LATEST]abcdef123456"` | +
| **logGroupName** | +Optional | +String | +`"/aws/lambda/my-function"` | +
| **logGroupIdentifier** | +Optional | +String | +`“arn:partition:service:region:account-id:resource”` | +
| **startTime** | +Optional | +Int | +`1759296000000` | +
| **endTime** | +Optional | +Int | +`1759296000000` | +
| **limit** | +Optional | +Int | +`50` | +
| **startFromHead** | +Optional | +Boolean | +`true` | +
| **unmask** | +Optional | +Boolean | +`false` | +
| **nextToken** | +Optional | +String | +`“f/39218833627378687642013305455131706539523449361490509828/s”` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | ++ ```yaml + { + 'events': [ + { + 'timestamp': 123, + 'message': 'string', + 'ingestionTime': 123 + }, + ], + 'nextForwardToken': 'string', + 'nextBackwardToken': 'string' +} + ``` + | +
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`“An error occurred (ExpiredTokenException) when calling the GetLogEvents operation: The security token included in the request is expired”` | +
| Workflow example | +
|---|
| + ```yaml + name: get-lambda-logs + description: 'Retrieve log events from an AWS Lambda function' + workflowInputs: + region: + type: String + defaultValue: us-east-2 + logGroupName: + type: String + defaultValue: /aws/lambda/my-function + logStreamName: + type: String + defaultValue: 2023/10/27/[$LATEST]abcdef123456 + steps: + name: get_events_step + type: action + action: aws.cloudwatch.get_log_events + version: '1' + inputs: + region: ${{ .workflowInputs.region }} + logGroupName: ${{ .workflowInputs.logGroupName }} + logStreamName: ${{ .workflowInputs.logStreamName }} + limit: 100 + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **logGroupName** | +Required | +String | +`"/aws/lambda/hello-you"` | +
| **logStreamName** | +Required | +String | +`"2025/09/24/[$LATEST]09f7ca9e9ab044f389419ce60305f594"` | +
| **logEvents** | +Required | +List | ++ ```yaml + [ + +{ "timestamp": 1698384000000, "message": "Workflow task started." }, + + { "timestamp": 1698384000015, "message": "Data validated successfully." } ] + ``` + | +
| **entity** | +Optional | +Dict | +`{ "entity": { "keyAttributes": { "ResourceType": "AWS::ElasticLoadBalancingV2::LoadBalancer", "Identifier": "app/my-web-lb/12345", "Environment": "Production" }, "attributes": { "MonitoringTier": "Gold", "OwnerTeam": "Networking", "MaintenanceWindow": "Sat: 0200-0400" } } }` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | ++ ```yaml + { + 'events': [ + { + 'timestamp': 123, + 'message': 'string', + 'ingestionTime': 123 + }, + ], + 'nextForwardToken': 'string', + 'nextBackwardToken': 'string' + } +``` + | +
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`“An error occurred (ExpiredTokenException) when calling the GetLogEvents operation: The security token included in the request is expired”` | +
| Workflow example | +
|---|
| + ```yaml + name: get-lambda-logs + description: 'Retrieve log events from an AWS Lambda function' + workflowInputs: + region: + type: String + defaultValue: us-east-2 + logGroupName: + type: String + defaultValue: /aws/lambda/my-function + logStreamName: + type: String + defaultValue: 2023/10/27/[$LATEST]abcdef123456 + steps: + name: get_events_step + type: action + action: aws.cloudwatch.get_log_events + version: '1' + inputs: + region: ${{ .workflowInputs.region }} + logGroupName: ${{ .workflowInputs.logGroupName }} + logStreamName: ${{ .workflowInputs.logStreamName }} + limit: 100 + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **imageId** | +Required | +String | +`"ami-0ca4d5db4872d0c28"` | +
| **instanceType** | +Required | +String | +`"t2.micro"` | +
| **minCount** | +Required | +Int | +`1` | +
| **maxCount** | +Required | +Int | +`10` | +
| **parameters** | +Optional | +Map | ++ ```yaml + { + "EbsOptimized": false, + "TagSpecifications": [ + { + "ResourceType": "instance", + "Tags": [ + { + "Key": "Name", + "Value": "My-Web-Server" + } + ] + } + } + ``` + | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +Object | +
+ + Response syntax can be referred: [run_instances - Boto3 1.40.50 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/run_instances.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: ""` | +
| Workflow example | +
|---|
| + ```yaml + name: ec2_run_instance + workflowInputs: + arnRole: + type: String + required: true + steps: + - name: RunInstance + type: action + action: aws.ec2.runInstances + version: '1' + inputs: + awsRoleArn: ${{.workflowInputs.arnRole}} + region: us-east-2 + imageId: ami-0ca4d5db4872d0c28 + instanceType: t2.micro + minCount: 1 + maxCount: 1 + parameters: + EbsOptimized: false + TagSpecifications: + - ResourceType: instance + Tags: + - Key: Name + Value: My-Test-Instance + selectors: + - name: instanceId + expression: .response.Instances[0].InstanceId + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **instanceIds** | +Optional | +List | +`"[\"i-0123456789abcdef0\", \"i-0fedcba9876543210\"]"` | +
| **filters** | +Optional | +List | +`"[{\"Name\": \"instance-state-name\", \"Values\": [\"running\"]}]"` | +
| **nextToken** | +Optional | +String | +`“abcdefgh“` | +
| **maxResults** | +Optional | +Int | +100 | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +Object | +
+ ```yaml
+ {"response": + Response syntax can be referred [describe_instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/describe_instances.html). + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: "The parameter instancesSet cannot be used with the parameter maxResults"` | +
| Workflow Example | +
|---|
| + ```yaml + name: ab-ec2-describe-test + description: '' + workflowInputs: + arnRole: + type: String + steps: + - name: aws_ec2_describeInstances_1 + type: action + action: aws.ec2.describeInstances + version: '1' + inputs: + awsRoleArn: ${{ .workflowInputs.arnRole }} + region: us-east-2 + instanceIds: + - i-123456789abcdef0 + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **instanceIds** | +Required | +List | +`"[\"i-0123456789abcdef0\", \"i-0fedcba9876543210\"]"` | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +Object | +
+ ```yaml
+ {"response":{
+ 'StartingInstances': [
+ {
+ 'InstanceId': 'String',
+ 'CurrentState': {
+ 'Code': 123,
+ 'Name': 'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'
+ },
+ 'PreviousState': {
+ 'Code': 123,
+ 'Name': 'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'
+ }
+ },
+ ]
+ }
+
+ }
+
+ }
+ ```
+ + Response syntax can be referred [start_instances - Boto3 1.40.50 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/start_instances.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: "The parameter instancesSet cannot be used with the parameter maxResults"` | +
| Workflow example | +
|---|
| + ```yaml + name: ab-ec2-startInstance-test + description: '' + workflowInputs: + arnRole: + type: String + region: + type: String + defaultValue: us-west-2 + instanceIds: + type: list + defaultValue: ["i-123456789abcdef0"] + steps: + - name: aws_ec2_startInstances_1 + type: action + action: aws.ec2.startInstances + version: '1' + inputs: + awsRoleArn: ${{ .workflowInputs.arnRole }} + region: ${{ .workflowInputs.region }} + instanceIds: ${{ .workflowInputs.instanceIds }} + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **instanceIds** | +Required | +List | +`"[\"i-0123456789abcdef0\", \"i-0fedcba9876543210\"]"` | +
| **hibernate** | +Optional | +Boolean | +true or false (Default: `false`) | +
| **force** | +Optional | +Boolean | +true or false (Default: `false`) | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | +
+ ```yaml
+ {
+ 'StoppingInstances': [
+ {
+ 'InstanceId': 'string',
+ 'CurrentState': {
+ 'Code': 123,
+ 'Name': 'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'
+ },
+ 'PreviousState': {
+ 'Code': 123,
+ 'Name': 'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'
+ }
+ },
+ ]
+ }
+ ```
+ + Response syntax can be referred [stop_instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/stop_instances.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: "An error occurred (InvalidInstanceID.Malformed) when calling the StopInstances operation: The instance ID 'i-123456789' is malformed"` | +
| Workflow example | +
|---|
| + ```yaml + name: ec2_stop_instance + description: '' + workflowInputs: + arnRole: + type: String + region: + type: String + defaultValue: us-west-2 + instanceIds: + type: list + defaultValue: ["i-123456789abcdef0"] + steps: + - name: aws_stop_instances_1 + type: action + action: aws.ec2.stopInstances + version: '1' + inputs: + awsRoleArn: ${{ .workflowInputs.arnRole }} + region: ${{ .workflowInputs.region }} + instanceIds: ${{ .workflowInputs.instanceIds }} + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **instanceIds** | +Required | +List | +`"[\"i-0123456789abcdef0\", \"i-0fedcba9876543210\"]"` | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +Object | +[reboot_instances - Boto3 1.40.56 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/reboot_instances.html) | +
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: ""` | +
| Workflow example | +
|---|
| + ```yaml + name: reboot-ec2-test + description: '' + workflowInputs: + arnRole: + type: String + region: + type: String + defaultValue: us-west-2 + instanceIds: + type: List + defaultValue: ["i-123456789abcdef0"] + steps: + - name: aws_ec2_rebootInstances_1 + type: action + action: aws.ec2.rebootInstances + version: '1' + inputs: + awsRoleArn: ${{ .workflowInputs.arnRole }} + region: ${{ .workflowInputs.region }} + instanceIds: ${{ .workflowInputs.instanceIds }} + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **instanceIds** | +Required | +List | +`"[\"i-0123456789abcdef0\", \"i-0fedcba9876543210\"]"` | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | +
+ ```yaml
+ {
+ 'TerminatingInstances': [
+ {
+ 'InstanceId': 'String',
+ 'CurrentState': {
+ 'Code': 123,
+ 'Name': 'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'
+ },
+ 'PreviousState': {
+ 'Code': 123,
+ 'Name': 'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'
+ }
+ },
+ ]
+ }
+ ```
+ + Response syntax can be referred [terminate_instances - Boto3 1.40.50 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/terminate_instances.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: "An error occurred (`InvalidInstanceID.Malformed`) when calling the TerminateInstances operation: The instance ID 'i-012345678' is malformed"` | +
| Workflow example | +
|---|
| + ```yaml + name: ec2-terminate-test + description: '' + workflowInputs: + arnRole: + type: String + region: + type: String + defaultValue: us-west-2 + instanceIds: + type: list + defaultValue: ["i-123456789abcdef0"] + steps: + - name: aws_ec2_terminateInstances_1 + type: action + action: aws.ec2.terminateInstances + version: '1' + inputs: + awsRoleArn: ${{ .workflowInputs.arnRole }} + region: ${{ .workflowInputs.region }} + instanceIds: ${{ .workflowInputs.instanceIds }} + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **description** | +Optional | +String | +"This is a test snapshot" | +
| **outpostArn** | +Optional | +String | +`“arn:aws:ec2:us-east-1:123456789012:outpost/op-1a2b3c4d5e6f7g8h9”` | +
| **volumeId** | +Required | +String | +“`vol-0123456789abcdef0`“ | +
| **tagSpecifications** | +Optional | +List | +`[{"ResourceType":"snapshot","Tags":[{"Key":"testKey","Value":"testValue"}]}]` | +
| **location** | +Optional | +String | +“regional” | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +Object | +
+ ```yaml
+ {
+ 'OwnerAlias': 'string',
+ 'OutpostArn': 'string',
+ 'Tags': [
+ {
+ 'Key': 'string',
+ 'Value': 'string'
+ },
+ ],
+ 'StorageTier': 'archive'|'standard',
+ 'RestoreExpiryTime': datetime(2015, 1, 1),
+ 'SseType': 'sse-ebs'|'sse-kms'|'none',
+ 'AvailabilityZone': 'string',
+ 'TransferType': 'time-based'|'standard',
+ 'CompletionDurationMinutes': 123,
+ 'CompletionTime': datetime(2015, 1, 1),
+ 'FullSnapshotSizeInBytes': 123,
+ 'SnapshotId': 'string',
+ 'VolumeId': 'string',
+ 'State': 'pending'|'completed'|'error'|'recoverable'|'recovering',
+ 'StateMessage': 'string',
+ 'StartTime': datetime(2015, 1, 1),
+ 'Progress': 'string',
+ 'OwnerId': 'string',
+ 'Description': 'string',
+ 'VolumeSize': 123,
+ 'Encrypted': True|False,
+ 'KmsKeyId': 'string',
+ 'DataEncryptionKeyId': 'string'
+ }
+ ```
+ + Response syntax can be referred [create_snapshot](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/create_snapshot.html). + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: "The parameter instancesSet cannot be used with the parameter maxResults"` | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **snapshotId** | +Required | +String | +`“snapshot-id-1"` | +
| **selectors** | +Optional | +String | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +Object | +
+ No Response in case of success : true
+ + Response syntax can be referred [delete_snapshot - Boto3 1.40.55 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/delete_snapshot.html). + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: "Failed to delete snapshot"` | +
| Workflow Example | +
|---|
| + ```yaml + name: ec2-deleteSnapshot-test + description: '' + workflowInputs: + arnRole: + type: String + region: + type: String + defaultValue: us-west-2 + snapshotId: + type: List + defaultValue: snapshot-id-1 + steps: + - name: aws_ec2_deleteSnapshot_1 + type: action + action: aws.ec2.deleteSnapshot + version: '1' + inputs: + awsRoleArn: ${{ .workflowInputs.arnRole }} + region: ${{ .workflowInputs.region }} + snapshotId: ${{ .workflowInputs.snapshotId }} + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **service** | +Required | +String | +`service: "sqs"`.[AWS available services](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) | +
| **api** | +Required | +String | +`api: "create_queue"` | +
| **parameters** | +Required | +Map | ++ ```yaml + parameters: { + "QueueName": "dks-testing-queue", + "Attributes": { + "DelaySeconds": "0", + "MessageRetentionPeriod": "86400" + } + } + ``` + | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +Object | +`{"response": |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: "User does not have permission to query DynamoDB"` | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **functionName** | +Required | +String | +`functionName: "hello-you"` | +
| **payload** | +Optional | +Map | ++ `payload: user: R2-D2` + | +
| **selectors** | +Optional | +List | +`[{\"name\": \"payload\", \"expression\": \".payload\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **payload** | +Map | ++ ```yaml + { + statusCode=200.0, + body=\"Hello R2-D2!\" + } + ``` + | +
| **statusCode** | +Int | +`statusCode: 200` | +
| **executedVersion** | +String | +`executedVersion: "$LATEST"` | +
| **functionError** | +String | +`functionError: "Unhandled::Error occurred"` | +
| **success** | +Boolean | +`Status of the request` | +
| **errorMessage** | +String | +`Failure reason as message` | +
| Workflow definition | +Inputs | +Outputs | +Outputs when selectors are provided | +
|---|---|---|---|
| + ```yaml + name: LambdaTest + + workflowInputs: + region: + type: String + functionName: + type: String + payload: + type: Map + defaultValue: {} + + steps: + - name: awsLambda + type: action + action: aws.lambda.invoke + version: 1 + inputs: + region: ${{ .workflowInputs.region }} + functionName: ${{ .workflowInputs.functionName }} + awsAccessKeyId: ${{ :secrets:awsAccessKeyId }} + awsSecretAccessKey: ${{ :secrets:awsSecretAccessKey }} + awsSessionToken: ${{ :secrets:awsSessionToken }} + payload: ${{ .workflowInputs.payload }} + selectors: ${{ .workflowInputs.selectors }} + + - name: logOutput + type: action + action: newrelic.instrumentation.log + version: 1 + inputs: + message: 'The lambda function message output is:${{ .steps.awsLambda.outputs.payload.body }}' + licenseKey: '${{ :secrets:STAGING_NEW_RELIC_LICENSE_KEY }}' + ``` + | ++ ```yaml + { + "inputs": [ + { + "key": "region" + "value": "\"us-east-2\"" + }, + { + "key": "functionName" + "value": "\"hello-you\"" + }, + { + "key": "payload" + "value": "{\"user\":\"R2-D2\"}" + }, + { + "key": "selectors" + "value": "[{\"name\": \"payload\", \"expression\": \".payload\"}]" + } + ] + } + ``` + | ++ ```yaml + Success case: + { + success: true + executedVersion=$LATEST, + statusCode=200, + payload={ + statusCode=200.0, + body=\"Hello R2-D2\" + } + } + + Failure case: + { + "errorMessage": "Invalid format", + "success": false + } + ``` + | ++ ```yaml + { + payload={ + statusCode=200.0, + body=\"Hello R2-D2\" + } + } + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **functionName** | +Required | +String | +`"my-lambda-function-to-update"` | +
| **role** | +Optional | +String | +`arn:aws:iam::123456789012:role/new-lambda-role` | +
| **handler** | +Optional | +String | +`"main.new_handler"` | +
| **description** | +Optional | +String | +`Updated function description` | +
| **parameters** | +Optional | +Map | ++ ```yaml + { + "Timeout": "60", + "MemorySize": 123, + }, + ``` + | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | +
+ ```yaml
+ [{"success":true,"response":{"FunctionName":"hello-you","FunctionArn":"arn:aws:lambda:us-east-2:----:function:hello-you","Runtime":"nodejs20.x","Role":"arn:aws:iam::----:role/TF-hello-you-role","Handler":"hello-you.handler","CodeSize":334,"Description":"This is hello you description from action","Timeout":30,"MemorySize":128,"LastModified":"2025-09-23T13:57:03.000+0000","CodeSha256":"CU03aDDg+34=","Version":"$LATEST","TracingConfig":{"Mode":"PassThrough"},"RevisionId":"0f1e4d9b-c45a-4896-a32d-7cd78e77a273","State":"Active","LastUpdateStatus":"InProgress","LastUpdateStatusReason":"The function is being created.","LastUpdateStatusReasonCode":"Creating","PackageType":"Zip","Architectures":["x86_64"],"EphemeralStorage":{"Size":512},"SnapStart":{"ApplyOn":"None","OptimizationStatus":"Off"},"RuntimeVersionConfig":{"RuntimeVersionArn":"arn:aws:lambda:us-east-2::runtime:01eab27397bfdbdc243d363698d4bc355e3c8176d34a51cd47dfe58cf977f508"},"LoggingConfig":{"LogFormat":"Text","LogGroup":"/aws/lambda/hello-you"}}}]
+ ```
+ + Response syntax can be referred to [update_function_configuration - Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda/client/update_function_configuration.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`[ { "errorMessage": "An error occurred (ResourceNotFoundException) when calling the UpdateFunctionConfiguration operation: Function not found: arn:aws:lambda:us-east-2:661945836867:function:my-lambda-function-to-update", "success": false, "response": null } ]` | +
| Workflow example | +
|---|
| + ```yaml + name: lambda-update-config-test + description: 'Updates the timeout and memory of a Lambda function' + workflowInputs: + arnRole: + type: String + steps: + - name: aws_lambda_update_function_configuration_1 + type: action + action: aws.lambda.updateFunctionConfiguration + version: '1' + inputs: + awsRoleArn: ${{ .workflowInputs.arnRole }} + region: us-west-2 + functionName: my-lambda-function-to-update + parameters: + Timeout:60 + MemorySize:123 + + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **functionName** | +Required | +String | +`"my-lambda-function"` | +
| **parameters** | +Optional | +Map | ++ ```yaml + { + "Qualifier": "1" + }, + ``` + | +
| **selectors** | +Optional | +List | +`[[{"name": "response", "expression": ".response"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | +
+ ```yaml
+ {"response": + Response syntax can be referred to [update_function_configuration - Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda/client/get_function.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`"errorMessage": "ResourceNotFoundException: Function not found"` | +
| Workflow example | +
|---|
| + ```yaml + name: lambda-get-function-test + description: 'Retrieves the configuration of a specific Lambda function' + workflowInputs: + arnRole: + type: String + steps: + - name: aws_lambda_getFunction_1 + type: action + action: aws.lambda.getFunction + version: '1' + inputs: + awsRoleArn: ${{ .workflowInputs.arnRole }} + region: us-east-1 + FunctionName: hello-you + parameters: + Qualifier: 1 + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **functionName** | +Required | +String | +`"my-lambda-function"` | +
| **marker** | +Optional | +String | +
+ Pass the `NextMarker` token from a previous response for pagination.
+ + e.g., `"abcd....."` + + |
+
| **maxItems** | +Optional | +Int | +
+ Limit the number of aliases returned
+ + e.g., `123` + + |
+
| **parameters** | +Optional | +Map | +
+ For additional optional API parameters.
+ + e.g., `{"AnotherOptionalParam": "value"}` + + |
+
| **selectors** | +Optional | +List | +`[{"name": "response", "expression": ".response"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | +
+ ```yaml
+ {"response": + Response syntax can be referred to [update_function_configuration - Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda/client/list_aliases.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`"errorMessage": "ResourceNotFoundException: Function not found"` | +
| Workflow example | +
|---|
| + ```yaml + name: lambda-list-aliases-test + description: 'Lists all aliases for a Lambda function' + workflowInputs: + arnRole: + type: String + steps: + - name: aws_lambda_list_aliases_1 + type: action + action: aws.lambda.listAliases + version: '1' + inputs: + awsRoleArn: ${{ .workflowInputs.arnRole }} + region: us-east-1 + functionName: hello-you + parameters: + FunctionVersion: 1 + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **bucket** | +Required | +String | +"`examplebucket`" | +
| **prefix** | +Optional | +String | +"`path/to/folder/`" | +
| **maxKeys** | +Optional | +Integer | +`100` | +
| **continuationToken** | +Optional | +String | +`some-token` | +
| **parameters** | +Optional | +Map | ++ ```graphql + { + "Delimiter": "/" + } + ``` + | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Input Field | +Type | +
|---|---|
| EncodingType | +String | +
| FetchOwner | +Boolean | +
| StartAfter | +String | +
| RequestPayer | +String | +
| ExpectedBucketOwner | +String | +
| OptionalObjectAttributes | +List | +
| Delimiter | +String | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | +
+ + Response syntax can be referred to in the [list_objects_v2 - Boto3 1.40.52 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/list_objects_v2.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: "Parameter validation failed:\nInvalid bucket name \"s3-activity-test \": Bucket name must match the regex \"^[a-zA-Z0-9.\\-_]{1,255}$\" or be an ARN matching the regex \"^arn:(aws).:(s3|s3-object-lambda):[a-z\\-0-9]:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\\-.]{1,63}$|^arn:(aws).*:s3-outposts:[a-z\\-0-9]+:[0-9]{12}:outpost[/:][a-zA-Z0-9\\-]{1,63}[/:]accesspoint[/:][a-zA-Z0-9\\-]{1,63}$\""` | +
| Workflow example | +
|---|
| + ```yaml + name: aws-s3-list-objects-v2 + description: 'List Objects in an AWS S3 Bucket' + + steps: + - name: aws_s3_listObjectsV2_1 + type: action + action: aws.s3.listObjectsV2 + version: '1' + inputs: + awsRoleArn: "arn:aws:iam::123456789012:role/my-workflow-role" + region: "us-east-2" + bucket: "examplebucket" + prefix: "path/to/folder/" + maxKeys: 100 + continuationToken: "some-token" + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **bucket** | +Required | +String | +"`examplebucket`" | +
| **key** | +Required | +String | +"`path/to/object.txt`" | +
| **parameters** | +Optional | +Map | ++ ```yaml + { + "RequestPayer": "test", + "BypassGovernanceRetention": false + "VersionId":"testVersion", + "MFA":"Test" + } + ``` + | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Input Field | +Type | +
|---|---|
| RequestPayer | +String | +
| BypassGovernanceRetention | +Boolean | +
| ExpectedBucketOwner | +String | +
| IfMatch | +String | +
| IfMatchLastModifiedTime | +Map | +
| IfMatchSize | +Int | +
| VersionId | +String | +
| MFA | +String | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | +
+ + Response syntax can be referred [delete_object - Boto3 1.40.55 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/delete_object.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: "Parameter validation failed:\nInvalid bucket name \"s3-activity-test \": Bucket name must match the regex \"^[a-zA-Z0-9.\\-_]{1,255}$\" or be an ARN matching the regex \"^arn:(aws).:(s3|s3-object-lambda):[a-z\\-0-9]:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\\-.]{1,63}$|^arn:(aws).*:s3-outposts:[a-z\\-0-9]+:[0-9]{12}:outpost[/:][a-zA-Z0-9\\-]{1,63}[/:]accesspoint[/:][a-zA-Z0-9\\-]{1,63}$\""` | +
| Workflow example | +
|---|
| + ```yaml + name: aws-s3-delete-object + description: 'Delete an AWS S3 Object' + + steps: + - name: aws_s3_deleteObject_1 + type: action + action: aws.s3.deleteObject + version: '1' + inputs: + awsRoleArn: "arn:aws:iam::123456789012:role/my-workflow-role" + region: "us-west-2" + bucket: "my-bucket" + key: "path/to/object.txt" + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **bucket** | +Required | +String | +"`examplebucket`" | +
| **key** | +Required | +String | +"`path/to/object.txt`" | +
| **body** | +Required | +String | +`file content` | +
| **contentType** | +Required | +String | +"`plain/text`" | +
| **tagging** | +Optional | +String | +`“key1=value1"` | +
| **parameters** | +Optional | +Map | ++ ```yaml + { + "ServerSideEncryption": "AES256", + "Metadata": { + 'metadata1': 'value1', + 'metadata2': 'value2', + } + } + ``` + | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Input Field | +Type | +
|---|---|
| RequestPayer | +String | +
| ACL | +String | +
| CacheControl | +String | +
| ContentDisposition | +String | +
| ContentEncoding | +String | +
| ContentLanguage | +String | +
| ContentLength | +Int | +
| ContentMD5 | +String | +
| ChecksumAlgorithm | +String | +
| ChecksumCRC32 | +String | +
| ChecksumCRC32C | +String | +
| ChecksumCRC64NVME | +String | +
| ChecksumSHA1 | +String | +
| ChecksumSHA256 | +String | +
| Expires | +Map | +
| IfMatch | +String | +
| IfNoneMatch | +String | +
| GrantFullControl | +String | +
| GrantRead | +String | +
| GrantReadACP | +String | +
| GrantWriteACP | +String | +
| WriteOffsetBytes | +Int | +
| ServerSideEncryption | +String | +
| StorageClass | +String | +
| WebsiteRedirectLocation | +String | +
| SSECustomerAlgorithm | +String | +
| SSECustomerKey | +String | +
| SSEKMSKeyId | +String | +
| SSEKMSEncryptionContext | +String | +
| BucketKeyEnabled | +Boolean | +
| RequestPayer | +String | +
| ObjectLockMode | +String | +
| ObjectLockRetainUntilDate | +Map | +
| ObjectLockLegalHoldStatus | +String | +
| ExpectedBucketOwner | +String | +
| Metadata | +Map | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | +
+ + Response syntax can be referred [put_object - Boto3 1.40.59 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/put_object.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: "An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist"` | +
| Workflow example | +
|---|
| + ```yaml + name: s3-put-object + description: 'Put an AWS S3 Object' + + steps: + - name: aws_s3_putObject_1 + type: action + action: aws.s3.putObject + version: '1' + inputs: + awsRoleArn: "arn:aws:iam::123456789012:role/my-workflow-role" + region: "us-east-2" + bucket: "examplebucket" + key: "path/to/object.txt" + body: "Hello world" + contentType: "plain/text" + tagging: "key1=value1" + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **bucket** | +Required | +String | +"`examplebucket`" | +
| **key** | +Required | +String | +"`path/to/object.txt`" | +
| **versionId** | +Optional | +String | +`"some-version-id"` | +
| **range** | +Optional | +String | +`bytes=0-99` | +
| **parameters** | +Optional | +Map | ++```yaml + { + "ChecksumMode": "ENABLED", + "ExpectedBucketOwner": "test-user" + } +``` + | +
| **selectors** | +Optional | +List | +`[{\"name\": \"response\", \"expression\": \".response\"}, {\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"errorMessage\", \"expression\": \".errorMessage\"}]` | +
| Input Field | +Type | +
|---|---|
| IfMatch | +String | +
| IfModifiedSince | +Map | +
| IfNoneMatch | +String | +
| IfUnmodifiedSince | +Map | +
| ResponseCacheControl | +String | +
| ResponseContentDisposition | +String | +
| ResponseContentEncoding | +String | +
| ResponseContentLanguage | +String | +
| ResponseContentType | +String | +
| ResponseExpires | +Map | +
| SSECustomerAlgorithm | +String | +
| SSECustomerKey | +String | +
| RequestPayer | +String | +
| PartNumber | +Int | +
| ExpectedBucketOwner | +String | +
| ChecksumMode | +String | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | +
+ + Response syntax can be referred to in the [get_object - Boto3 1.40.59 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/get_object.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`errorMessage: "An error occurred (InvalidArgument) when calling the GetObject operation: Invalid version id specified"` | +
| Workflow example | +
|---|
| + ```yaml + name: s3-get-object + description: 'Get an AWS S3 Object' + + steps: + - name: aws_s3_getObject_1 + type: action + action: aws.s3.getObject + version: '1' + inputs: + awsRoleArn: "arn:aws:iam::123456789012:role/my-workflow-role" + region: "us-east-2" + bucket: "examplebucket" + key: "path/to/object.txt" + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **message** | +Required | +String | +
+ Messages must be UTF-8 encoded strings and at most 256 KB in size
+ + `'Workflow failed at step 3'` + + |
+
| **topicArn** | +Optional | +String | +
+ If you don’t specify a value for the topicArn parameter, Must specify a value for the targetArn parameters.
+ + `“arn:aws:sns:us-east-2:123456789012:my-topic”` + + |
+
| **targetArn** | +Optional | +String | +
+ If you don’t specify a value for the topicArn parameter, Must specify a value for the targetArn parameters.
+ + `"arn:aws:sns:us-east-2:123456789012:MySNSTopic"` + + |
+
| **subject** | +Optional | +String | +`"Workflow Update"` | +
| **MessageStructure** | +Optional | +String | +`MessageStructure` | +
| **messageAttributes** | +Optional | +Map | ++ ```json + { + 'string': { + 'DataType': 'string', + 'StringValue': 'string', + 'BinaryValue': b'bytes' + } + }, + ``` + | +
| **messageDeduplicationId** | +Optional | +String | +`“abc123deduplicationId5678”` | +
| **messageGroupId** | +Optional | +String | +`“order-processing-group-2023_A”` | +
| Input Field | +Type | +Example | +
|---|---|---|
| PhoneNumber | +String | +We do not include PhoneNumber as it is considered Personally Identifiable Information (PII). | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | +
+ `[{"success":true,"response":{"MessageId":"2333ededwedwed-52f5-a716-e10355e3e2ff"}}]`
+ + Response syntax can be referred to sns-publish- Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns/client/publish.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`[{"errorMessage":"An error occurred (InvalidParameter) when calling the Publish operation: Invalid parameter: TopicArn or TargetArn Reason: no value for required parameter","success":false,"response":null}]` | +
| Workflow example | +
|---|
| + ```yaml + name: sns-publish-test + description: Publishes a notification to an SNS topic + workflowInputs: + arnRole: + type: String + steps: + - name: aws_sns_publish_1 + type: action + action: aws.sns.publish + version: '1' + inputs: + awsRoleArn: ${{ .workflowInputs.arnRole }} + region: us-east-1 + topicArn: arn:aws:sns:us-east-1:123456789012:workflow-test-topic + subject: "Workflow Update" + message: "The data processing workflow has completed successfully." + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **queueUrl** | +Required | +String | +"`https://sqs.us-east-2.amazonaws.com/123456789012/my-queue`" | +
| **messageBody** | +Required | +String | +`“This is a test message”` | +
| **messageDeduplicationId** | +Optional | +String | +`“abc123deduplicationId5678”` | +
| **messageGroupId** | +Optional | +String | +`“group1”` | +
| **messageAttributes** | +Optional | +Map | +
+ + `{ "my_attribute_name_1": { "DataType": "String", "StringValue":"my_attribute_value_1"},` + + ++ `"my_attribute_name_2": { "DataType": "String", "StringValue":"my_attribute_value_2"}}` + + |
+
| **delaySeconds** | +Optional | +Int | +`123` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | +
+ `{"statusCode":200, "payload":{"status":"success","data":{"MessageId":"e9b73a52-d018-4a73-9fcd-8efb682fba43","MD5OfMessageBody":"fae535c7f7c5687a1c3d8bc52288e33a","MD5OfMessageAttributes":"3ae3c4f59958e031d0d53af2d157e834", }, "message":"Message sent successfully to the SQS queue." }}`
+ + Response syntax can be referred to [SQS send_message - Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sqs/client/send_message.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`"errorMessage": "SQS.Client.exceptions.QueueDoesNotExist: "The specified queue does not exist.""` | +
| Workflow example | +
|---|
| + ```yaml + name: sqs-send-message-test + description: Sends a message to an SQS queue + workflowInputs: + arnRole: + type: String + steps: + - name: aws_sqs_sendMessage_1 + type: action + action: aws.sqs.sendMessage + version: '1' + inputs: + awsRoleArn: ${{ .workflowInputs.arnRole }} + region: us-east-2 + queueUrl: https://sqs.us-east-2.amazonaws.com/123456789012/workflow-test-queue + messageBody: "This is a test message" + messageAttributes: + my_attribute_name_1: + DataType: "String" + StringValue: "my_attribute_value_1" + my_attribute_name_2: + DataType: "String" + StringValue: "my_attribute_value_2" + next: end + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`"us-east-2"` | +
| **queueUrl** | +Required | +String | +"`https://sqs.us-east-2.amazonaws.com/123456789012/my-queue`" | +
| **maxNumberOfMessages** | +Optional | +Int | +`10` | +
| **waitTimeSeconds** | +Optional | +Int | +`5` | +
| **VisibilityTimeout** | +Optional | +Int | +`123` | +
| **AttributeNames** | +Optional | +List | ++ ```yaml + [ + 'All'|'Policy'|'VisibilityTimeout'|'MaximumMessageSize'|'MessageRetentionPeriod'|'ApproximateNumberOfMessages'|'ApproximateNumberOfMessagesNotVisible'|'CreatedTimestamp'|'LastModifiedTimestamp'|'QueueArn'|'ApproximateNumberOfMessagesDelayed'|'DelaySeconds'|'ReceiveMessageWaitTimeSeconds'|'RedrivePolicy'|'FifoQueue'|'ContentBasedDeduplication'|'KmsMasterKeyId'|'KmsDataKeyReusePeriodSeconds'|'DeduplicationScope'|'FifoThroughputLimit'|'RedriveAllowPolicy'|'SqsManagedSseEnabled', + ] + ``` + | +
| **messageAttributeNames** | +Optional | +List | ++ ```yaml + [ + 'message_attribute_name', + ], + ``` + | +
| **messageSystemAttributeNames** | +Optional | +List | +`['SenderId', 'SentTimestamp']` | +
| **receiveRequestAttemptId** | +Optional | +String | +`“req-1234abcd”` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **response** | +object | +
+ `{"response": ` + + Response syntax can be referred to receive_message - Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sqs/client/receive_message.html) + + |
+
| **success** | +Boolean | +`success: true | false` | +
| **errorMessage** | +String | +`"errorMessage": "SQS.Client.exceptions.QueueDoesNotExist: "The specified queue does not exist.""` | +
| Workflow example | +
|---|
| +```yaml + name: sqs-receive-message-test + description: 'Receives a message from an SQS queue' + steps: + - name: aws_sqs_receiveMessage_1 + type: action + action: aws.sqs.receiveMessage + version: '1' + inputs: + awsRoleArn: ${{ :secrets:awsRoleArn }} + region: us-east-1 + queueUrl: https://sqs.us-east-1.amazonaws.com/123456789012/workflow-test-queue + waitTimeSeconds: 5 + maxNumberOfMessages: 10 + messageAttributeNames: ['message_attribute_name'], +``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **documentName** | +Required | +String | +`documentName: "my-ssm-document"` | +
| **documentType** | +Optional | +String | +
+ `documentType: "Command"`
+ Check valid values from [here](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DocumentDescription.html#systemsmanager-Type-DocumentDescription-Status:text=Required%3A%20No-,Status,-The%20status%20of). + |
+
| **documentFormat** | +Optional | +String | +
+ `documentFormat: "YAML"`
+ Check valid values from [here](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DocumentDescription.html#systemsmanager-Type-DocumentDescription-Status:text=Required%3A%20No-,Status,-The%20status%20of). + |
+
| **documentContent** | +Required | +String | +Check example | +
| **override** | +Optional | +Boolean | +
+ `override: true (default)`.
+
+ When `true`, always write the document with the provided name even if one already exist. + +When `false`, if a document with the provided `documentName` already exist, the action returns `success: false` and `errorMessage: Document already exists. Please enable override if you want to update the existing document.` + |
+
| **selectors** | +Optional | +list | +`[{\"name\": \"documentName\", \"expression\": \".documentName\"}, {\"name\": \"documentType\", \"expression\": \".documentType\"}, {\"name\": \"documentStatus\", \"expression\": \".documentStatus\"}, {\"name\": \"success\", \"expression\": \".success\"}]` | +
| Output Field | +Type | +Description and example | +
|---|---|---|
| **documentName** | +String | +`documentName: "my-ssm-document"` | +
| **documentVersion** | +String | +`documentVersion: 1` | +
| **documentType** | +String | +`documentType: "Command"` | +
| **documentStatus** | +String | +
+ `documentStatus: "Active"`
+
+ The value will be one of the statuses from [here](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DocumentDescription.html#systemsmanager-Type-DocumentDescription-Status:text=Required%3A%20No-,Status,-The%20status%20of). + |
+
| **success** | +Boolean | +`success: true` | +
| **errorMessage** | +String | +`errorMessage: "Some error message from ssm"` | +
+ | Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Required | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Required | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **documentName** | +Required | +String | +`documentName: "my-ssm-document"` | +
| **selectors** | +Optional | +List | +`[{\"name\": \"success\", \"expression\": \".success\"}, {\"name\": \"documentName\", \"expression\": \".documentName\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **documentName** | +String | +`documentName: "my-ssm-document"` | +
| **success** | +Boolean | +`success: true` | +
| **errorMessage** | +String | +`errorMessage: "Some error message from ssm"` | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **documentName** | +Required | +String | +`documentName: "my-ssm-document"` | +
| **parameters** | +Optional | +Map | +`parameters: myKey: myValue` | +
| **idempotencyToken** | +Optional | +UUID | +
+ `idempotencyToken: "any token"`
+ This will be passed as client token for idempotency to start aws ssm automation. + |
+
| **selectors** | +Optional | +List | +`[{\"name\": \"automationExecutionId\", \"expression\": \".automationExecutionId\"}, {\"name\": \"success\", \"expression\": \".success\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **automationExecutionId** | +String | +`automationExecutionId: "3143a28d-241c-4abd-a3ca-9c0ff3890241"` | +
| **success** | +Boolean | +`success: true` | +
| **errorMessage** | +String | +`errorMessage: "Some error message from ssm"` | +
| Workflow definition | +Inputs | +Outputs | +
|---|---|---|
| + ```yaml + schemaVersion: '0.3' + description: List all Lambda function names. + mainSteps: + - name: ExecuteAwsApi + action: aws:executeAwsApi + isEnd: true + ``` + | ++ ```yaml + Service: lambda + Api: ListFunctions + ``` + | ++ ```yaml + - Name: resultFunctionName + Selector: $..FunctionName + Type: StringList + outputs: + - ExecuteAwsApi.resultFunctionName + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **awsRoleArn** | +Optional | +String | +`arn:aws:iam::123456789012:role/my-workflow-role` | +
| **awsAccessKeyId** | +Optional | +String | +`${{ :secrets: |
+
| **awsSecretAccessKey** | +Optional | +String | +`${{ :secrets: |
+
| **awsSessionToken** | +Optional | +String | +`${{ :secrets: |
+
| **region** | +Required | +String | +`region: "us-east-2"` | +
| **automationExecutionId** | +Required | +String | +`automationExecutionId: "3143a28d-241c-4abd-a3ca-9c0ff3890241"`. The automation `executionId` for which we need to wait for its completion. | +
| **automationExecutionStatuses** | +Optional | +List | +
+ `automationExecutionStatuses: ["status1", "status2"]`
+ List of automation execution statuses from [AutomationExecution](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_AutomationExecution.html#AutomationExecutionStatus) that can stop the waiting. `Default: ["Success", "Failed"]` + |
+
| **timeout** | +Optional | +int | +
+ `timeout: 180`(default), maximum 600.
+
+ The duration in seconds we can wait for automation status to be one of the expected `automationExecutionStatuses`. + +If timeout occurred, the output contains `success: false` and `errorMessag: Timeout waiting for automation status`. + |
+
| **selectors** | +Optional | +List | +`[{\"name\": \"automationExecutionStatus\", \"expression\": \".automationExecutionStatus\"}, {\"name\": \"scriptOutput\", \"expression\": \".automationExecutionOutputs.pythonStep.scriptOutput | tojson\"}]`. | +
| Output Field | +Type | +Example | +
|---|---|---|
| **automationExecutionId** | +String | +`automationExecutionId: "3143a28d-241c-4abd-a3ca-9c0ff3890241"` | +
| **automationExecutionStatus** | +String | +
+ `automationExecutionStatus: "Success"`
+
+ If action is successful, It will either of the values passed in `automationExecutionStatuses` input field. + +Else, this will be null. + |
+
| **automationExecutionOutputs** | +Map | +
+ ```yaml
+ "automationExecutionOutputs": {
+ "ExecuteGetApiResources": {
+ "resultResourceId": [
+ "pky3cb"
+ ]
+ },
+ "ExecuteListVersionsByFunction": {
+ "resultLambdaVersionArn": [
+ "arn:aws:lambda:us-east-2:661945836867:function:ApiGwTestFn:1"
+ ]
+ }
+ }
+ ```
+ + The output will be a map of output values from the document. Any output in the document can be collected using this output field and can be used in subsequent steps of the workflow automation definition. + + |
+
| **success** | +Boolean | +`success: true` | +
| **errorMessage** | +String | +`errorMessage: "Some error message from ssm"` | +
| Workflow definition | +Inputs | +Outputs | +
|---|---|---|
| + ```yaml + schemaVersion: '0.3' + description: List all Lambda function names. + mainSteps: + - name: ExecuteAwsApi + action: aws:executeAwsApi + isEnd: true + ``` + | ++ ```yaml + Service: lambda + Api: ListFunctions + ``` + | ++ ```yaml + - Name: resultFunctionName + Selector: $..FunctionName + Type: StringList + outputs: + - ExecuteAwsApi.resultFunctionName + ``` + | +
| Input Field | -Optionality | -Type | -Description | -
|---|---|---|---|
| **url** | -Required | -String | -The target URL for the request. The scheme must be included: `https://example.com` | -
| **urlParams** | -Optional | -Map | -The query parameters to append to the URL. Takes a stringified JSON object. | -
| **headers** | -Optional | -Map | -The headers to add to the request. Takes a stringified JSON object. | -
| **selectors** | -Optional | -List | -The selectors to get only the specified parameters as output. | -
| Output Field | -Type | -Description | -
|---|---|---|
| **responseBody** | -String | -The body of the response. | -
| **statusCode** | -Integer | -The HTTP status code of the response. | -
| Workflow example | -
|---|
| - ```yaml - name: httpGetTest - description: 'Performs an HTTP GET request to retrieve data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - steps: - - name: query - type: action - action: http.get - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - next: end - ``` - - **Example inputs:** - ```json - { - "url": "https://example.com", - "urlParams": "{\"foo\": \"bar\"}", - "headers": "{\"baz\": \"bat\"}" - } - ``` - - **Example outputs:** - ```json - { - "responseBody": "\n...\n", - "statusCode": 200 - } - ``` - | -
| Input Field | -Optionality | -Type | -Description | -
|---|---|---|---|
| **url** | -Required | -String | -The target URL for the request. The scheme must be included: `https://example.com` | -
| **urlParams** | -Optional | -Map | -The query parameters to append to the URL. Takes a stringified JSON object. | -
| **headers** | -Optional | -Map | -The headers to add to the request. Takes a stringified JSON object. | -
| **body** | -Optional | -String | -The request body. | -
| **selectors** | -Optional | -List | -The selectors to get only the specified parameters as output. | -
| Output Field | -Type | -Description | -
|---|---|---|
| **responseBody** | -String | -The body of the response. | -
| **statusCode** | -Integer | -The HTTP status code of the response. | -
| Workflow example | -
|---|
| - ```yaml - name: httpPostTest - description: 'Performs an HTTP POST request to send data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - body: - type: String - steps: - - name: query - type: action - action: http.post - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - body: ${{ .workflowInputs.body }} - next: end - ``` - - **Example inputs:** - ```json - { - "url": "https://example.com", - "headers": "{\"Content-Type\":\"application/json\"}", - "urlParams": "{\"foo\": \"bar\"}", - "body": "{\"foo\": \"bar\"}" - } - ``` - - **Example outputs:** - ```json - { - "responseBody": "", - "statusCode": 200 - } - ``` - | -
| Input Field | -Optionality | -Type | -Description | -
|---|---|---|---|
| **url** | -Required | -String | -The target URL for the request. The URL must include the scheme (for example, https:// or http://). Example: `https://example.com` | -
| **urlParams** | -Optional | -Map | -The query parameters to append to the URL. Takes a stringified JSON object. | -
| **headers** | -Optional | -Map | -The headers to add to the request. Takes a stringified JSON object. | -
| **body** | -Optional | -String | -The request body. | -
| **selectors** | -Optional | -List | -The selectors to get only the specified parameters as output. | -
| Output Field | -Type | -Description | -
|---|---|---|
| **responseBody** | -String | -The body of the response. | -
| **statusCode** | -Integer | -The HTTP status code of the response. | -
| Workflow example | -
|---|
| - ```yaml - name: httpPutTest - description: 'Performs an HTTP PUT request to update data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - body: - type: String - selectors: - type: String - steps: - - name: query - type: action - action: http.put - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - body: ${{ .workflowInputs.body }} - selectors: ${{ .workflowInputs.selectors }} - next: end - ``` - - **Example inputs:** - ```json - { - "url": "https://example.com", - "headers": "{\"Content-Type\":\"application/json\"}", - "urlParams": "{\"foo\": \"bar\"}", - "body": "{\"foo\": \"bar\"}", - "selectors": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" - } - ``` - - **Example outputs:** - ```json - { - "responseBody": "", - "statusCode": 200 - } - ``` - | -
| Input Field | -Optionality | -Type | -Description | -
|---|---|---|---|
| **url** | -Required | -String | -The target URL for the request. The URL must include the scheme (for example, https:// or http://). Example: `https://example.com` | -
| **urlParams** | -Optional | -Map | -The query parameters to append to the URL. Takes a stringified JSON object. | -
| **headers** | -Optional | -Map | -The headers to add to the request. Takes a stringified JSON object. | -
| **selectors** | -Optional | -List | -The selectors to get only the specified parameters as output. | -
| Output Field | -Type | -Description | -
|---|---|---|
| **responseBody** | -String | -The body of the response. | -
| **statusCode** | -Integer | -The HTTP status code of the response. | -
| Workflow example | -
|---|
| - ```yaml - name: httpDeleteTest - description: 'Performs an HTTP DELETE request to remove data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - selectors: - type: String - steps: - - name: query - type: action - action: http.delete - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - selectors: ${{ .workflowInputs.selectors }} - next: end - ``` - - **Example inputs:** - ```json - { - "url": "https://example.com", - "urlParams": "{\"foo\": \"bar\"}", - "headers": "{\"baz\": \"bat\"}", - "selectors": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" - } - ``` - - **Example outputs:** - ```json - { - "responseBody": "\n...\n", - "statusCode": 200 - } - ``` - | -
| Input Field | +Optionality | +Type | +Description | +
|---|---|---|---|
| **url** | +Required | +String | +The target URL for the request. The URL must include the scheme (for example, https:// or http://). Example: `https://example.com` | +
| **urlParams** | +Optional | +Map | +The query parameters to append to the URL. Takes a stringified JSON object. | +
| **headers** | +Optional | +Map | +The headers to add to the request. Takes a stringified JSON object. | +
| **selectors** | +Optional | +List | +The selectors to get only the specified parameters as output. | +
| Output Field | +Type | +Description | +
|---|---|---|
| **responseBody** | +String | +The body of the response. | +
| **statusCode** | +Integer | +The HTTP status code of the response. | +
| **success** | +Boolean | +Status of the request. | +
| **errorMessage** | +String | +Failure reason as message. | +
| Workflow definition | +Input | +Output | +
|---|---|---|
| + ```yaml + name: httpDeleteTest + steps: + - name: query + type: action + action: http.delete + version: 1 + inputs: + url: ${{ .workflowInputs.url }} + urlParams: ${{ .workflowInputs.urlParams }} + headers: ${{ .workflowInputs.headers }} + selectors: ${{ .workflowInputs.selectors }} + ``` + | ++ ```yaml + { + "inputs": [ + { + "key": "url", + "value": "https://example.com" + }, + { + "key": "urlParams", + "value": "{\"foo\": \"bar\"}" + }, + { + "key": "headers", + "value": "{\"baz\": \"bat\"}" + }, + { + "key": "selectors", + "value": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" + } + ] + } + ``` + | ++ ```yaml + Success case: + { + "success": true + "responseBody": "\n...\n", + "statusCode": 200 + } + + Failure case: + { + "errorMessage": "An unexpected error failed to call http delete endpoint.", + "success": false + } + ``` + | +
| Input Field | +Optionality | +Type | +Description | +
|---|---|---|---|
| **url** | +Required | +String | +The target URL for the request. The scheme must be included: `https://example.com` | +
| **urlParams** | +Optional | +Map | +The query parameters to append to the URL. Takes a stringified JSON object. | +
| **headers** | +Optional | +Map | +The headers to add to the request. Takes a stringified JSON object. | +
| **selectors** | +Optional | +List | +The selectors to get only the specified parameters as output. | +
| Output Field | +Type | +Description | +
|---|---|---|
| **responseBody** | +String | +The body of the response. | +
| **statusCode** | +Integer | +The HTTP status code of the response. | +
| **success** | +Boolean | +Status of the request. | +
| **errorMessage** | +String | +Failure reason as message. | +
| Workflow definition | +Input | +Output | +
|---|---|---|
| + ```yaml + name: httpGetTest + steps: + - name: query + type: action + action: http.get + version: 1 + inputs: + url: ${{ .workflowInputs.url }} + urlParams: ${{ .workflowInputs.urlParams }} + headers: ${{ .workflowInputs.headers }} + selectors: ${{ .workflowInputs.selectors }} + ``` + | ++ ```yaml + { + "inputs": [ + { + "key": "url", + "value": "https://example.com" + }, + { + "key": "urlParams", + "value": "{\"foo\": \"bar\"}" + }, + { + "key": "headers", + "value": "{\"baz\": \"bat\"}" + }, + { + "key": "selectors", + "value": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" + } + ] + } + ``` + | ++ ```yaml + Success case: + { + "responseBody": "\n...\n", + "statusCode": 200 + "success": true + } + + Failure case: + { + "errorMessage": "An unexpected error failed to call http get endpoint.", + "success": false + } + ``` + | +
| Input Field | +Optionality | +Type | +Description | +
|---|---|---|---|
| **url** | +Required | +String | +The target URL for the request. The scheme must be included: `https://example.com` | +
| **urlParams** | +Optional | +Map | +The query parameters to append to the URL. Takes a stringified JSON object. | +
| **headers** | +Optional | +Map | +The headers to add to the request. Takes a stringified JSON object. | +
| **body** | +Optional | +String | +The request body. | +
| **selectors** | +Optional | +List | +The selectors to get only the specified parameters as output. | +
| Output Field | +Type | +Description | +
|---|---|---|
| **responseBody** | +String | +The body of the response. | +
| **statusCode** | +Integer | +The HTTP status code of the response. | +
| **success** | +Boolean | +Status of the request. | +
| **errorMessage** | +String | +Failure reason as message. | +
| Workflow definition | +Input | +Output | +
|---|---|---|
| + ```yaml + name: httpPostTest + + steps: + - name: query + type: action + action: http.post + version: 1 + inputs: + url: ${{ .workflowInputs.url }} + urlParams: ${{ .workflowInputs.urlParams }} + headers: ${{ .workflowInputs.headers }} + body: ${{ .workflowInputs.body }} + selectors: ${{ .workflowInputs.selectors }} + ``` + | ++ ```yaml + { + "inputs": [ + { + "key": "url", + "value": "https://example.com" + }, + { + "key": "headers", + "value": "{\"Content-Type\":\"application/json\"}" + }, + { + "key": "urlParams", + "value": "{\"foo\": \"bar\"}" + }, + { + "key": "body", + "value": "{\"foo\": \"bar\"}" + }, + { + "key": "selectors", + "value": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" + } + ] + } + ``` + | ++ ```yaml + Success case: + { + "success": true + "responseBody": "", + "statusCode": 200 + } + + Failure case: + { + "errorMessage": "An unexpected error failed to call http post endpoint.", + "success": false + } + ``` + | +
| Input Field | +Optionality | +Type | +Description | +
|---|---|---|---|
| **url** | +Required | +String | +The target URL for the request. The URL must include the scheme (for example, https:// or http://). Example: `https://example.com` | +
| **urlParams** | +Optional | +Map | +The query parameters to append to the URL. Takes a stringified JSON object. | +
| **headers** | +Optional | +Map | +The headers to add to the request. Takes a stringified JSON object. | +
| **body** | +Optional | +String | +The request body. | +
| **selectors** | +Optional | +List | +The selectors to get only the specified parameters as output. | +
| Output Field | +Type | +Description | +
|---|---|---|
| **responseBody** | +String | +The body of the response. | +
| **statusCode** | +Integer | +The HTTP status code of the response. | +
| **success** | +Boolean | +Status of the request. | +
| **errorMessage** | +String | +Failure reason as message. | +
| Workflow definition | +Inputs | +Outputs | +
|---|---|---|
| + ```yaml + name: httpPutTest + + steps: + - name: query + type: action + action: http.put + version: 1 + inputs: + url: ${{ .workflowInputs.url }} + urlParams: ${{ .workflowInputs.urlParams }} + headers: ${{ .workflowInputs.headers }} + body: ${{ .workflowInputs.body }} + selectors: ${{ .workflowInputs.selectors }} + ``` + | ++ ```yaml + { + "inputs": [ + { + "key": "url", + "value": "https://example.com" + }, + { + "key": "headers", + "value": "{\"Content-Type\":\"application/json\"}" + }, + { + "key": "urlParams", + "value": "{\"foo\": \"bar\"}" + }, + { + "key": "body", + "value": "{\"foo\": \"bar\"}" + }, + { + "key": "selectors", + "value": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" + } + ] + } + ``` + | ++ ```yaml + Success case: + { + "responseBody": "", + "statusCode": 200 + "success": true + } + + Failure case: + { + "errorMessage": "An unexpected error failed to call http post endpoint.", + "success": false + } + ``` + | +
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **attributes** | -Optional | -Map | -`"{\"page\": \"1\", \"limit\": \"10\"}"` | -
| **events** | -Required | -list | -`"[{\"eventType\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"eventType\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]` | -
| **licenseKey** | -Optional | -string | -`"{{ .secrets.secretName }}"` | -
| **selectors** | -Optional | -list | -`[{\"name\": \"success\", \"expression\": \".success\"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **success** | -Boolean | -`true` | -
| **errorMessage** | -string | -`"Error message if operation failed"` | -
| Workflow example | -
|---|
| - ```yaml - name: heartbeat_newrelicIngestSendEvents - - workflowInputs: - cellName: - type: String - - steps: - - name: runAction - type: action - action: newrelic.ingest.sendEvents - version: 1 - inputs: - attributes: - colour: red - id: 1234 - events: - - eventType: HeartBeat - test: "OK" - attributes: - foo: bar - - eventType: HeartBeat1234 - test: "OK1234" - attributes: - foo: bar - - eventType: HeartBeat12345 - test: "OK12345" - attributes: - foo: bar - colour: yellow - - eventType: HeartBeat12345678 - test: "OK12345678" - selectors: - - name: success - expression: ".success" - ``` - - **Expected output:** - ```yaml - { - "success": true - } - ``` - - **Retrieve events:** - - After successfully executing a workflow, you can retrieve the associated event by running a query under the account that executed the workflow: - ```sql - SELECT * FROM HeartBeat - ``` - | -
| Input Field | -Optionality | -Type | -Example | -
|---|---|---|---|
| **attributes** | -Optional | -map | -`"{\"page\": \"1\", \"limit\": \"10\"}"` | -
| **logs** | -Required | -list | -`"[{\"message\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"message\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]"` | -
| **licenseKey** | -Optional | -string | -`"{{ .secrets.secretName }}"` | -
| **selectors** | -Optional | -list | -`[{\"name\": \"success\", \"expression\": \".success\"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **success** | -Boolean | -`true` | -
| **errorMessage** | -string | -`"Error message if operation failed"` | -
| Workflow example | -
|---|
| - ```yaml - name: heartbeat_newrelicIngestSendLogs - - workflowInputs: - cellName: - type: String - - steps: - - name: runAction - type: action - action: newrelic.ingest.sendLogs - version: 1 - inputs: - attributes: - colour: red - id: 1234 - logs: - - message: 'Heartbeat sendLogs Action Test Message' - attributes: - foo: bar - - message: 'HeartBeat1234' - attributes: - foo: bar - - message: 'HeartBeat12345' - attributes: - foo: bar - colour: yellow - - message: 'HeartBeat12345678' - selectors: - - name: success - expression: ".success" - ``` - - **Expected output:** - ```yaml - { - "success": true - } - ``` - - **Retrieve logs:** - - After successfully executing a workflow, you can retrieve the associated log by running a query under the account that executed the workflow: - ```sql - SELECT * FROM Log - ``` - | -
| Input | -Optionality | -Type | -Description | -Example | -
|---|---|---|---|---|
| **graphql** | -Required | -string | -A GraphQL syntax. You should use GraphiQL to build and test your command | -- |
| **variables** | -Required | -map[string]any | -Any key/value pair variables to use with the GraphQL statement. | -- |
| **selectors** | -Optional | -List | -The selectors to get the only specified parameters as output. | -- ```yaml - steps: - - name: findingVar - type: action - action: newrelic.nerdgraph.execute - version: 1 - inputs: - graphql: | - query GetEntity($entityGuid: EntityGuid!) { - actor { - entity(guid: $entityGuid) { - alertSeverity - } - } - } - variables: - entityGuid: ${{ .workflowInputs.entityGuid }} - - name: findingInline - type: action - action: newrelic.nerdgraph.execute - version: 1 - inputs: - graphql: | - { - actor { - entity(guid: "${{ .workflowInputs.entityGuid }}") { - alertSeverity - } - } - } - selectors: - - name: entities - expression: '.data' - ``` - | -
| Output | -Type | -Description | -
|---|---|---|
| **data** | -map[string]any | -Contents of the `data` property of a NerdGraph response. | -
| **success** | -Boolean | -Status of the request.s | -
| **errorMessage** | -String | -Failure reason as message. | -
| Example | -
|---|
| - ```yaml - steps: - - name: currentUserId - type: action - action: newrelic.nerdgraph.execute - version: 1 - inputs: - graphql: | - query userId { - currentUser { - id - } - } - - name: sayHello - type: action - action: example.messaging.sayHello - version: 1 - inputs: - name: ${{ .steps.currentUserId.outputs.data.currentUser.id }} - ``` - | -
| Input | -Optionality | -Type | -Description | -Example | -
|---|---|---|---|---|
| **query** | -Required | -string | -The NRQL query statement. | -- |
| **accountIds** | -Optional | -list of int | -The **New Relic Account ID** input is a list of target IDs that allows you to specify the target accounts where the query is executed against. If this value is not provided as an input, the query will automatically be executed against the account associated with the workflow's execution account. | -- |
| **selectors** | -Optional | -list | -The selectors to get the only specified parameters as output. | -- ```json - steps: - - name: queryForLog - type: action - action: newrelic.nrdb.query - version: 1 - inputs: - accountIds: [12345] - query: FROM Log SELECT * WHERE message LIKE 'DEMO%' - selectors: - - name: resultsAsString - expression: '.results | tostring' - ``` - | -
| Output | -Type | -Example | -
|---|---|---|
| **results**: An array of objects containing the results of the query. | -- | - ```yaml - { - results=[ - { message=[INFO] - Workflow: test has ended, messageId=39af98 }, - { message=[INFO] - Workflow: test - Step query has started, messageId=649c612 }, - ... - ] - } - ``` - | -
| Input | -Optionality | -Type | -Description | -Example | -
|---|---|---|---|---|
| **type** | -Required | -string | -Type of newrelic destination | -`slack` | -
| **destinationId** | -Required | -String | -DestinationId associated with the newrelic destination. | -`123e4567-e89b-12d3-a456-426614174000` | -
| **parameters** | -Required | -map | -Fields required to send notification to chosen destination type. | -`{\"channel\": \"${{ YOUR_CHANNEL }}\", \"text\": \"Enter your text here\"}` | -
| **selectors** | -Optional | -list | -The selectors to get the only specified parameters as output. | -`[{\"name\": \"success\", \"expression\": \".success\"}]` | -
| Output | -Type | -Example | -
|---|---|---|
| success | -boolean | -`true/false` | -
| Input Field | -Optionality | -Datatype | -Description | -Example | -
|---|---|---|---|---|
| **destinationId** | -Required | -String | -
- DestinationId associated with the newrelic destination.
- - Refer [New Relic integration for Microsoft Teams](/docs/alerts/get-notified/microsoft-teams-integrations/) for steps on how to configure a new destination and listing destination Id. - -- Refer [Destinations](/docs/alerts/get-notified/destinations/) to know more about destinations. - - - |
- `123e4567-e89b-12d3-a456-426614174000` | -
| **teamName** | -Required | -String | -Team name associated with given destination id | -`TEST_TEAM` | -
| **channelName** | -Required | -String | -Channel name where message need to be sent | -`StagingTesting` | -
| **message** | -Required | -String | -Text message which need to be sent | -`Hello! this message from Workflow` | -
| **selectors** | -Optional | -List | -The selectors to get the only specified parameters as output. | -`[{\"name\": \"success\", \"expression\": \".success\"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **success** | -Boolean | -`true/false` | -
| **sessionId** | -String | -`"sessionId": "7fa97f26-3791-492e-a39b-53793163dfb9"` | -
| **errorMessage** | -String | -`Message is a required field in the notification send"` | -
| Workflow example | -
|---|
| - ```yaml - name: msTeam_notification_workflow - description: This is a test workflow to test MSTeam notification send action - steps: - - name: SendMessageUsingMSTeam - type: action - action: newrelic.notification.sendMicrosoftTeams - version: 1 - inputs: - destinationId: acc24dc2-d4fc-4eba-a7b4-b3ad0170f8aa - channel: DEV_TESTING - teamName: TEST_TEAM_DEV - message: Hello from Workflow - ``` - | -
| Input Field | -Optionality | -Datatype | -Description | -Example | -
|---|---|---|---|---|
| **destinationId** | -Required | -String | -
- DestinationId associated with the newrelic destination.
- - Refer [New Relic integration for Microsoft Teams](/docs/alerts/get-notified/microsoft-teams-integrations/) for steps on how to configure a new destination and listing destination Id. - -- Refer [Destinations](/docs/alerts/get-notified/destinations/) to know more about destinations. - - - |
- `123e4567-e89b-12d3-a456-426614174000` | -
| **subject** | -Required | -String | -Subject of email | -`workflow-notification` | -
| **message** | -Required | -String | -Message which need to be send in email | -`Hello! from Workflow Automation` | -
| **attachments** | -Optional | -List | -A list of optional attachment | -- |
| **attachment.type** | -Required | -Enum | -One of: `QUERY`, `RAW` | -- |
| **attachment.query** | -Optional | -String | -For `QUERY` type, this is NRQL query statement. | -`SELECT * FROM LOG` | -
| **attachment.accountIds** | -Optional | -List | -For `QUERY`, the **New Relic Account IDs** to execute the query. If not provided, the account associated with the workflow's execution is used. | -`[12345567]` | -
| **attachment.format** | -Optional | -Enum | -For `QUERY`, specify the type for the results, default `JSON` | -`JSON CSV` | -
| **attachment.content** | -Optional | -String | -For `RAW`, this is the content to for the attachment in UTF-8. | -`A,B,C\n1,2,3` | -
| **attachment.filename** | -Optional | -String | -A filename for the attachment | -`log_count.csv` | -
| **selectors** | -Optional | -List | -The selectors to get the only specified parameters as output. | -`[{\"name\": \"success\", \"expression\": \".success\"},{\"name\": \"attachments\", \"expression\": \".response.attachments\"},{\"name\": \"sessionId\", \"expression\": \".response.sessionId\"}]` | -
| Output Field | -Type | -Example | -
|---|---|---|
| **success** | -Boolean | -`true/false` | -
| **sessionId** | -String | -`"sessionId": "7fa97f26-3791-492e-a39b-53793163dfb9"` | -
| **errorMessage** | -String | -`Channel is a required field in the notification send"` | -
| **attachments** | -List | -- ```yaml - [{ - "blobId": "43werdtfgvhiu7y8t6r5e4398yutfgvh", - "rowCount": 100 - }] - ``` - | -
| Workflow example | -
|---|
| - ```yaml - name: email_testing_with_attachment - description: Workflow to test sending an email notification via NewRelic with log step - workflowInputs: - destinationId: - type: String - steps: - - name: sendEmailNotification - type: action - action: newrelic.notification.sendEmail - version: '1' - inputs: - destinationId: ${{ .workflowInputs.destinationId }} - subject: "workflow notification" - message: "Workflow Email Notification Testing from local" - attachments: - - type: QUERY - query: "SELECT * FROM Log" - format: JSON - filename: "log_count.json" - selectors: - - name: success - expression: '.success' - - name: sessionId - expression: '.response.sessionId' - - name: attachments - expression: '.response.attachments' - - name: logOutput - type: action - action: newrelic.ingest.sendLogs - version: '1' - inputs: - logs: - - message: "Hello from cap check Testing staging server user2 : ${{ .steps.sendEmailNotification.outputs.result.attachments }}" - licenseKey: ${{ :secrets:STAGING_NEW_RELIC_LICENSE_KEY }} - ``` - | -
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **attributes** | +Optional | +Map | +`"{\"page\": \"1\", \"limit\": \"10\"}"` | +
| **events** | +Required | +list | +`"[{\"eventType\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"eventType\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]` | +
| **licenseKey** | +Optional | +string | +`"{{ .secrets.secretName }}"` | +
| **selectors** | +Optional | +list | +`[{\"name\": \"success\", \"expression\": \".success\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **success** | +Boolean | +`true` | +
| **errorMessage** | +string | +`"Error message if operation failed"` | +
| Workflow example | +
|---|
| + ```yaml + name: heartbeat_newrelicIngestSendEvents + + workflowInputs: + cellName: + type: String + + steps: + - name: runAction + type: action + action: newrelic.ingest.sendEvents + version: 1 + inputs: + attributes: + colour: red + id: 1234 + events: + - eventType: HeartBeat + test: "OK" + attributes: + foo: bar + - eventType: HeartBeat1234 + test: "OK1234" + attributes: + foo: bar + - eventType: HeartBeat12345 + test: "OK12345" + attributes: + foo: bar + colour: yellow + - eventType: HeartBeat12345678 + test: "OK12345678" + selectors: + - name: success + expression: ".success" + ``` + + **Expected output:** + ```yaml + { + "success": true + } + ``` + + **Retrieve events:** + + After successfully executing a workflow, you can retrieve the associated event by running a query under the account that executed the workflow: + ```sql + SELECT * FROM HeartBeat + ``` + | +
| Input Field | +Optionality | +Type | +Example | +
|---|---|---|---|
| **attributes** | +Optional | +map | +`"{\"page\": \"1\", \"limit\": \"10\"}"` | +
| **logs** | +Required | +list | +`"[{\"message\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"message\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]"` | +
| **licenseKey** | +Optional | +string | +`"{{ .secrets.secretName }}"` | +
| **selectors** | +Optional | +list | +`[{\"name\": \"success\", \"expression\": \".success\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **success** | +Boolean | +`true` | +
| **errorMessage** | +string | +`"Error message if operation failed"` | +
| Workflow example | +
|---|
| + ```yaml + name: heartbeat_newrelicIngestSendLogs + + workflowInputs: + cellName: + type: String + + steps: + - name: runAction + type: action + action: newrelic.ingest.sendLogs + version: 1 + inputs: + attributes: + colour: red + id: 1234 + logs: + - message: 'Heartbeat sendLogs Action Test Message' + attributes: + foo: bar + - message: 'HeartBeat1234' + attributes: + foo: bar + - message: 'HeartBeat12345' + attributes: + foo: bar + colour: yellow + - message: 'HeartBeat12345678' + selectors: + - name: success + expression: ".success" + ``` + + **Expected output:** + ```yaml + { + "success": true + } + ``` + + **Retrieve logs:** + + After successfully executing a workflow, you can retrieve the associated log by running a query under the account that executed the workflow: + ```sql + SELECT * FROM Log + ``` + | +
| Input | +Optionality | +Type | +Description | +Example | +
|---|---|---|---|---|
| **graphql** | +Required | +string | +A GraphQL syntax. You should use GraphiQL to build and test your command | ++ |
| **variables** | +Required | +map[string]any | +Any key/value pair variables to use with the GraphQL statement. | ++ |
| **selectors** | +Optional | +List | +The selectors to get the only specified parameters as output. | ++ ```yaml + steps: + - name: findingVar + type: action + action: newrelic.nerdgraph.execute + version: 1 + inputs: + graphql: | + query GetEntity($entityGuid: EntityGuid!) { + actor { + entity(guid: $entityGuid) { + alertSeverity + } + } + } + variables: + entityGuid: ${{ .workflowInputs.entityGuid }} + - name: findingInline + type: action + action: newrelic.nerdgraph.execute + version: 1 + inputs: + graphql: | + { + actor { + entity(guid: "${{ .workflowInputs.entityGuid }}") { + alertSeverity + } + } + } + selectors: + - name: entities + expression: '.data' + ``` + | +
| Output | +Type | +Description | +
|---|---|---|
| **data** | +map[string]any | +Contents of the `data` property of a NerdGraph response. | +
| **success** | +Boolean | +Status of the request.s | +
| **errorMessage** | +String | +Failure reason as message. | +
| Example | +
|---|
| + ```yaml + steps: + - name: currentUserId + type: action + action: newrelic.nerdgraph.execute + version: 1 + inputs: + graphql: | + query userId { + currentUser { + id + } + } + - name: sayHello + type: action + action: example.messaging.sayHello + version: 1 + inputs: + name: ${{ .steps.currentUserId.outputs.data.currentUser.id }} + ``` + | +
| Input | +Optionality | +Type | +Description | +Example | +
|---|---|---|---|---|
| **type** | +Required | +string | +Type of newrelic destination | +`slack` | +
| **destinationId** | +Required | +String | +DestinationId associated with the newrelic destination. | +`123e4567-e89b-12d3-a456-426614174000` | +
| **parameters** | +Required | +map | +Fields required to send notification to chosen destination type. | +`{\"channel\": \"${{ YOUR_CHANNEL }}\", \"text\": \"Enter your text here\"}` | +
| **selectors** | +Optional | +list | +The selectors to get the only specified parameters as output. | +`[{\"name\": \"success\", \"expression\": \".success\"}]` | +
| Output | +Type | +Example | +
|---|---|---|
| success | +boolean | +`true/false` | +
| Input Field | +Optionality | +Datatype | +Description | +Example | +
|---|---|---|---|---|
| **destinationId** | +Required | +String | +
+ DestinationId associated with the newrelic destination.
+ + Refer [New Relic integration for Microsoft Teams](/docs/alerts/get-notified/microsoft-teams-integrations/) for steps on how to configure a new destination and listing destination Id. + ++ Refer [Destinations](/docs/alerts/get-notified/destinations/) to know more about destinations. + + + |
+ `123e4567-e89b-12d3-a456-426614174000` | +
| **teamName** | +Required | +String | +Team name associated with given destination id | +`TEST_TEAM` | +
| **channelName** | +Required | +String | +Channel name where message need to be sent | +`StagingTesting` | +
| **message** | +Required | +String | +Text message which need to be sent | +`Hello! this message from Workflow` | +
| **selectors** | +Optional | +List | +The selectors to get the only specified parameters as output. | +`[{\"name\": \"success\", \"expression\": \".success\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **success** | +Boolean | +`true/false` | +
| **sessionId** | +String | +`"sessionId": "7fa97f26-3791-492e-a39b-53793163dfb9"` | +
| **errorMessage** | +String | +`Message is a required field in the notification send"` | +
| Workflow example | +
|---|
| + ```yaml + name: msTeam_notification_workflow + description: This is a test workflow to test MSTeam notification send action + steps: + - name: SendMessageUsingMSTeam + type: action + action: newrelic.notification.sendMicrosoftTeams + version: 1 + inputs: + destinationId: acc24dc2-d4fc-4eba-a7b4-b3ad0170f8aa + channel: DEV_TESTING + teamName: TEST_TEAM_DEV + message: Hello from Workflow + ``` + | +
| Input Field | +Optionality | +Datatype | +Description | +Example | +
|---|---|---|---|---|
| **destinationId** | +Required | +String | +
+ DestinationId associated with the newrelic destination.
+ + Refer [New Relic integration for Microsoft Teams](/docs/alerts/get-notified/microsoft-teams-integrations/) for steps on how to configure a new destination and listing destination Id. + ++ Refer [Destinations](/docs/alerts/get-notified/destinations/) to know more about destinations. + + + |
+ `123e4567-e89b-12d3-a456-426614174000` | +
| **subject** | +Required | +String | +Subject of email | +`workflow-notification` | +
| **message** | +Required | +String | +Message which need to be send in email | +`Hello! from Workflow Automation` | +
| **attachments** | +Optional | +List | +A list of optional attachment | ++ |
| **attachment.type** | +Required | +Enum | +One of: `QUERY`, `RAW` | ++ |
| **attachment.query** | +Optional | +String | +For `QUERY` type, this is NRQL query statement. | +`SELECT * FROM LOG` | +
| **attachment.accountIds** | +Optional | +List | +For `QUERY`, the **New Relic Account IDs** to execute the query. If not provided, the account associated with the workflow's execution is used. | +`[12345567]` | +
| **attachment.format** | +Optional | +Enum | +For `QUERY`, specify the type for the results, default `JSON` | +`JSON CSV` | +
| **attachment.content** | +Optional | +String | +For `RAW`, this is the content to for the attachment in UTF-8. | +`A,B,C\n1,2,3` | +
| **attachment.filename** | +Optional | +String | +A filename for the attachment | +`log_count.csv` | +
| **selectors** | +Optional | +List | +The selectors to get the only specified parameters as output. | +`[{\"name\": \"success\", \"expression\": \".success\"},{\"name\": \"attachments\", \"expression\": \".response.attachments\"},{\"name\": \"sessionId\", \"expression\": \".response.sessionId\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **success** | +Boolean | +`true/false` | +
| **sessionId** | +String | +`"sessionId": "7fa97f26-3791-492e-a39b-53793163dfb9"` | +
| **errorMessage** | +String | +`Channel is a required field in the notification send"` | +
| **attachments** | +List | ++ ```yaml + [{ + "blobId": "43werdtfgvhiu7y8t6r5e4398yutfgvh", + "rowCount": 100 + }] + ``` + | +
| Workflow example | +
|---|
| + ```yaml + name: email_testing_with_attachment + description: Workflow to test sending an email notification via NewRelic with log step + workflowInputs: + destinationId: + type: String + steps: + - name: sendEmailNotification + type: action + action: newrelic.notification.sendEmail + version: '1' + inputs: + destinationId: ${{ .workflowInputs.destinationId }} + subject: "workflow notification" + message: "Workflow Email Notification Testing from local" + attachments: + - type: QUERY + query: "SELECT * FROM Log" + format: JSON + filename: "log_count.json" + selectors: + - name: success + expression: '.success' + - name: sessionId + expression: '.response.sessionId' + - name: attachments + expression: '.response.attachments' + - name: logOutput + type: action + action: newrelic.ingest.sendLogs + version: '1' + inputs: + logs: + - message: "Hello from cap check Testing staging server user2 : ${{ .steps.sendEmailNotification.outputs.result.attachments }}" + licenseKey: ${{ :secrets:STAGING_NEW_RELIC_LICENSE_KEY }} + ``` + | +
| Input Field | +Optionality | +Datatype | +Description | +Example | +
|---|---|---|---|---|
| **destinationId** | +Required | +String | +
+ DestinationId associated with the newrelic destination.
+ + Refer [NerdGraph tutorial: Alerts destinations](/docs/apis/nerdgraph/examples/nerdgraph-api-notifications-destinations/) for steps on how to configure a new destination and listing destination Id. + ++ Refer [Destinations](/docs/alerts/get-notified/destinations/) to know more about destinations. + + + |
+ `123e4567-e89b-12d3-a456-426614174000` | +
| **text** | +Required | +String | +Text message which need to be sent | +Hello ! this message from Workflow | +
| **channel** | +Required | +String | +Channel name where message will be sent | +help-nomad | +
| **selectors** | +Optional | +List | +The selectors to get the only specified parameters as output. | +`[{\"name\": \"success\", \"expression\": \".success\"}]` | +
| Output Field | +Type | +Example | +
|---|---|---|
| **success** | +Boolean | +`true/false` | +
| **sessionId** | +String | +`"sessionId": "7fa97f26-3791-492e-a39b-53793163dfb9"` | +
| **errorMessage** | +String | +`Channel is a required field in the notification send"` | +
| Workflow example | +
|---|
| + ```yaml + name: slack_notification_workflow + description: This is a test workflow to test slack notification send action + steps: + - name: SendMessageUsingSlackChannel + type: action + action: newrelic.notification.sendSlack + version: 1 + inputs: + destinationId: ccd0d926-ed6f-4ddd-bc7d-b7ea9822908d + text: Hi , Testing notifcation api using slack channel name + channel: test-channel-workflow + ``` + | +
| Input Field | +Optionality | +Datatype | +Description | +
|---|---|---|---|
| **definitionName** | +Required | +String | +Name of the workflow definition. | +
| **definitionScopeType** | +Optional | +String | +Scope type of the workflow definition. Scope type must be either `ACCOUNT` or `ORGANIZATION`. | +
| **definitionVersion** | +Optional | +Int | +Version of the workflow definition | +
| **idempotencyKey** | +Optional | +String | +Unique identifier to ensure idempotency of the request. It should be a UUID. | +
| **workflowInputs** | +Optional | +List | +Version of the workflow definition | +
| **runScopeType** | +Required | +String | +Scope type of the workflow. Scope type must be `ACCOUNT`. We'll support starting a workflow at the organization level in the future | +
| **runScopeId** | +Required | +String | +Scope id of the workflow. Scope type must be accountId for now. | +
| **selectors** | +Optional | +List | +The selectors to get the only specified parameters as output. | +
| Output Field | +Type | +Example | +
|---|---|---|
| **runId** | ++ | Unique identifier for the workflow run | +
| **success** | +Boolean | +`Status of the request.` | +
| **errorMessage** | +String | +`Failure reason as message.` | +
| Workflow example | +
|---|
| + ```yaml + { + "success": true + "runId": "00dc031f-c1cc-4d26-a3fb-6153c553c66b" + } + ``` + | +
| Input | +Optionality | +Type | +Description | +Example | +
|---|---|---|---|---|
| **query** | +Required | +string | +The NRQL query statement. | ++ |
| **accountIds** | +Optional | +list of int | +The **New Relic Account ID** input is a list of target IDs that allows you to specify the target accounts where the query is executed against. If this value is not provided as an input, the query will automatically be executed against the account associated with the workflow's execution account. | ++ |
| **selectors** | +Optional | +list | +The selectors to get the only specified parameters as output. | ++ ```json + steps: + - name: queryForLog + type: action + action: newrelic.nrdb.query + version: 1 + inputs: + accountIds: [12345] + query: FROM Log SELECT * WHERE message LIKE 'DEMO%' + selectors: + - name: resultsAsString + expression: '.results | tostring' + ``` + | +
| Output | +Type | +Example | +
|---|---|---|
| **results**: An array of objects containing the results of the query. | ++ | + ```yaml + { + results=[ + { message=[INFO] - Workflow: test has ended, messageId=39af98 }, + { message=[INFO] - Workflow: test - Step query has started, messageId=649c612 }, + ... + ] + } + ``` + | +
| Input | -Optionality | -Type | -Description | -
|---|---|---|---|
| **timestamp** | -Required | -int | -An integer representing epoch timestamp. Note that, UNIX epochs are the number of seconds after 1st Jan 1970, midnight UTC (00:00) | -
| **timestampUnit** | -Optional | -string | -A string representing unit of provided timestamp. Acceptable values: SECONDS, MILLISECONDS(DEFAULT) | -
| **timezoneId** | -Optional | -string | -A string representing timezone for desired date/time, default: UTC | -
| **pattern** | -Optional | -string | -A string representing pattern for desired datetime, default: ISO-8601 | -
| Field | -Optionality | -Datatype | -Description | -
|---|---|---|---|
| **date** | -Required | -string | -A string representation of date. | -
| **time** | -Required | -string | -A string representation of time. | -
| **datetime** | -Required | -string | -A string representation of datetime. | -
| **timezone** | -Required | -map | -A map representation of timezoneId and abbreviation. | -
| Example | -Workflow Input | -Outputs | -
|---|---|---|
| - ```yaml - name: from_epoch - - workflowInputs: - timestamp: - type: Int - timestampUnit: - type: String - timezoneId: - type: String - pattern: - type: String - - steps: - - name: epochTime - type: action - action: utils.datetime.fromEpoch - version: 1 - inputs: - timestamp: ${{ .workflowInputs.timestamp }} - timezoneId: ${{ .workflowInputs.timezoneId }} - pattern: ${{ .workflowInputs.pattern }} - timestampUnit: ${{ .workflowInputs.timestampUnit }} - ``` - | -- ```json - mutation { - workflowAutomationStartWorkflowRun( - scope: { type: ACCOUNT id: "12345678" } - definition: { name: "from_epoch" } - workflowInputs: [ - {key: "timestamp", value: "1738236424003"} - {key: "timestampUnit", value: "MILLISECONDS"} - {key: "pattern", value: "yyyy-mm-dd HH:SS"} - {key: "timezoneId", value: "Asia/Kolkata"} - ] - ) { - runId - } - } - ``` - | -- ```json - { - "date": "2025-01-30", - "time": "16:57:04.003" - "datetime": "2025-01-30 16:00", - "timezone": { - "abbreviation": "IST", - "id": "Asia/Kolkata" - } - } - ``` - | -
| Input | -Optionality | -Type | -Description | -
|---|---|---|---|
| **data** | -Required | -any | -A string representing a data to transform into CSV, typically a JSON string or a map. | -
| Field | -Optionality | -Datatype | -Description | -
|---|---|---|---|
| **csv** | -Required | -string | -A CSV representation of the data received. | -
| Example | -Workflow Input | -Outputs | -
|---|---|---|
| - ```json - name: nrqltocsv - - steps: - - name: queryForLog - type: action - action: newrelic.nrql.query - version: 1 - inputs: - accountIds: ['${{ .workflowInputs.accountId }}'] - query: ${{ .workflowInputs.nrql }} - - - name: csv1 - type: action - action: utils.transform.toCSV - version: 1 - inputs: - data: ${{ .steps.queryForLog.outputs.results | tostring }} - ``` - | -- ```json - mutation { - startWorkflowRun( - scope: { type: ACCOUNT id: "12345678" } - definition: { - name: "nrqltocsv", - } - workflowInputs: [ - {key: "accountId" value: "12345678"} - {key: "nrql" value: "FROM TransactionError SELECT error.message, error.class, transactionName, request.uri, query WHERE appName like 'my-app-1%' AND error.expected IS FALSE SINCE 1 hour ago LIMIT 50"} - ] - ) - { runId } - } - ``` - | -- |
| Input | -Optionality | -Datatype | -Description | -
|---|---|---|---|
| - | - | - |
| Field | -Datatype | -Description | -
|---|---|---|
| **uuid** | -string | -- |
| Example | -Workflow Input | -Outputs | -
|---|---|---|
| - |
- name: generateUUID - steps: - - name: generateUUID - type: action - action: utils.uuid.generate - version: 1 - |
- - ```json - { - "uuid": "c76bd606-5eaa-42bb-a847-4221fb49f83c", - } - ``` - | -
| Input Field | +Optionality | +Type | +Description | +Example | +
|---|---|---|---|---|
| **script** | +Required | +String | +Any data transformation script | ++ script: | + print("Hello, World!") + | +
| **runtime** | +Required | +Enum | +Run time version of script | +`PYTHON_3_13` | +
| **parameters** | +Optional | +List | +list of parameters to be used in script | +`parameters: ["--a", "10", "--b", "5"]` | +
| Output Field | +Datatype | +Examples | +
|---|---|---|
| **success** | +Boolean | +`true/false` | +
| **payload** | +Object | +`"sessionId": "7fa97f26-3791-492e-a39b-53793163dfb9"` | +
| **errorMessage** | +String | +`parsing error at line 9"` | +
| Example | +
|---|
| + ```yaml + name: script-workflow + + steps: + - name: runScript + type: action + action: script.run + version: 1 + inputs: + script: | + import json + import argparse + + p = argparse.ArgumentParser() + p.add_argument("--a", type=int, required=True) + p.add_argument("--b", type=int, required=True) + args = p.parse_args() + # Data transformation: output original, squared, and sum + result = { + "original": {"a": args.a, "b": args.b}, + "transformed": {"a_squared": args.a ** 2, "b_squared": args.b ** 2}, + "sum": args.a + args.b + } + print(json.dumps(result)) + parameters: ["--a", "10", "--b", "5"] + runtime: PYTHON_3_13 + - name: logOutput + type: action + action: newrelic.ingest.sendLogs + version: 1 + inputs: + logs: + - message: "Hello from script testing : ${{ .steps.runScript.outputs.payload }}" + ``` + | +
| Input | +Optionality | +Type | +Description | +
|---|---|---|---|
| **timestamp** | +Required | +int | +An integer representing epoch timestamp. Note that, UNIX epochs are the number of seconds after 1st Jan 1970, midnight UTC (00:00) | +
| **timestampUnit** | +Optional | +string | +A string representing unit of provided timestamp. Acceptable values: SECONDS, MILLISECONDS(DEFAULT) | +
| **timezoneId** | +Optional | +string | +A string representing timezone for desired date/time, default: UTC | +
| **pattern** | +Optional | +string | +A string representing pattern for desired datetime, default: ISO-8601 | +
| Field | +Optionality | +Datatype | +Description | +
|---|---|---|---|
| **date** | +Required | +string | +A string representation of date. | +
| **time** | +Required | +string | +A string representation of time. | +
| **datetime** | +Required | +string | +A string representation of datetime. | +
| **timezone** | +Required | +map | +A map representation of timezoneId and abbreviation. | +
| Example | +Workflow Input | +Outputs | +
|---|---|---|
| + ```yaml + name: from_epoch + + workflowInputs: + timestamp: + type: Int + timestampUnit: + type: String + timezoneId: + type: String + pattern: + type: String + + steps: + - name: epochTime + type: action + action: utils.datetime.fromEpoch + version: 1 + inputs: + timestamp: ${{ .workflowInputs.timestamp }} + timezoneId: ${{ .workflowInputs.timezoneId }} + pattern: ${{ .workflowInputs.pattern }} + timestampUnit: ${{ .workflowInputs.timestampUnit }} + ``` + | ++ ```json + mutation { + workflowAutomationStartWorkflowRun( + scope: { type: ACCOUNT id: "12345678" } + definition: { name: "from_epoch" } + workflowInputs: [ + {key: "timestamp", value: "1738236424003"} + {key: "timestampUnit", value: "MILLISECONDS"} + {key: "pattern", value: "yyyy-mm-dd HH:SS"} + {key: "timezoneId", value: "Asia/Kolkata"} + ] + ) { + runId + } + } + ``` + | ++ ```json + { + "date": "2025-01-30", + "time": "16:57:04.003" + "datetime": "2025-01-30 16:00", + "timezone": { + "abbreviation": "IST", + "id": "Asia/Kolkata" + } + } + ``` + | +
| Input | +Optionality | +Type | +Description | +
|---|---|---|---|
| **data** | +Required | +any | +A string representing a data to transform into CSV, typically a JSON string or a map. | +
| Field | +Optionality | +Datatype | +Description | +
|---|---|---|---|
| **csv** | +Required | +string | +A CSV representation of the data received. | +
| Example | +Workflow Input | +Outputs | +
|---|---|---|
| + ```json + name: nrqltocsv + + steps: + - name: queryForLog + type: action + action: newrelic.nrql.query + version: 1 + inputs: + accountIds: ['${{ .workflowInputs.accountId }}'] + query: ${{ .workflowInputs.nrql }} + + - name: csv1 + type: action + action: utils.transform.toCSV + version: 1 + inputs: + data: ${{ .steps.queryForLog.outputs.results | tostring }} + ``` + | ++ ```json + mutation { + startWorkflowRun( + scope: { type: ACCOUNT id: "12345678" } + definition: { + name: "nrqltocsv", + } + workflowInputs: [ + {key: "accountId" value: "12345678"} + {key: "nrql" value: "FROM TransactionError SELECT error.message, error.class, transactionName, request.uri, query WHERE appName like 'my-app-1%' AND error.expected IS FALSE SINCE 1 hour ago LIMIT 50"} + ] + ) + { runId } + } + ``` + | ++ |
| Input | +Optionality | +Datatype | +Description | +
|---|---|---|---|
| + | + | + |
| Field | +Datatype | +Description | +
|---|---|---|
| **uuid** | +string | ++ |
| Example | +Workflow Input | +Outputs | +
|---|---|---|
| + |
+ name: generateUUID + steps: + - name: generateUUID + type: action + action: utils.uuid.generate + version: 1 + |
+ + ```json + { + "uuid": "c76bd606-5eaa-42bb-a847-4221fb49f83c", + } + ``` + | +
| - Campo de entrada - | - -- Opcionalidad - | - -- Tipo - | - -- Ejemplo - | -
|---|---|---|---|
| - **token** - | - -- Requerido - | - -- secreto - | - -- `${{ :secrets:slackToken }}` - | -
| - **canal** - | - -- Requerido - | - -- cadena - | - -- `my-slack-channel` - | -
| - **texto** - | - -- Requerido - | - -- cadena - | - -- `Hello World!` - | -
| - **hilosTs** - | - -- Opcional - | - -- cadena - | - -
- ` |
-
| - **adjunto** - | - -- Opcional - | - -- mapa - | - -- |
| - **archivo adjunto** - | - -- Requerido - | - -- cadena - | - -- `file.txt` - | -
| - **contenido del archivo adjunto** - | - -- Requerido - | - -- cadena - | - -- `Hello\nWorld!` - | -
| - Campo de salida - | - -- Tipo - | - -- Ejemplo - | -
|---|---|---|
| - **hilosTs** - | - -- cadena - | - -
- ` |
-
| - **ID de canal** - | - -- cadena - | - -
- ` |
-
| - Ejemplo de flujo de trabajo - | -
|---|
| - ```yaml - name: SendMessage - - steps: - - name: send_slack_message - type: action - action: slack.chat.postMessage - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channel: ${{ .workflowInputs.channel }} - text: ${{ .workflowInputs.text }} - ``` - - **Entradas esperadas:** - - ```json - { - "inputs": [ - { - "key" : "channel", - "value" : "my-channel" - }, - { - "key" : "text", - "value" : "This is my message *with bold text* and `code backticks`" - } - ] - } - ``` - - **Resultado esperado:** - - ```json - [ - { - "threadTs": "1718897637.400609", - "channelID": "C063JK1RHN1" - } - ] - ``` - | -
| - Ejemplo de flujo de trabajo - | -
|---|
| - ```yaml - name: SendFileMessage - - steps: - - name: postCsv - type: action - action: slack.chat.postMessage - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channel: my-channel - text: "Please find the attached file:" - attachment: - filename: 'file.txt' - content: "Hello\nWorld!" - ``` - - **Resultado esperado:** - - ```json - [ - { - "threadTs": "1718897637.400609", - "channelID": "C063JK1RHN1" - } - ] - ``` - | -
| - Campo de entrada - | - -- Opcionalidad - | - -- Tipo - | - -- Ejemplo - | -
|---|---|---|---|
| - **token** - | - -- Requerido - | - -- secreto - | - -- `${{ :secrets:slackToken }}` - | -
| - **ID de canal** - | - -- Requerido - | - -- cadena - | - -- `C063JK1RHN1` - | -
| - **se acabó el tiempo** - | - -- Opcional - | - -- En t - | - -- 60 - | -
| - **hilosTs** - | - -- Requerido - | - -- cadena - | - -
- ` |
-
| - **selectores** - | - -- Opcional - | - -- lista - | - -- `[{\"name\": \"reactions\", \"expression\": \".reactions \"}]` - | -
| - Campo de salida - | - -- Tipo - | - -- Ejemplo - | -
|---|---|---|
| - **reacciones** - | - -- lista - | - -
- `
|
-
| - Ejemplo de flujo de trabajo - | -
|---|
| - ```yaml - name: GetReactions - - steps: - - name: getReactions - type: action - action: slack.chat.getReactions - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channelID: ${{ .steps.promptUser.outputs.channelID }} - threadTs: ${{ .steps.promptUser.outputs.threadTs }} - timeout: ${{ .workflowInputs.timeout }} - selectors: ${{ .workflowInputs.selectors }} - ``` - - **Entradas esperadas:** - - ```json - { - "inputs": [ - { - "key" : "channelID", - "value" : "C063JK1RHN1" - }, - { - "key" : "threadTs", - "value" : "1718897637.400609" - }, - { - "key" : "selectors", - "value" : "[{\"name\": \"reactions\", \"expression\": \".reactions \"}]" - } - ] - } - ``` - - **Resultado esperado:** - - ```json - [ - { - "name": "grinning", - "users": [ - "W222222" - ], - "count": 1 - }, - { - "name": "question", - "users": [ - "W333333" - ], - "count": 1 - } - ] - ``` - - O si se agota el tiempo de espera: - - ```json - [] - ``` - | -
| - Campo de entrada - | - -- Opcionalidad - | - -- Tipo - | - -- Descripción - | -
|---|---|---|---|
| - **url** - | - -- Requerido - | - -- Cadena - | - -- La URL de destino para la solicitud. El esquema debe estar incluido: - - `https://example.com` - | -
| - **parámetros de URL** - | - -- Opcional - | - -- Mapa - | - -- El parámetro consulta que se agregará a la URL. Toma un objeto JSON en formato de cadena. - | -
| - **encabezados** - | - -- Opcional - | - -- Mapa - | - -- Las cabeceras que se deben agregar a la solicitud. Toma un objeto JSON en formato de cadena. - | -
| - **selectores** - | - -- Opcional - | - -- Lista - | - -- Los selectores para obtener únicamente el parámetro especificado como resultado. - | -
| - Campo de salida - | - -- Tipo - | - -- Descripción - | -
|---|---|---|
| - **cuerpo de respuesta** - | - -- Cadena - | - -- El cuerpo de la respuesta. - | -
| - **código de estado** - | - -- Entero - | - -- El código de estado HTTP de la respuesta. - | -
| - Ejemplo de flujo de trabajo - | -
|---|
| - ```yaml - name: httpGetTest - description: 'Performs an HTTP GET request to retrieve data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - steps: - - name: query - type: action - action: http.get - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - next: end - ``` - - **Ejemplos de entradas:** - - ```json - { - "url": "https://example.com", - "urlParams": "{\"foo\": \"bar\"}", - "headers": "{\"baz\": \"bat\"}" - } - ``` - - **Ejemplos de resultados:** - - ```json - { - "responseBody": "\n...\n", - "statusCode": 200 - } - ``` - | -
| - Campo de entrada - | - -- Opcionalidad - | - -- Tipo - | - -- Descripción - | -
|---|---|---|---|
| - **url** - | - -- Requerido - | - -- Cadena - | - -- La URL de destino para la solicitud. El esquema debe estar incluido: - - `https://example.com` - | -
| - **parámetros de URL** - | - -- Opcional - | - -- Mapa - | - -- El parámetro consulta que se agregará a la URL. Toma un objeto JSON en formato de cadena. - | -
| - **encabezados** - | - -- Opcional - | - -- Mapa - | - -- Las cabeceras que se deben agregar a la solicitud. Toma un objeto JSON en formato de cadena. - | -
| - **cuerpo** - | - -- Opcional - | - -- Cadena - | - -- El cuerpo de la solicitud. - | -
| - **selectores** - | - -- Opcional - | - -- Lista - | - -- Los selectores para obtener únicamente el parámetro especificado como resultado. - | -
| - Campo de salida - | - -- Tipo - | - -- Descripción - | -
|---|---|---|
| - **cuerpo de respuesta** - | - -- Cadena - | - -- El cuerpo de la respuesta. - | -
| - **código de estado** - | - -- Entero - | - -- El código de estado HTTP de la respuesta. - | -
| - Ejemplo de flujo de trabajo - | -
|---|
| - ```yaml - name: httpPostTest - description: 'Performs an HTTP POST request to send data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - body: - type: String - steps: - - name: query - type: action - action: http.post - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - body: ${{ .workflowInputs.body }} - next: end - ``` - - **Ejemplos de entradas:** - - ```json - { - "url": "https://example.com", - "headers": "{\"Content-Type\":\"application/json\"}", - "urlParams": "{\"foo\": \"bar\"}", - "body": "{\"foo\": \"bar\"}" - } - ``` - - **Ejemplos de resultados:** - - ```json - { - "responseBody": "", - "statusCode": 200 - } - ``` - | -
| - Campo de entrada - | - -- Opcionalidad - | - -- Tipo - | - -- Descripción - | -
|---|---|---|---|
| - **url** - | - -- Requerido - | - -- Cadena - | - -- La URL de destino para la solicitud. La URL debe incluir el esquema (por ejemplo, https:// o http://). Ejemplo: - - `https://example.com` - | -
| - **parámetros de URL** - | - -- Opcional - | - -- Mapa - | - -- El parámetro consulta que se agregará a la URL. Toma un objeto JSON en formato de cadena. - | -
| - **encabezados** - | - -- Opcional - | - -- Mapa - | - -- Las cabeceras que se deben agregar a la solicitud. Toma un objeto JSON en formato de cadena. - | -
| - **cuerpo** - | - -- Opcional - | - -- Cadena - | - -- El cuerpo de la solicitud. - | -
| - **selectores** - | - -- Opcional - | - -- Lista - | - -- Los selectores para obtener únicamente el parámetro especificado como resultado. - | -
| - Campo de salida - | - -- Tipo - | - -- Descripción - | -
|---|---|---|
| - **cuerpo de respuesta** - | - -- Cadena - | - -- El cuerpo de la respuesta. - | -
| - **código de estado** - | - -- Entero - | - -- El código de estado HTTP de la respuesta. - | -
| - Ejemplo de flujo de trabajo - | -
|---|
| - ```yaml - name: httpPutTest - description: 'Performs an HTTP PUT request to update data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - body: - type: String - selectors: - type: String - steps: - - name: query - type: action - action: http.put - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - body: ${{ .workflowInputs.body }} - selectors: ${{ .workflowInputs.selectors }} - next: end - ``` - - **Ejemplos de entradas:** - - ```json - { - "url": "https://example.com", - "headers": "{\"Content-Type\":\"application/json\"}", - "urlParams": "{\"foo\": \"bar\"}", - "body": "{\"foo\": \"bar\"}", - "selectors": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" - } - ``` - - **Ejemplos de resultados:** - - ```json - { - "responseBody": "", - "statusCode": 200 - } - ``` - | -
| - Campo de entrada - | - -- Opcionalidad - | - -- Tipo - | - -- Descripción - | -
|---|---|---|---|
| - **url** - | - -- Requerido - | - -- Cadena - | - -- La URL de destino para la solicitud. La URL debe incluir el esquema (por ejemplo, https:// o http://). Ejemplo: - - `https://example.com` - | -
| - **parámetros de URL** - | - -- Opcional - | - -- Mapa - | - -- El parámetro consulta que se agregará a la URL. Toma un objeto JSON en formato de cadena. - | -
| - **encabezados** - | - -- Opcional - | - -- Mapa - | - -- Las cabeceras que se deben agregar a la solicitud. Toma un objeto JSON en formato de cadena. - | -
| - **selectores** - | - -- Opcional - | - -- Lista - | - -- Los selectores para obtener únicamente el parámetro especificado como resultado. - | -
| - Campo de salida - | - -- Tipo - | - -- Descripción - | -
|---|---|---|
| - **cuerpo de respuesta** - | - -- Cadena - | - -- El cuerpo de la respuesta. - | -
| - **código de estado** - | - -- Entero - | - -- El código de estado HTTP de la respuesta. - | -
| - Ejemplo de flujo de trabajo - | -
|---|
| - ```yaml - name: httpDeleteTest - description: 'Performs an HTTP DELETE request to remove data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - selectors: - type: String - steps: - - name: query - type: action - action: http.delete - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - selectors: ${{ .workflowInputs.selectors }} - next: end - ``` - - **Ejemplos de entradas:** - - ```json - { - "url": "https://example.com", - "urlParams": "{\"foo\": \"bar\"}", - "headers": "{\"baz\": \"bat\"}", - "selectors": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" - } - ``` - - **Ejemplos de resultados:** - - ```json - { - "responseBody": "\n...\n", - "statusCode": 200 - } - ``` - | -
| - Categoría - | - -- Acción - | - -- Objetivo - | -
|---|---|---|
| - **Ingesta de datos** - | - -- [Enviar evento personalizado](#newrelicingestsendevents) - | - -- Enviar evento personalizado a New Relic. - | -
| - **Ingesta de datos** - | - -- [Enviar logs](#newrelicingestsendlogs) - | - -- Enviar datos de log a New Relic. - | -
| - **NerdGraph** - | - -- [Ejecutar consulta o mutación GraphQL](#newrelicnerdgraphexecute) - | - -- Ejecutar comandos GraphQL contra la API de NerdGraph. - | -
| - **Consultar** - | - -- [Ejecutar consulta NRDB](#newrelicnrdbquery) - | - -- Ejecutar consulta NRQL entre cuentas. - | -
| - **Notificación** - | - -- [Enviar notificación](#newrelicnotificationsend) - | - -- Enviar notificaciones a destinos New Relic. - | -
| - Campo de entrada - | - -- Opcionalidad - | - -- Tipo - | - -- Ejemplo - | -
|---|---|---|---|
| - **Atributo** - | - -- Opcional - | - -- mapa - | - -- `"{\"page\": \"1\", \"limit\": \"10\"}"` - | -
| - **evento** - | - -- Requerido - | - -- lista - | - -- `"[{\"eventType\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"eventType\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]` - | -
| - **clave de licencia** - | - -- Opcional - | - -- cadena - | - -- `"{{ .secrets.secretName }}"` - | -
| - **selectores** - | - -- Opcional - | - -- lista - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - Campo de salida - | - -- Tipo - | - -- Ejemplo - | -
|---|---|---|
| - **éxito** - | - -- Booleano - | - -- `true` - | -
| - **mensaje de error** - | - -- cadena - | - -- `"Error message if operation failed"` - | -
| - Ejemplo de flujo de trabajo - | -
|---|
| - ```yaml - name: heartbeat_newrelicIngestSendEvents - - workflowInputs: - cellName: - type: String - - steps: - - name: runAction - type: action - action: newrelic.ingest.sendEvents - version: 1 - inputs: - attributes: - colour: red - id: 1234 - events: - - eventType: HeartBeat - test: "OK" - attributes: - foo: bar - - eventType: HeartBeat1234 - test: "OK1234" - attributes: - foo: bar - - eventType: HeartBeat12345 - test: "OK12345" - attributes: - foo: bar - colour: yellow - - eventType: HeartBeat12345678 - test: "OK12345678" - selectors: - - name: success - expression: ".success" - ``` - - **Resultado esperado:** - - ```yaml - { - "success": true - } - ``` - - **Recuperar evento:** - - Tras ejecutar correctamente un flujo de trabajo, puede recuperar el evento asociado ejecutando una consulta en la cuenta que ejecutó el flujo de trabajo: - - ```sql - SELECT * FROM HeartBeat - ``` - | -
| - Campo de entrada - | - -- Opcionalidad - | - -- Tipo - | - -- Ejemplo - | -
|---|---|---|---|
| - **Atributo** - | - -- Opcional - | - -- mapa - | - -- `"{\"page\": \"1\", \"limit\": \"10\"}"` - | -
| - **logs** - | - -- Requerido - | - -- lista - | - -- `"[{\"message\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"message\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]"` - | -
| - **clave de licencia** - | - -- Opcional - | - -- cadena - | - -- `"{{ .secrets.secretName }}"` - | -
| - **selectores** - | - -- Opcional - | - -- lista - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - Campo de salida - | - -- Tipo - | - -- Ejemplo - | -
|---|---|---|
| - **éxito** - | - -- Booleano - | - -- `true` - | -
| - **mensaje de error** - | - -- cadena - | - -- `"Error message if operation failed"` - | -
| - Ejemplo de flujo de trabajo - | -
|---|
| - ```yaml - name: heartbeat_newrelicIngestSendLogs - - workflowInputs: - cellName: - type: String - - steps: - - name: runAction - type: action - action: newrelic.ingest.sendLogs - version: 1 - inputs: - attributes: - colour: red - id: 1234 - logs: - - message: 'Heartbeat sendLogs Action Test Message' - attributes: - foo: bar - - message: 'HeartBeat1234' - attributes: - foo: bar - - message: 'HeartBeat12345' - attributes: - foo: bar - colour: yellow - - message: 'HeartBeat12345678' - selectors: - - name: success - expression: ".success" - ``` - - **Resultado esperado:** - - ```yaml - { - "success": true - } - ``` - - **Recuperar logs:** - - Tras ejecutar correctamente un flujo de trabajo, puede recuperar el log asociado ejecutando una consulta en la cuenta que ejecutó el flujo de trabajo: - - ```sql - SELECT * FROM Log - ``` - | -
| - Aporte - | - -- Opcionalidad - | - -- Tipo - | - -- Descripción - | - -- Ejemplo - | -
|---|---|---|---|---|
| - **Graphql** - | - -- Requerido - | - -- cadena - | - -- Sintaxis GraphQL. Deberías usar GraphiQL para construir y probar tu comando. - | - -- |
| - **variables** - | - -- Requerido - | - -- map[string]any - | - -- Variables de pares principales de valor para usar con la declaración GraphQL. - | - -- |
| - **selectores** - | - -- Opcional - | - -- lista - | - -- Los selectores para obtener como resultado el único parámetro especificado. - | - -- ```yaml - { - "data": { - "actor": { - "user": { - "name": "" - } - } - } - ``` - | -
| - Producción - | - -- Tipo - | - -- Ejemplo - | -
|---|---|---|
| - **datos** - | - -- map[string]any: Contenido de la propiedad - - `data` - - de una respuesta de NerdGraph. - | - -- ```yaml - steps: - - name: currentUserId - type: action - action: newrelic.nerdgraph.execute - version: 1 - inputs: - graphql: | - query userId { - currentUser { - id - } - } - - name: sayHello - type: action - action: example.messaging.sayHello - version: 1 - inputs: - name: ${{ .steps.currentUserId.outputs.data.currentUser.id }} - ``` - | -
| - Ejemplo - | - -- Producción - | - -- Recuperar evento - | -
|---|---|---|
| - ```json - name: testLog - - steps: - - name: logStep - type: action - action: newrelic.ingest.sendLogs - version: 1 - inputs: - logs: - - message: 'Hello World' - ``` - | - -- ```yaml - { - "success": true - } - ``` - | - -- Puede recuperar el evento asociado ejecutando una consulta en la cuenta que ejecutó el flujo de trabajo. - - ```yaml - SELECT message FROM Log WHERE allColumnSearch('Hello World', insensitive: true) SINCE 30 minutes ago - ``` - | -
| - Aporte - | - -- Opcionalidad - | - -- Tipo - | - -- Descripción - | - -- Ejemplo - | -
|---|---|---|---|---|
| - **consulta** - | - -- Requerido - | - -- cadena - | - -- La instrucción de consulta NRQL. - | - -- |
| - **ID de cuenta** - | - -- Opcional - | - -- lista de int - | - -- El campo - - **New Relic Account ID** - - es una lista de ID de objetivo que le permite especificar las cuentas objetivo contra las que se ejecuta la consulta. Si no se proporciona este valor como entrada, la consulta se ejecutará automáticamente en la cuenta asociada con la cuenta de ejecución del flujo de trabajo. - | - -- |
| - **selectores** - | - -- Opcional - | - -- lista - | - -- Los selectores para obtener como resultado el único parámetro especificado. - | - -- ```json - steps: - - name: queryForLog - type: action - action: newrelic.nrdb.query - version: 1 - inputs: - accountIds: [12345] - query: FROM Log SELECT * WHERE message LIKE 'DEMO%' - selectors: - - name: resultsAsString - expression: '.results | tostring' - ``` - | -
| - Producción - | - -- Tipo - | - -- Ejemplo - | -
|---|---|---|
| - **results** - - : Una matriz de objetos que contiene los resultados de la consulta. - | - -- - | - ```yaml - { - results=[ - { message=[INFO] - Workflow: test has ended, messageId=39af98 }, - { message=[INFO] - Workflow: test - Step query has started, messageId=649c612 }, - ... - ] - } - ``` - | -
| - Aporte - | - -- Opcionalidad - | - -- Tipo - | - -- Descripción - | - -- Ejemplo - | -
|---|---|---|---|---|
| - **tipo** - | - -- Requerido - | - -- cadena - | - -- Tipo de destino de New Relic - | - -- `slack` - | -
| - **ID de destino** - | - -- Requerido - | - -- Cadena - | - -- DestinationId asociado con el destino de New Relic. - | - -- `123e4567-e89b-12d3-a456-426614174000` - | -
| - **parámetro** - | - -- Requerido - | - -- mapa - | - -- Campos obligatorios para enviar notificaciones al tipo de destino seleccionado. - | - -- `{\"channel\": \"${{ YOUR_CHANNEL }}\", \"text\": \"Enter your text here\"}` - | -
| - **selectores** - | - -- Opcional - | - -- lista - | - -- Los selectores para obtener como resultado el único parámetro especificado. - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - Producción - | - -- Tipo - | - -- Ejemplo - | -
|---|---|---|
| - éxito - | - -- booleano - | - -- `true/false` - | -
| - Aporte - | - -- Opcionalidad - | - -- Tipo - | - -- Descripción - | -
|---|---|---|---|
| - **timestamp** - | - -- Requerido - | - -- En t - | - -- Un número entero que representa timestamp de la época. Tenga en cuenta que las épocas UNIX son el número de segundos transcurridos desde el 1 de enero de 1970, medianoche UTC (00:00). - | -
| - **marca de tiempoUnidad** - | - -- Opcional - | - -- cadena - | - -- Una cadena que representa la unidad de timestamp proporcionada. Valores aceptables: SEGUNDOS, MILISEGUNDOS (PREDETERMINADO) - | -
| - **ID de zona horaria** - | - -- Opcional - | - -- cadena - | - -- Cadena de texto que representa la zona horaria para la fecha y hora deseadas; por defecto: UTC - | -
| - **patrón** - | - -- Opcional - | - -- cadena - | - -- Cadena que representa el patrón para la fecha y hora deseadas; por defecto: ISO-8601 - | -
| - Campo - | - -- Opcionalidad - | - -- Tipo de datos - | - -- Descripción - | -
|---|---|---|---|
| - **fecha** - | - -- Requerido - | - -- cadena - | - -- Una representación en cadena de texto de una fecha. - | -
| - **tiempo** - | - -- Requerido - | - -- cadena - | - -- Una representación en cadena del tiempo. - | -
| - **fecha y hora** - | - -- Requerido - | - -- cadena - | - -- Una representación en cadena de texto de una fecha y hora. - | -
| - **zona horaria** - | - -- Requerido - | - -- mapa - | - -- Representación cartográfica del ID de zona horaria y su abreviatura. - | -
| - Ejemplo - | - -- Entrada del flujo de trabajo - | - -- Salidas - | -
|---|---|---|
| - ```yaml - name: from_epoch - - workflowInputs: - timestamp: - type: Int - timestampUnit: - type: String - timezoneId: - type: String - pattern: - type: String - - steps: - - name: epochTime - type: action - action: utils.datetime.fromEpoch - version: 1 - inputs: - timestamp: ${{ .workflowInputs.timestamp }} - timezoneId: ${{ .workflowInputs.timezoneId }} - pattern: ${{ .workflowInputs.pattern }} - timestampUnit: ${{ .workflowInputs.timestampUnit }} - ``` - | - -- ```json - mutation { - workflowAutomationStartWorkflowRun( - scope: { type: ACCOUNT id: "12345678" } - definition: { name: "from_epoch" } - workflowInputs: [ - {key: "timestamp", value: "1738236424003"} - {key: "timestampUnit", value: "MILLISECONDS"} - {key: "pattern", value: "yyyy-mm-dd HH:SS"} - {key: "timezoneId", value: "Asia/Kolkata"} - ] - ) { - runId - } - } - ``` - | - -- ```json - { - "date": "2025-01-30", - "time": "16:57:04.003" - "datetime": "2025-01-30 16:00", - "timezone": { - "abbreviation": "IST", - "id": "Asia/Kolkata" - } - } - ``` - | -
| - Aporte - | - -- Opcionalidad - | - -- Tipo - | - -- Descripción - | -
|---|---|---|---|
| - **datos** - | - -- Requerido - | - -- cualquier - | - -- Una cadena que representa datos para transformar a CSV, normalmente una cadena JSON o un mapa. - | -
| - Campo - | - -- Opcionalidad - | - -- Tipo de datos - | - -- Descripción - | -
|---|---|---|---|
| - **csv** - | - -- Requerido - | - -- cadena - | - -- Una representación CSV de los datos recibidos. - | -
| - Ejemplo - | - -- Entrada del flujo de trabajo - | - -- Salidas - | -
|---|---|---|
| - ```json - name: nrqltocsv - - steps: - - name: queryForLog - type: action - action: newrelic.nrql.query - version: 1 - inputs: - accountIds: ['${{ .workflowInputs.accountId }}'] - query: ${{ .workflowInputs.nrql }} - - - name: csv1 - type: action - action: utils.transform.toCSV - version: 1 - inputs: - data: ${{ .steps.queryForLog.outputs.results | tostring }} - ``` - | - -- ```json - mutation { - startWorkflowRun( - scope: { type: ACCOUNT id: "12345678" } - definition: { - name: "nrqltocsv", - } - workflowInputs: [ - {key: "accountId" value: "12345678"} - {key: "nrql" value: "FROM TransactionError SELECT error.message, error.class, transactionName, request.uri, query WHERE appName like 'my-app-1%' AND error.expected IS FALSE SINCE 1 hour ago LIMIT 50"} - ] - ) - { runId } - } - ``` - | - -- |
| - Aporte - | - -- Opcionalidad - | - -- Tipo de datos - | - -- Descripción - | -
|---|---|---|---|
| - - | - - | - |
| - Campo - | - -- Tipo de datos - | - -- Descripción - | -
|---|---|---|
| - **uuid** - | - -- cadena - | - -- |
| - Ejemplo - | - -- Entrada del flujo de trabajo - | - -- Salidas - | -
|---|---|---|
| - - |
- nombre: generarUUID pasos: - - * nombre: generarUUID tipo: acción acción: utils.uuid.generate versión: 1 - |
-
- - ```json - { - "uuid": "c76bd606-5eaa-42bb-a847-4221fb49f83c", - } - ``` - | -
| - Champ de saisie - | - -- optionnalité - | - -- Type - | - -- Exemple - | -
|---|---|---|---|
| - **jeton** - | - -- Requis - | - -- secrète - | - -- `${{ :secrets:slackToken }}` - | -
| - **canal** - | - -- Requis - | - -- chaîne - | - -- `my-slack-channel` - | -
| - **texte** - | - -- Requis - | - -- chaîne - | - -- `Hello World!` - | -
| - **filTs** - | - -- Facultatif - | - -- chaîne - | - -
- ` |
-
| - **pièce jointe** - | - -- Facultatif - | - -- carte - | - -- |
| - **pièce jointe.nom_de_fichier** - | - -- Requis - | - -- chaîne - | - -- `file.txt` - | -
| - **pièce jointe.contenu** - | - -- Requis - | - -- chaîne - | - -- `Hello\nWorld!` - | -
| - Champ de sortie - | - -- Type - | - -- Exemple - | -
|---|---|---|
| - **filTs** - | - -- chaîne - | - -
- ` |
-
| - **ID du canal** - | - -- chaîne - | - -
- ` |
-
| - Exemple de workflow - | -
|---|
| - ```yaml - name: SendMessage - - steps: - - name: send_slack_message - type: action - action: slack.chat.postMessage - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channel: ${{ .workflowInputs.channel }} - text: ${{ .workflowInputs.text }} - ``` - - **Entrées attendues :** - - ```json - { - "inputs": [ - { - "key" : "channel", - "value" : "my-channel" - }, - { - "key" : "text", - "value" : "This is my message *with bold text* and `code backticks`" - } - ] - } - ``` - - **Résultat attendu :** - - ```json - [ - { - "threadTs": "1718897637.400609", - "channelID": "C063JK1RHN1" - } - ] - ``` - | -
| - Exemple de workflow - | -
|---|
| - ```yaml - name: SendFileMessage - - steps: - - name: postCsv - type: action - action: slack.chat.postMessage - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channel: my-channel - text: "Please find the attached file:" - attachment: - filename: 'file.txt' - content: "Hello\nWorld!" - ``` - - **Résultat attendu :** - - ```json - [ - { - "threadTs": "1718897637.400609", - "channelID": "C063JK1RHN1" - } - ] - ``` - | -
| - Champ de saisie - | - -- optionnalité - | - -- Type - | - -- Exemple - | -
|---|---|---|---|
| - **jeton** - | - -- Requis - | - -- secrète - | - -- `${{ :secrets:slackToken }}` - | -
| - **ID du canal** - | - -- Requis - | - -- chaîne - | - -- `C063JK1RHN1` - | -
| - **temps mort** - | - -- Facultatif - | - -- int - | - -- 60 - | -
| - **filTs** - | - -- Requis - | - -- chaîne - | - -
- ` |
-
| - **sélecteurs** - | - -- Facultatif - | - -- liste - | - -- `[{\"name\": \"reactions\", \"expression\": \".reactions \"}]` - | -
| - Champ de sortie - | - -- Type - | - -- Exemple - | -
|---|---|---|
| - **réactions** - | - -- liste - | - -
- `
|
-
| - Exemple de workflow - | -
|---|
| - ```yaml - name: GetReactions - - steps: - - name: getReactions - type: action - action: slack.chat.getReactions - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channelID: ${{ .steps.promptUser.outputs.channelID }} - threadTs: ${{ .steps.promptUser.outputs.threadTs }} - timeout: ${{ .workflowInputs.timeout }} - selectors: ${{ .workflowInputs.selectors }} - ``` - - **Entrées attendues :** - - ```json - { - "inputs": [ - { - "key" : "channelID", - "value" : "C063JK1RHN1" - }, - { - "key" : "threadTs", - "value" : "1718897637.400609" - }, - { - "key" : "selectors", - "value" : "[{\"name\": \"reactions\", \"expression\": \".reactions \"}]" - } - ] - } - ``` - - **Résultat attendu :** - - ```json - [ - { - "name": "grinning", - "users": [ - "W222222" - ], - "count": 1 - }, - { - "name": "question", - "users": [ - "W333333" - ], - "count": 1 - } - ] - ``` - - Ou si le délai est dépassé : - - ```json - [] - ``` - | -
| - Champ de saisie - | - -- optionnalité - | - -- Type - | - -- Description - | -
|---|---|---|---|
| - **url** - | - -- Requis - | - -- Chaîne - | - -- L'URL cible de la requête. Le dispositif doit être inclus : - - `https://example.com` - | -
| - **urlParams** - | - -- Facultatif - | - -- Carte - | - -- Les paramètres de requête à ajouter à l'URL. Prend un objet JSON converti en chaîne de caractères. - | -
| - **en-têtes** - | - -- Facultatif - | - -- Carte - | - -- Les en-têtes à ajouter à la requête. Prend un objet JSON converti en chaîne de caractères. - | -
| - **sélecteurs** - | - -- Facultatif - | - -- List - | - -- Les sélecteurs permettant d'obtenir uniquement les paramètres spécifiés en sortie. - | -
| - Champ de sortie - | - -- Type - | - -- Description - | -
|---|---|---|
| - **corps de réponse** - | - -- Chaîne - | - -- Le corps de la réponse. - | -
| - **code d'état** - | - -- Entier - | - -- Le code d'état HTTP de la réponse. - | -
| - Exemple de workflow - | -
|---|
| - ```yaml - name: httpGetTest - description: 'Performs an HTTP GET request to retrieve data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - steps: - - name: query - type: action - action: http.get - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - next: end - ``` - - **Exemples d'entrées :** - - ```json - { - "url": "https://example.com", - "urlParams": "{\"foo\": \"bar\"}", - "headers": "{\"baz\": \"bat\"}" - } - ``` - - **Exemples de résultats :** - - ```json - { - "responseBody": "\n...\n", - "statusCode": 200 - } - ``` - | -
| - Champ de saisie - | - -- optionnalité - | - -- Type - | - -- Description - | -
|---|---|---|---|
| - **url** - | - -- Requis - | - -- Chaîne - | - -- L'URL cible de la requête. Le dispositif doit être inclus : - - `https://example.com` - | -
| - **urlParams** - | - -- Facultatif - | - -- Carte - | - -- Les paramètres de requête à ajouter à l'URL. Prend un objet JSON converti en chaîne de caractères. - | -
| - **en-têtes** - | - -- Facultatif - | - -- Carte - | - -- Les en-têtes à ajouter à la requête. Prend un objet JSON converti en chaîne de caractères. - | -
| - **corps** - | - -- Facultatif - | - -- Chaîne - | - -- Le corps de la requête. - | -
| - **sélecteurs** - | - -- Facultatif - | - -- List - | - -- Les sélecteurs permettant d'obtenir uniquement les paramètres spécifiés en sortie. - | -
| - Champ de sortie - | - -- Type - | - -- Description - | -
|---|---|---|
| - **corps de réponse** - | - -- Chaîne - | - -- Le corps de la réponse. - | -
| - **code d'état** - | - -- Entier - | - -- Le code d'état HTTP de la réponse. - | -
| - Exemple de workflow - | -
|---|
| - ```yaml - name: httpPostTest - description: 'Performs an HTTP POST request to send data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - body: - type: String - steps: - - name: query - type: action - action: http.post - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - body: ${{ .workflowInputs.body }} - next: end - ``` - - **Exemples d'entrées :** - - ```json - { - "url": "https://example.com", - "headers": "{\"Content-Type\":\"application/json\"}", - "urlParams": "{\"foo\": \"bar\"}", - "body": "{\"foo\": \"bar\"}" - } - ``` - - **Exemples de résultats :** - - ```json - { - "responseBody": "", - "statusCode": 200 - } - ``` - | -
| - Champ de saisie - | - -- optionnalité - | - -- Type - | - -- Description - | -
|---|---|---|---|
| - **url** - | - -- Requis - | - -- Chaîne - | - -- L'URL cible de la requête. L'URL doit inclure le schéma (par exemple, https:// ou http://). Exemple: - - `https://example.com` - | -
| - **urlParams** - | - -- Facultatif - | - -- Carte - | - -- Les paramètres de requête à ajouter à l'URL. Prend un objet JSON converti en chaîne de caractères. - | -
| - **en-têtes** - | - -- Facultatif - | - -- Carte - | - -- Les en-têtes à ajouter à la requête. Prend un objet JSON converti en chaîne de caractères. - | -
| - **corps** - | - -- Facultatif - | - -- Chaîne - | - -- Le corps de la requête. - | -
| - **sélecteurs** - | - -- Facultatif - | - -- List - | - -- Les sélecteurs permettant d'obtenir uniquement les paramètres spécifiés en sortie. - | -
| - Champ de sortie - | - -- Type - | - -- Description - | -
|---|---|---|
| - **corps de réponse** - | - -- Chaîne - | - -- Le corps de la réponse. - | -
| - **code d'état** - | - -- Entier - | - -- Le code d'état HTTP de la réponse. - | -
| - Exemple de workflow - | -
|---|
| - ```yaml - name: httpPutTest - description: 'Performs an HTTP PUT request to update data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - body: - type: String - selectors: - type: String - steps: - - name: query - type: action - action: http.put - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - body: ${{ .workflowInputs.body }} - selectors: ${{ .workflowInputs.selectors }} - next: end - ``` - - **Exemples d'entrées :** - - ```json - { - "url": "https://example.com", - "headers": "{\"Content-Type\":\"application/json\"}", - "urlParams": "{\"foo\": \"bar\"}", - "body": "{\"foo\": \"bar\"}", - "selectors": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" - } - ``` - - **Exemples de résultats :** - - ```json - { - "responseBody": "", - "statusCode": 200 - } - ``` - | -
| - Champ de saisie - | - -- optionnalité - | - -- Type - | - -- Description - | -
|---|---|---|---|
| - **url** - | - -- Requis - | - -- Chaîne - | - -- L'URL cible de la requête. L'URL doit inclure le schéma (par exemple, https:// ou http://). Exemple: - - `https://example.com` - | -
| - **urlParams** - | - -- Facultatif - | - -- Carte - | - -- Les paramètres de requête à ajouter à l'URL. Prend un objet JSON converti en chaîne de caractères. - | -
| - **en-têtes** - | - -- Facultatif - | - -- Carte - | - -- Les en-têtes à ajouter à la requête. Prend un objet JSON converti en chaîne de caractères. - | -
| - **sélecteurs** - | - -- Facultatif - | - -- List - | - -- Les sélecteurs permettant d'obtenir uniquement les paramètres spécifiés en sortie. - | -
| - Champ de sortie - | - -- Type - | - -- Description - | -
|---|---|---|
| - **corps de réponse** - | - -- Chaîne - | - -- Le corps de la réponse. - | -
| - **code d'état** - | - -- Entier - | - -- Le code d'état HTTP de la réponse. - | -
| - Exemple de workflow - | -
|---|
| - ```yaml - name: httpDeleteTest - description: 'Performs an HTTP DELETE request to remove data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - selectors: - type: String - steps: - - name: query - type: action - action: http.delete - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - selectors: ${{ .workflowInputs.selectors }} - next: end - ``` - - **Exemples d'entrées :** - - ```json - { - "url": "https://example.com", - "urlParams": "{\"foo\": \"bar\"}", - "headers": "{\"baz\": \"bat\"}", - "selectors": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" - } - ``` - - **Exemples de résultats :** - - ```json - { - "responseBody": "\n...\n", - "statusCode": 200 - } - ``` - | -
| - Catégorie - | - -- Action - | - -- But - | -
|---|---|---|
| - **Ingestion de données** - | - -- [Envoyer un événement personnalisé](#newrelicingestsendevents) - | - -- Envoyer un événement personnalisé à New Relic. - | -
| - **Ingestion de données** - | - -- [Envoyer les logs](#newrelicingestsendlogs) - | - -- Envoyer les données log à New Relic. - | -
| - **NerdGraph** - | - -- [Exécuter une requête ou une mutation GraphQL](#newrelicnerdgraphexecute) - | - -- Exécuter des commandes GraphQL sur l'API NerdGraph. - | -
| - **Qequête** - | - -- [Exécuter une requête NRDB](#newrelicnrdbquery) - | - -- Exécuter la requête NRQL inter-comptes. - | -
| - **Notifications** - | - -- [Envoyer une notification](#newrelicnotificationsend) - | - -- Envoyer une notification aux destinations New Relic. - | -
| - Champ de saisie - | - -- optionnalité - | - -- Type - | - -- Exemple - | -
|---|---|---|---|
| - **attributes** - | - -- Facultatif - | - -- carte - | - -- `"{\"page\": \"1\", \"limit\": \"10\"}"` - | -
| - **événement** - | - -- Requis - | - -- liste - | - -- `"[{\"eventType\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"eventType\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]` - | -
| - **clé de licence** - | - -- Facultatif - | - -- chaîne - | - -- `"{{ .secrets.secretName }}"` - | -
| - **sélecteurs** - | - -- Facultatif - | - -- liste - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - Champ de sortie - | - -- Type - | - -- Exemple - | -
|---|---|---|
| - **succès** - | - -- Booléen - | - -- `true` - | -
| - **message d'erreur** - | - -- chaîne - | - -- `"Error message if operation failed"` - | -
| - Exemple de workflow - | -
|---|
| - ```yaml - name: heartbeat_newrelicIngestSendEvents - - workflowInputs: - cellName: - type: String - - steps: - - name: runAction - type: action - action: newrelic.ingest.sendEvents - version: 1 - inputs: - attributes: - colour: red - id: 1234 - events: - - eventType: HeartBeat - test: "OK" - attributes: - foo: bar - - eventType: HeartBeat1234 - test: "OK1234" - attributes: - foo: bar - - eventType: HeartBeat12345 - test: "OK12345" - attributes: - foo: bar - colour: yellow - - eventType: HeartBeat12345678 - test: "OK12345678" - selectors: - - name: success - expression: ".success" - ``` - - **Résultat attendu :** - - ```yaml - { - "success": true - } - ``` - - **Récupérer l'événement :** - - Une fois un workflow exécuté avec succès, vous pouvez récupérer l'événement associé en exécutant une requête sous le compte qui a exécuté le workflow: - - ```sql - SELECT * FROM HeartBeat - ``` - | -
| - Champ de saisie - | - -- optionnalité - | - -- Type - | - -- Exemple - | -
|---|---|---|---|
| - **attributes** - | - -- Facultatif - | - -- carte - | - -- `"{\"page\": \"1\", \"limit\": \"10\"}"` - | -
| - **logs** - | - -- Requis - | - -- liste - | - -- `"[{\"message\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"message\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]"` - | -
| - **clé de licence** - | - -- Facultatif - | - -- chaîne - | - -- `"{{ .secrets.secretName }}"` - | -
| - **sélecteurs** - | - -- Facultatif - | - -- liste - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - Champ de sortie - | - -- Type - | - -- Exemple - | -
|---|---|---|
| - **succès** - | - -- Booléen - | - -- `true` - | -
| - **message d'erreur** - | - -- chaîne - | - -- `"Error message if operation failed"` - | -
| - Exemple de workflow - | -
|---|
| - ```yaml - name: heartbeat_newrelicIngestSendLogs - - workflowInputs: - cellName: - type: String - - steps: - - name: runAction - type: action - action: newrelic.ingest.sendLogs - version: 1 - inputs: - attributes: - colour: red - id: 1234 - logs: - - message: 'Heartbeat sendLogs Action Test Message' - attributes: - foo: bar - - message: 'HeartBeat1234' - attributes: - foo: bar - - message: 'HeartBeat12345' - attributes: - foo: bar - colour: yellow - - message: 'HeartBeat12345678' - selectors: - - name: success - expression: ".success" - ``` - - **Résultat attendu :** - - ```yaml - { - "success": true - } - ``` - - **Récupérer les logs :** - - Une fois un workflow exécuté avec succès, vous pouvez récupérer le log associé en exécutant une requête sous le compte qui a exécuté le workflow: - - ```sql - SELECT * FROM Log - ``` - | -
| - Saisir - | - -- optionnalité - | - -- Type - | - -- Description - | - -- Exemple - | -
|---|---|---|---|---|
| - **graphql** - | - -- Requis - | - -- chaîne - | - -- Une syntaxe GraphQL. Vous devriez utiliser GraphiQL pour construire et tester votre commande - | - -- |
| - **variables** - | - -- Requis - | - -- map[string]any - | - -- Toutes les variables de type paire valeur-clé à utiliser avec l'instruction GraphQL. - | - -- |
| - **sélecteurs** - | - -- Facultatif - | - -- liste - | - -- Les sélecteurs permettant d'obtenir uniquement les paramètres spécifiés en sortie. - | - -- ```yaml - { - "data": { - "actor": { - "user": { - "name": "" - } - } - } - ``` - | -
| - Sortir - | - -- Type - | - -- Exemple - | -
|---|---|---|
| - **données** - | - -- map[string]any : Contenu de la propriété - - `data` - - d'une réponse NerdGraph. - | - -- ```yaml - steps: - - name: currentUserId - type: action - action: newrelic.nerdgraph.execute - version: 1 - inputs: - graphql: | - query userId { - currentUser { - id - } - } - - name: sayHello - type: action - action: example.messaging.sayHello - version: 1 - inputs: - name: ${{ .steps.currentUserId.outputs.data.currentUser.id }} - ``` - | -
| - Exemple - | - -- Sortir - | - -- Récupérer l'événement - | -
|---|---|---|
| - ```json - name: testLog - - steps: - - name: logStep - type: action - action: newrelic.ingest.sendLogs - version: 1 - inputs: - logs: - - message: 'Hello World' - ``` - | - -- ```yaml - { - "success": true - } - ``` - | - -- Vous pouvez récupérer l'événement associé en exécutant une requête sous le compte qui a exécuté le workflow. - - ```yaml - SELECT message FROM Log WHERE allColumnSearch('Hello World', insensitive: true) SINCE 30 minutes ago - ``` - | -
| - Saisir - | - -- optionnalité - | - -- Type - | - -- Description - | - -- Exemple - | -
|---|---|---|---|---|
| - **requête** - | - -- Requis - | - -- chaîne - | - -- L'instruction de requête NRQL. - | - -- |
| - **identifiants de compte** - | - -- Facultatif - | - -- liste d'entiers - | - -- Le champ - - **New Relic Account ID** - - est une liste d’identifiants cibles qui vous permet de spécifier les comptes cibles sur lesquels la requête est exécutée. Si cette valeur n'est pas fournie en entrée, la requête sera automatiquement exécutée sur le compte associé au compte d'exécution du workflow. - | - -- |
| - **sélecteurs** - | - -- Facultatif - | - -- liste - | - -- Les sélecteurs permettant d'obtenir uniquement les paramètres spécifiés en sortie. - | - -- ```json - steps: - - name: queryForLog - type: action - action: newrelic.nrdb.query - version: 1 - inputs: - accountIds: [12345] - query: FROM Log SELECT * WHERE message LIKE 'DEMO%' - selectors: - - name: resultsAsString - expression: '.results | tostring' - ``` - | -
| - Sortir - | - -- Type - | - -- Exemple - | -
|---|---|---|
| - **results** - - : Un éventail d'objets contenant les résultats de la requête. - | - -- - | - ```yaml - { - results=[ - { message=[INFO] - Workflow: test has ended, messageId=39af98 }, - { message=[INFO] - Workflow: test - Step query has started, messageId=649c612 }, - ... - ] - } - ``` - | -
| - Saisir - | - -- optionnalité - | - -- Type - | - -- Description - | - -- Exemple - | -
|---|---|---|---|---|
| - **type** - | - -- Requis - | - -- chaîne - | - -- Type de destination New Relic - | - -- `slack` - | -
| - **destinationId** - | - -- Requis - | - -- Chaîne - | - -- DestinationId associé à la destination New Relic. - | - -- `123e4567-e89b-12d3-a456-426614174000` - | -
| - **paramètres** - | - -- Requis - | - -- carte - | - -- Champs requis pour envoyer une notification au type de destination choisi. - | - -- `{\"channel\": \"${{ YOUR_CHANNEL }}\", \"text\": \"Enter your text here\"}` - | -
| - **sélecteurs** - | - -- Facultatif - | - -- liste - | - -- Les sélecteurs permettant d'obtenir uniquement les paramètres spécifiés en sortie. - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - Sortir - | - -- Type - | - -- Exemple - | -
|---|---|---|
| - succès - | - -- booléen - | - -- `true/false` - | -
| - Saisir - | - -- optionnalité - | - -- Type - | - -- Description - | -
|---|---|---|---|
| - **horodatage** - | - -- Requis - | - -- int - | - -- Un entier représentant l'horodatage de l'époque. Notez que les époques UNIX correspondent au nombre de secondes écoulées depuis le 1er janvier 1970 à minuit UTC (00:00). - | -
| - **horodatageUnité** - | - -- Facultatif - | - -- chaîne - | - -- Une chaîne de caractères représentant l'unité de l'horodatage fourni. Valeurs acceptables : SECONDES, MILLISECONDES (PAR DÉFAUT) - | -
| - **fuseau horaireId** - | - -- Facultatif - | - -- chaîne - | - -- Chaîne de caractères représentant le fuseau horaire de la date et de l'heure souhaitées (par défaut : UTC). - | -
| - **modèle** - | - -- Facultatif - | - -- chaîne - | - -- Chaîne de caractères représentant le format de date et d'heure souhaité, par défaut : ISO-8601 - | -
| - Champ - | - -- optionnalité - | - -- Type de données - | - -- Description - | -
|---|---|---|---|
| - **date** - | - -- Requis - | - -- chaîne - | - -- Représentation sous forme de chaîne de caractères de la date. - | -
| - **temps** - | - -- Requis - | - -- chaîne - | - -- Une représentation sous forme de chaîne de caractères du temps. - | -
| - **date et heure** - | - -- Requis - | - -- chaîne - | - -- Représentation sous forme de chaîne de caractères d'une date et heure. - | -
| - **fuseau horaire** - | - -- Requis - | - -- carte - | - -- Représentation cartographique de l'identifiant et de l'abréviation du fuseau horaire. - | -
| - Exemple - | - -- Workflow Entrée - | - -- Sorties - | -
|---|---|---|
| - ```yaml - name: from_epoch - - workflowInputs: - timestamp: - type: Int - timestampUnit: - type: String - timezoneId: - type: String - pattern: - type: String - - steps: - - name: epochTime - type: action - action: utils.datetime.fromEpoch - version: 1 - inputs: - timestamp: ${{ .workflowInputs.timestamp }} - timezoneId: ${{ .workflowInputs.timezoneId }} - pattern: ${{ .workflowInputs.pattern }} - timestampUnit: ${{ .workflowInputs.timestampUnit }} - ``` - | - -- ```json - mutation { - workflowAutomationStartWorkflowRun( - scope: { type: ACCOUNT id: "12345678" } - definition: { name: "from_epoch" } - workflowInputs: [ - {key: "timestamp", value: "1738236424003"} - {key: "timestampUnit", value: "MILLISECONDS"} - {key: "pattern", value: "yyyy-mm-dd HH:SS"} - {key: "timezoneId", value: "Asia/Kolkata"} - ] - ) { - runId - } - } - ``` - | - -- ```json - { - "date": "2025-01-30", - "time": "16:57:04.003" - "datetime": "2025-01-30 16:00", - "timezone": { - "abbreviation": "IST", - "id": "Asia/Kolkata" - } - } - ``` - | -
| - Saisir - | - -- optionnalité - | - -- Type - | - -- Description - | -
|---|---|---|---|
| - **données** - | - -- Requis - | - -- n'importe lequel - | - -- Une chaîne de caractères représentant des données à transformer en CSV, généralement une chaîne JSON ou une carte. - | -
| - Champ - | - -- optionnalité - | - -- Type de données - | - -- Description - | -
|---|---|---|---|
| - **csv** - | - -- Requis - | - -- chaîne - | - -- Une représentation CSV des données reçues. - | -
| - Exemple - | - -- Workflow Entrée - | - -- Sorties - | -
|---|---|---|
| - ```json - name: nrqltocsv - - steps: - - name: queryForLog - type: action - action: newrelic.nrql.query - version: 1 - inputs: - accountIds: ['${{ .workflowInputs.accountId }}'] - query: ${{ .workflowInputs.nrql }} - - - name: csv1 - type: action - action: utils.transform.toCSV - version: 1 - inputs: - data: ${{ .steps.queryForLog.outputs.results | tostring }} - ``` - | - -- ```json - mutation { - startWorkflowRun( - scope: { type: ACCOUNT id: "12345678" } - definition: { - name: "nrqltocsv", - } - workflowInputs: [ - {key: "accountId" value: "12345678"} - {key: "nrql" value: "FROM TransactionError SELECT error.message, error.class, transactionName, request.uri, query WHERE appName like 'my-app-1%' AND error.expected IS FALSE SINCE 1 hour ago LIMIT 50"} - ] - ) - { runId } - } - ``` - | - -- |
| - Saisir - | - -- optionnalité - | - -- Type de données - | - -- Description - | -
|---|---|---|---|
| - - | - - | - |
| - Champ - | - -- Type de données - | - -- Description - | -
|---|---|---|
| - **uuid** - | - -- chaîne - | - -- |
| - Exemple - | - -- Workflow Entrée - | - -- Sorties - | -
|---|---|---|
| - - |
- nom : générerUUID mesures: - - * nom : generateUUID type : action action : utils.uuid.generate version : 1 - |
-
- - ```json - { - "uuid": "c76bd606-5eaa-42bb-a847-4221fb49f83c", - } - ``` - | -
| - 入力フィールド - | - -- オプション性 - | - -- タイプ - | - -- 例 - | -
|---|---|---|---|
| - **トークン** - | - -- 必須 - | - -- シークレット - | - -- `${{ :secrets:slackToken }}` - | -
| - **チャネル** - | - -- 必須 - | - -- ストリング - | - -- `my-slack-channel` - | -
| - **テキスト** - | - -- 必須 - | - -- ストリング - | - -- `Hello World!` - | -
| - **スレッドT** - | - -- オプション - | - -- ストリング - | - -
- ` |
-
| - **添付ファイル** - | - -- オプション - | - -- マップ - | - -- |
| - **添付ファイル.ファイル名** - | - -- 必須 - | - -- ストリング - | - -- `file.txt` - | -
| - **添付ファイルの内容** - | - -- 必須 - | - -- ストリング - | - -- `Hello\nWorld!` - | -
| - 出力フィールド - | - -- タイプ - | - -- 例 - | -
|---|---|---|
| - **スレッドT** - | - -- ストリング - | - -
- ` |
-
| - **チャンネルID** - | - -- ストリング - | - -
- ` |
-
| - ワークフローの例 - | -
|---|
| - ```yaml - name: SendMessage - - steps: - - name: send_slack_message - type: action - action: slack.chat.postMessage - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channel: ${{ .workflowInputs.channel }} - text: ${{ .workflowInputs.text }} - ``` - - **予想される入力:** - - ```json - { - "inputs": [ - { - "key" : "channel", - "value" : "my-channel" - }, - { - "key" : "text", - "value" : "This is my message *with bold text* and `code backticks`" - } - ] - } - ``` - - **期待される出力:** - - ```json - [ - { - "threadTs": "1718897637.400609", - "channelID": "C063JK1RHN1" - } - ] - ``` - | -
| - ワークフローの例 - | -
|---|
| - ```yaml - name: SendFileMessage - - steps: - - name: postCsv - type: action - action: slack.chat.postMessage - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channel: my-channel - text: "Please find the attached file:" - attachment: - filename: 'file.txt' - content: "Hello\nWorld!" - ``` - - **期待される出力:** - - ```json - [ - { - "threadTs": "1718897637.400609", - "channelID": "C063JK1RHN1" - } - ] - ``` - | -
| - 入力フィールド - | - -- オプション性 - | - -- タイプ - | - -- 例 - | -
|---|---|---|---|
| - **トークン** - | - -- 必須 - | - -- シークレット - | - -- `${{ :secrets:slackToken }}` - | -
| - **チャンネルID** - | - -- 必須 - | - -- ストリング - | - -- `C063JK1RHN1` - | -
| - **タイムアウト** - | - -- オプション - | - -- int - | - -- 60 - | -
| - **スレッドT** - | - -- 必須 - | - -- ストリング - | - -
- ` |
-
| - **セレクター** - | - -- オプション - | - -- リスト - | - -- `[{\"name\": \"reactions\", \"expression\": \".reactions \"}]` - | -
| - 出力フィールド - | - -- タイプ - | - -- 例 - | -
|---|---|---|
| - **反応** - | - -- リスト - | - -
- `
|
-
| - ワークフローの例 - | -
|---|
| - ```yaml - name: GetReactions - - steps: - - name: getReactions - type: action - action: slack.chat.getReactions - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channelID: ${{ .steps.promptUser.outputs.channelID }} - threadTs: ${{ .steps.promptUser.outputs.threadTs }} - timeout: ${{ .workflowInputs.timeout }} - selectors: ${{ .workflowInputs.selectors }} - ``` - - **予想される入力:** - - ```json - { - "inputs": [ - { - "key" : "channelID", - "value" : "C063JK1RHN1" - }, - { - "key" : "threadTs", - "value" : "1718897637.400609" - }, - { - "key" : "selectors", - "value" : "[{\"name\": \"reactions\", \"expression\": \".reactions \"}]" - } - ] - } - ``` - - **期待される出力:** - - ```json - [ - { - "name": "grinning", - "users": [ - "W222222" - ], - "count": 1 - }, - { - "name": "question", - "users": [ - "W333333" - ], - "count": 1 - } - ] - ``` - - またはタイムアウトになった場合: - - ```json - [] - ``` - | -
| - 入力フィールド - | - -- オプション性 - | - -- タイプ - | - -- 説明 - | -
|---|---|---|---|
| - **url** - | - -- 必須 - | - -- 弦 - | - -- リクエストのターゲット URL。スキームには次の内容が含まれている必要があります。 - - `https://example.com` - | -
| - **urlパラメータ** - | - -- オプション - | - -- 地図 - | - -- URL に追加するのは間違いありません。 文字列化された JSON オブジェクトを受け取ります。 - | -
| - **ヘッダ** - | - -- オプション - | - -- 地図 - | - -- リクエストに追加するヘッダー。文字列化された JSON オブジェクトを受け取ります。 - | -
| - **セレクター** - | - -- オプション - | - -- リスト - | - -- 指定されたもののみを出力として取得するセレクター。 - | -
| - 出力フィールド - | - -- タイプ - | - -- 説明 - | -
|---|---|---|
| - **レスポンスボディ** - | - -- 弦 - | - -- 応答の本文。 - | -
| - **ステータスコード** - | - -- 整数 - | - -- 応答の HTTP ステータス コード。 - | -
| - ワークフローの例 - | -
|---|
| - ```yaml - name: httpGetTest - description: 'Performs an HTTP GET request to retrieve data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - steps: - - name: query - type: action - action: http.get - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - next: end - ``` - - **入力例:** - - ```json - { - "url": "https://example.com", - "urlParams": "{\"foo\": \"bar\"}", - "headers": "{\"baz\": \"bat\"}" - } - ``` - - **出力例:** - - ```json - { - "responseBody": "\n...\n", - "statusCode": 200 - } - ``` - | -
| - 入力フィールド - | - -- オプション性 - | - -- タイプ - | - -- 説明 - | -
|---|---|---|---|
| - **url** - | - -- 必須 - | - -- 弦 - | - -- リクエストのターゲット URL。スキームには次の内容が含まれている必要があります。 - - `https://example.com` - | -
| - **urlパラメータ** - | - -- オプション - | - -- 地図 - | - -- URL に追加するのは間違いありません。 文字列化された JSON オブジェクトを受け取ります。 - | -
| - **ヘッダ** - | - -- オプション - | - -- 地図 - | - -- リクエストに追加するヘッダー。文字列化された JSON オブジェクトを受け取ります。 - | -
| - **体** - | - -- オプション - | - -- 弦 - | - -- リクエスト本体。 - | -
| - **セレクター** - | - -- オプション - | - -- リスト - | - -- 指定されたもののみを出力として取得するセレクター。 - | -
| - 出力フィールド - | - -- タイプ - | - -- 説明 - | -
|---|---|---|
| - **レスポンスボディ** - | - -- 弦 - | - -- 応答の本文。 - | -
| - **ステータスコード** - | - -- 整数 - | - -- 応答の HTTP ステータス コード。 - | -
| - ワークフローの例 - | -
|---|
| - ```yaml - name: httpPostTest - description: 'Performs an HTTP POST request to send data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - body: - type: String - steps: - - name: query - type: action - action: http.post - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - body: ${{ .workflowInputs.body }} - next: end - ``` - - **入力例:** - - ```json - { - "url": "https://example.com", - "headers": "{\"Content-Type\":\"application/json\"}", - "urlParams": "{\"foo\": \"bar\"}", - "body": "{\"foo\": \"bar\"}" - } - ``` - - **出力例:** - - ```json - { - "responseBody": "", - "statusCode": 200 - } - ``` - | -
| - 入力フィールド - | - -- オプション性 - | - -- タイプ - | - -- 説明 - | -
|---|---|---|---|
| - **url** - | - -- 必須 - | - -- 弦 - | - -- リクエストのターゲット URL。URL にはスキーム (例: https:// または http://) を含める必要があります。例: - - `https://example.com` - | -
| - **urlパラメータ** - | - -- オプション - | - -- 地図 - | - -- URL に追加するのは間違いありません。 文字列化された JSON オブジェクトを受け取ります。 - | -
| - **ヘッダ** - | - -- オプション - | - -- 地図 - | - -- リクエストに追加するヘッダー。文字列化された JSON オブジェクトを受け取ります。 - | -
| - **体** - | - -- オプション - | - -- 弦 - | - -- リクエスト本体。 - | -
| - **セレクター** - | - -- オプション - | - -- リスト - | - -- 指定されたもののみを出力として取得するセレクター。 - | -
| - 出力フィールド - | - -- タイプ - | - -- 説明 - | -
|---|---|---|
| - **レスポンスボディ** - | - -- 弦 - | - -- 応答の本文。 - | -
| - **ステータスコード** - | - -- 整数 - | - -- 応答の HTTP ステータス コード。 - | -
| - ワークフローの例 - | -
|---|
| - ```yaml - name: httpPutTest - description: 'Performs an HTTP PUT request to update data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - body: - type: String - selectors: - type: String - steps: - - name: query - type: action - action: http.put - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - body: ${{ .workflowInputs.body }} - selectors: ${{ .workflowInputs.selectors }} - next: end - ``` - - **入力例:** - - ```json - { - "url": "https://example.com", - "headers": "{\"Content-Type\":\"application/json\"}", - "urlParams": "{\"foo\": \"bar\"}", - "body": "{\"foo\": \"bar\"}", - "selectors": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" - } - ``` - - **出力例:** - - ```json - { - "responseBody": "", - "statusCode": 200 - } - ``` - | -
| - 入力フィールド - | - -- オプション性 - | - -- タイプ - | - -- 説明 - | -
|---|---|---|---|
| - **url** - | - -- 必須 - | - -- 弦 - | - -- リクエストのターゲット URL。URL にはスキーム (例: https:// または http://) を含める必要があります。例: - - `https://example.com` - | -
| - **urlパラメータ** - | - -- オプション - | - -- 地図 - | - -- URL に追加するのは間違いありません。 文字列化された JSON オブジェクトを受け取ります。 - | -
| - **ヘッダ** - | - -- オプション - | - -- 地図 - | - -- リクエストに追加するヘッダー。文字列化された JSON オブジェクトを受け取ります。 - | -
| - **セレクター** - | - -- オプション - | - -- リスト - | - -- 指定されたもののみを出力として取得するセレクター。 - | -
| - 出力フィールド - | - -- タイプ - | - -- 説明 - | -
|---|---|---|
| - **レスポンスボディ** - | - -- 弦 - | - -- 応答の本文。 - | -
| - **ステータスコード** - | - -- 整数 - | - -- 応答の HTTP ステータス コード。 - | -
| - ワークフローの例 - | -
|---|
| - ```yaml - name: httpDeleteTest - description: 'Performs an HTTP DELETE request to remove data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - selectors: - type: String - steps: - - name: query - type: action - action: http.delete - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - selectors: ${{ .workflowInputs.selectors }} - next: end - ``` - - **入力例:** - - ```json - { - "url": "https://example.com", - "urlParams": "{\"foo\": \"bar\"}", - "headers": "{\"baz\": \"bat\"}", - "selectors": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" - } - ``` - - **出力例:** - - ```json - { - "responseBody": "\n...\n", - "statusCode": 200 - } - ``` - | -
| - カテゴリー - | - -- アクション - | - -- 目的 - | -
|---|---|---|
| - **データの取り込み** - | - -- [カスタムイベントを送信する](#newrelicingestsendevents) - | - -- カスタムイベントをNew Relicに送信します。 - | -
| - **データの取り込み** - | - -- [ログを送信](#newrelicingestsendlogs) - | - -- ログデータを New Relic に送信します。 - | -
| - **NerdGraph** - | - -- [GraphQL書き込みまたはミューテーションを実行する](#newrelicnerdgraphexecute) - | - -- NerdGraph API に対して GraphQL コマンドを実行します。 - | -
| - **クエリ** - | - -- [NRDB書き込みを実行する](#newrelicnrdbquery) - | - -- クロスアカウント NRQL クエリを実行します。 - | -
| - **通知** - | - -- [通知を送信](#newrelicnotificationsend) - | - -- New Relic の宛先に通知を送信します。 - | -
| - 入力フィールド - | - -- オプション性 - | - -- タイプ - | - -- 例 - | -
|---|---|---|---|
| - **属性** - | - -- オプション - | - -- マップ - | - -- `"{\"page\": \"1\", \"limit\": \"10\"}"` - | -
| - **イベント** - | - -- 必須 - | - -- リスト - | - -- `"[{\"eventType\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"eventType\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]` - | -
| - **ライセンスキー** - | - -- オプション - | - -- ストリング - | - -- `"{{ .secrets.secretName }}"` - | -
| - **セレクター** - | - -- オプション - | - -- リスト - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - 出力フィールド - | - -- タイプ - | - -- 例 - | -
|---|---|---|
| - **成功** - | - -- ブール値 - | - -- `true` - | -
| - **エラーメッセージ** - | - -- ストリング - | - -- `"Error message if operation failed"` - | -
| - ワークフローの例 - | -
|---|
| - ```yaml - name: heartbeat_newrelicIngestSendEvents - - workflowInputs: - cellName: - type: String - - steps: - - name: runAction - type: action - action: newrelic.ingest.sendEvents - version: 1 - inputs: - attributes: - colour: red - id: 1234 - events: - - eventType: HeartBeat - test: "OK" - attributes: - foo: bar - - eventType: HeartBeat1234 - test: "OK1234" - attributes: - foo: bar - - eventType: HeartBeat12345 - test: "OK12345" - attributes: - foo: bar - colour: yellow - - eventType: HeartBeat12345678 - test: "OK12345678" - selectors: - - name: success - expression: ".success" - ``` - - **期待される出力:** - - ```yaml - { - "success": true - } - ``` - - **イベントを取得:** - - ワークフローを正常に実行した後、ワークフローを実行したアカウントでクエリを実行して、関連付けられたイベントを取得できます。 - - ```sql - SELECT * FROM HeartBeat - ``` - | -
| - 入力フィールド - | - -- オプション性 - | - -- タイプ - | - -- 例 - | -
|---|---|---|---|
| - **属性** - | - -- オプション - | - -- マップ - | - -- `"{\"page\": \"1\", \"limit\": \"10\"}"` - | -
| - **ログ** - | - -- 必須 - | - -- リスト - | - -- `"[{\"message\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"message\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]"` - | -
| - **ライセンスキー** - | - -- オプション - | - -- ストリング - | - -- `"{{ .secrets.secretName }}"` - | -
| - **セレクター** - | - -- オプション - | - -- リスト - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - 出力フィールド - | - -- タイプ - | - -- 例 - | -
|---|---|---|
| - **成功** - | - -- ブール値 - | - -- `true` - | -
| - **エラーメッセージ** - | - -- ストリング - | - -- `"Error message if operation failed"` - | -
| - ワークフローの例 - | -
|---|
| - ```yaml - name: heartbeat_newrelicIngestSendLogs - - workflowInputs: - cellName: - type: String - - steps: - - name: runAction - type: action - action: newrelic.ingest.sendLogs - version: 1 - inputs: - attributes: - colour: red - id: 1234 - logs: - - message: 'Heartbeat sendLogs Action Test Message' - attributes: - foo: bar - - message: 'HeartBeat1234' - attributes: - foo: bar - - message: 'HeartBeat12345' - attributes: - foo: bar - colour: yellow - - message: 'HeartBeat12345678' - selectors: - - name: success - expression: ".success" - ``` - - **期待される出力:** - - ```yaml - { - "success": true - } - ``` - - **ログを取得:** - - ワークフローを正常に実行した後、ワークフローを実行したアカウントでクエリを実行して、関連するログを取得できます。 - - ```sql - SELECT * FROM Log - ``` - | -
| - 入力 - | - -- オプション性 - | - -- タイプ - | - -- 説明 - | - -- 例 - | -
|---|---|---|---|---|
| - **グラフQL** - | - -- 必須 - | - -- ストリング - | - -- GraphQL 構文。コマンドの構築とテストにはGraphiQLを使用する必要があります - | - -- |
| - **変数** - | - -- 必須 - | - -- map[string]any - | - -- GraphQLステートメントで使用する任意のキーの値ペア変数。 - | - -- |
| - **セレクター** - | - -- オプション - | - -- リスト - | - -- 指定された唯一のものを出力として取得するセレクター。 - | - -- ```yaml - { - "data": { - "actor": { - "user": { - "name": "" - } - } - } - ``` - | -
| - 出力 - | - -- タイプ - | - -- 例 - | -
|---|---|---|
| - **データ** - | - -- map[string]any: NerdGraphレスポンスの - - `data` - - プロパティの内容。 - | - -- ```yaml - steps: - - name: currentUserId - type: action - action: newrelic.nerdgraph.execute - version: 1 - inputs: - graphql: | - query userId { - currentUser { - id - } - } - - name: sayHello - type: action - action: example.messaging.sayHello - version: 1 - inputs: - name: ${{ .steps.currentUserId.outputs.data.currentUser.id }} - ``` - | -
| - 例 - | - -- 出力 - | - -- イベントを取得する - | -
|---|---|---|
| - ```json - name: testLog - - steps: - - name: logStep - type: action - action: newrelic.ingest.sendLogs - version: 1 - inputs: - logs: - - message: 'Hello World' - ``` - | - -- ```yaml - { - "success": true - } - ``` - | - -- ワークフローを実行したアカウントでクエリを実行すると、関連付けられたイベントを取得できます。 - - ```yaml - SELECT message FROM Log WHERE allColumnSearch('Hello World', insensitive: true) SINCE 30 minutes ago - ``` - | -
| - 入力 - | - -- オプション性 - | - -- タイプ - | - -- 説明 - | - -- 例 - | -
|---|---|---|---|---|
| - **クエリ** - | - -- 必須 - | - -- ストリング - | - -- NRQL クエリ ステートメント。 - | - -- |
| - **アカウント ID** - | - -- オプション - | - -- intのリスト - | - -- **New Relic Account ID** - - \[New Relic アカウント ID]入力は、クエリが実行されるターゲット アカウントを指定できるターゲット ID のリストです。この値が入力として提供されない場合、クエリはワークフローの実行アカウントに関連付けられたアカウントに対して自動的に実行されます。 - | - -- |
| - **セレクター** - | - -- オプション - | - -- リスト - | - -- 指定された唯一のものを出力として取得するセレクター。 - | - -- ```json - steps: - - name: queryForLog - type: action - action: newrelic.nrdb.query - version: 1 - inputs: - accountIds: [12345] - query: FROM Log SELECT * WHERE message LIKE 'DEMO%' - selectors: - - name: resultsAsString - expression: '.results | tostring' - ``` - | -
| - 出力 - | - -- タイプ - | - -- 例 - | -
|---|---|---|
| - **results** - - : クエリの結果を含むオブジェクトの配列。 - | - -- - | - ```yaml - { - results=[ - { message=[INFO] - Workflow: test has ended, messageId=39af98 }, - { message=[INFO] - Workflow: test - Step query has started, messageId=649c612 }, - ... - ] - } - ``` - | -
| - 入力 - | - -- オプション性 - | - -- タイプ - | - -- 説明 - | - -- 例 - | -
|---|---|---|---|---|
| - **タイプ** - | - -- 必須 - | - -- ストリング - | - -- NewRelicの宛先の種類 - | - -- `slack` - | -
| - **宛先ID** - | - -- 必須 - | - -- 弦 - | - -- NewRelic の宛先に関連付けられた DestinationId。 - | - -- `123e4567-e89b-12d3-a456-426614174000` - | -
| - **パラメーター** - | - -- 必須 - | - -- マップ - | - -- 選択した宛先タイプに通知を送信するために必要なフィールド。 - | - -- `{\"channel\": \"${{ YOUR_CHANNEL }}\", \"text\": \"Enter your text here\"}` - | -
| - **セレクター** - | - -- オプション - | - -- リスト - | - -- 指定された唯一のものを出力として取得するセレクター。 - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - 出力 - | - -- タイプ - | - -- 例 - | -
|---|---|---|
| - 成功 - | - -- ブール値 - | - -- `true/false` - | -
| - 入力 - | - -- オプション性 - | - -- タイプ - | - -- 説明 - | -
|---|---|---|---|
| - **タイムスタンプ** - | - -- 必須 - | - -- int - | - -- エポックタイムスタンプを表す整数。UNIXエポックは1970年1月1日午前0時(UTC)からの秒数であることに注意してください。 - | -
| - **タイムスタンプ単位** - | - -- オプション - | - -- ストリング - | - -- 提供されたタイムスタンプの単位を表す文字列。許容値: SECONDS、MILLISECONDS(デフォルト) - | -
| - **タイムゾーンID** - | - -- オプション - | - -- ストリング - | - -- 希望する日付/時刻のタイムゾーンを表す文字列。デフォルト: UTC - | -
| - **パターン** - | - -- オプション - | - -- ストリング - | - -- 希望する日時のパターンを表す文字列。デフォルト: ISO-8601 - | -
| - フィールド - | - -- オプション性 - | - -- データ型 - | - -- 説明 - | -
|---|---|---|---|
| - **日付** - | - -- 必須 - | - -- ストリング - | - -- 日付の文字列表現。 - | -
| - **時間** - | - -- 必須 - | - -- ストリング - | - -- 時間の文字列表現。 - | -
| - **データタイム** - | - -- 必須 - | - -- ストリング - | - -- 日時を文字列で表現します。 - | -
| - **タイムゾーン** - | - -- 必須 - | - -- マップ - | - -- timezoneId と略語のマップ表現。 - | -
| - 例 - | - -- ワークフロー入力 - | - -- 出力 - | -
|---|---|---|
| - ```yaml - name: from_epoch - - workflowInputs: - timestamp: - type: Int - timestampUnit: - type: String - timezoneId: - type: String - pattern: - type: String - - steps: - - name: epochTime - type: action - action: utils.datetime.fromEpoch - version: 1 - inputs: - timestamp: ${{ .workflowInputs.timestamp }} - timezoneId: ${{ .workflowInputs.timezoneId }} - pattern: ${{ .workflowInputs.pattern }} - timestampUnit: ${{ .workflowInputs.timestampUnit }} - ``` - | - -- ```json - mutation { - workflowAutomationStartWorkflowRun( - scope: { type: ACCOUNT id: "12345678" } - definition: { name: "from_epoch" } - workflowInputs: [ - {key: "timestamp", value: "1738236424003"} - {key: "timestampUnit", value: "MILLISECONDS"} - {key: "pattern", value: "yyyy-mm-dd HH:SS"} - {key: "timezoneId", value: "Asia/Kolkata"} - ] - ) { - runId - } - } - ``` - | - -- ```json - { - "date": "2025-01-30", - "time": "16:57:04.003" - "datetime": "2025-01-30 16:00", - "timezone": { - "abbreviation": "IST", - "id": "Asia/Kolkata" - } - } - ``` - | -
| - 入力 - | - -- オプション性 - | - -- タイプ - | - -- 説明 - | -
|---|---|---|---|
| - **データ** - | - -- 必須 - | - -- どんな - | - -- CSV に変換するデータを表す文字列。通常は JSON 文字列またはマップです。 - | -
| - フィールド - | - -- オプション性 - | - -- データ型 - | - -- 説明 - | -
|---|---|---|---|
| - **csv** - | - -- 必須 - | - -- ストリング - | - -- 受信したデータの CSV 表現。 - | -
| - 例 - | - -- ワークフロー入力 - | - -- 出力 - | -
|---|---|---|
| - ```json - name: nrqltocsv - - steps: - - name: queryForLog - type: action - action: newrelic.nrql.query - version: 1 - inputs: - accountIds: ['${{ .workflowInputs.accountId }}'] - query: ${{ .workflowInputs.nrql }} - - - name: csv1 - type: action - action: utils.transform.toCSV - version: 1 - inputs: - data: ${{ .steps.queryForLog.outputs.results | tostring }} - ``` - | - -- ```json - mutation { - startWorkflowRun( - scope: { type: ACCOUNT id: "12345678" } - definition: { - name: "nrqltocsv", - } - workflowInputs: [ - {key: "accountId" value: "12345678"} - {key: "nrql" value: "FROM TransactionError SELECT error.message, error.class, transactionName, request.uri, query WHERE appName like 'my-app-1%' AND error.expected IS FALSE SINCE 1 hour ago LIMIT 50"} - ] - ) - { runId } - } - ``` - | - -- |
| - 入力 - | - -- オプション性 - | - -- データ型 - | - -- 説明 - | -
|---|---|---|---|
| - - | - - | - |
| - フィールド - | - -- データ型 - | - -- 説明 - | -
|---|---|---|
| - **uuid** - | - -- ストリング - | - -- |
| - 例 - | - -- ワークフロー入力 - | - -- 出力 - | -
|---|---|---|
| - - |
- 名前: generateUUID 手順: - - * 名前: generateUUID タイプ: アクション アクション: utils.uuid.generate バージョン: 1 - |
-
- - ```json - { - "uuid": "c76bd606-5eaa-42bb-a847-4221fb49f83c", - } - ``` - | -
| - 입력 필드 - | - -- 선택성 - | - -- 유형 - | - -- 예시 - | -
|---|---|---|---|
| - **토큰** - | - -- 필수의 - | - -- 비밀 - | - -- `${{ :secrets:slackToken }}` - | -
| - **채널** - | - -- 필수의 - | - -- 끈 - | - -- `my-slack-channel` - | -
| - **텍스트** - | - -- 필수의 - | - -- 끈 - | - -- `Hello World!` - | -
| - **스레드** - | - -- 선택 과목 - | - -- 끈 - | - -
- ` |
-
| - **부착** - | - -- 선택 과목 - | - -- 지도 - | - -- |
| - **첨부 파일 이름** - | - -- 필수의 - | - -- 끈 - | - -- `file.txt` - | -
| - **첨부 파일.내용** - | - -- 필수의 - | - -- 끈 - | - -- `Hello\nWorld!` - | -
| - 출력 필드 - | - -- 유형 - | - -- 예시 - | -
|---|---|---|
| - **스레드** - | - -- 끈 - | - -
- ` |
-
| - **채널ID** - | - -- 끈 - | - -
- ` |
-
| - 워크플로 예 - | -
|---|
| - ```yaml - name: SendMessage - - steps: - - name: send_slack_message - type: action - action: slack.chat.postMessage - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channel: ${{ .workflowInputs.channel }} - text: ${{ .workflowInputs.text }} - ``` - - **예상 입력:** - - ```json - { - "inputs": [ - { - "key" : "channel", - "value" : "my-channel" - }, - { - "key" : "text", - "value" : "This is my message *with bold text* and `code backticks`" - } - ] - } - ``` - - **예상 출력:** - - ```json - [ - { - "threadTs": "1718897637.400609", - "channelID": "C063JK1RHN1" - } - ] - ``` - | -
| - 워크플로 예 - | -
|---|
| - ```yaml - name: SendFileMessage - - steps: - - name: postCsv - type: action - action: slack.chat.postMessage - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channel: my-channel - text: "Please find the attached file:" - attachment: - filename: 'file.txt' - content: "Hello\nWorld!" - ``` - - **예상 출력:** - - ```json - [ - { - "threadTs": "1718897637.400609", - "channelID": "C063JK1RHN1" - } - ] - ``` - | -
| - 입력 필드 - | - -- 선택성 - | - -- 유형 - | - -- 예시 - | -
|---|---|---|---|
| - **토큰** - | - -- 필수의 - | - -- 비밀 - | - -- `${{ :secrets:slackToken }}` - | -
| - **채널ID** - | - -- 필수의 - | - -- 끈 - | - -- `C063JK1RHN1` - | -
| - **시간 초과** - | - -- 선택 과목 - | - -- 정수 - | - -- 60 - | -
| - **스레드** - | - -- 필수의 - | - -- 끈 - | - -
- ` |
-
| - **선택기** - | - -- 선택 과목 - | - -- 목록 - | - -- `[{\"name\": \"reactions\", \"expression\": \".reactions \"}]` - | -
| - 출력 필드 - | - -- 유형 - | - -- 예시 - | -
|---|---|---|
| - **반응** - | - -- 목록 - | - -
- `
|
-
| - 워크플로 예 - | -
|---|
| - ```yaml - name: GetReactions - - steps: - - name: getReactions - type: action - action: slack.chat.getReactions - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channelID: ${{ .steps.promptUser.outputs.channelID }} - threadTs: ${{ .steps.promptUser.outputs.threadTs }} - timeout: ${{ .workflowInputs.timeout }} - selectors: ${{ .workflowInputs.selectors }} - ``` - - **예상 입력:** - - ```json - { - "inputs": [ - { - "key" : "channelID", - "value" : "C063JK1RHN1" - }, - { - "key" : "threadTs", - "value" : "1718897637.400609" - }, - { - "key" : "selectors", - "value" : "[{\"name\": \"reactions\", \"expression\": \".reactions \"}]" - } - ] - } - ``` - - **예상 출력:** - - ```json - [ - { - "name": "grinning", - "users": [ - "W222222" - ], - "count": 1 - }, - { - "name": "question", - "users": [ - "W333333" - ], - "count": 1 - } - ] - ``` - - 또는 시간이 초과된 경우: - - ```json - [] - ``` - | -
| - 입력 필드 - | - -- 선택성 - | - -- 유형 - | - -- 설명 - | -
|---|---|---|---|
| - **URL** - | - -- 필수의 - | - -- 문자열 - | - -- 요청에 대한 타겟 URL입니다. 계획에는 다음이 포함되어야 합니다. - - `https://example.com` - | -
| - **url 매개변수** - | - -- 선택 과목 - | - -- 지도 - | - -- URL에 추가하려면 쿼리를 수행해야 합니다. 문자열화된 JSON 객체를 사용합니다. - | -
| - **헤더** - | - -- 선택 과목 - | - -- 지도 - | - -- 요청에 추가할 헤더입니다. 문자열화된 JSON 객체를 사용합니다. - | -
| - **선택기** - | - -- 선택 과목 - | - -- 목록 - | - -- 지정된 음색만 출력으로 가져오는 선택기입니다. - | -
| - 출력 필드 - | - -- 유형 - | - -- 설명 - | -
|---|---|---|
| - **응답 본문** - | - -- 문자열 - | - -- 응답의 본문. - | -
| - **상태 코드** - | - -- 정수 - | - -- 응답의 HTTP 상태 코드입니다. - | -
| - 워크플로 예 - | -
|---|
| - ```yaml - name: httpGetTest - description: 'Performs an HTTP GET request to retrieve data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - steps: - - name: query - type: action - action: http.get - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - next: end - ``` - - **입력 예시:** - - ```json - { - "url": "https://example.com", - "urlParams": "{\"foo\": \"bar\"}", - "headers": "{\"baz\": \"bat\"}" - } - ``` - - **출력 예시:** - - ```json - { - "responseBody": "\n...\n", - "statusCode": 200 - } - ``` - | -
| - 입력 필드 - | - -- 선택성 - | - -- 유형 - | - -- 설명 - | -
|---|---|---|---|
| - **URL** - | - -- 필수의 - | - -- 문자열 - | - -- 요청에 대한 타겟 URL입니다. 계획에는 다음이 포함되어야 합니다. - - `https://example.com` - | -
| - **url 매개변수** - | - -- 선택 과목 - | - -- 지도 - | - -- URL에 추가하려면 쿼리를 수행해야 합니다. 문자열화된 JSON 객체를 사용합니다. - | -
| - **헤더** - | - -- 선택 과목 - | - -- 지도 - | - -- 요청에 추가할 헤더입니다. 문자열화된 JSON 객체를 사용합니다. - | -
| - **몸** - | - -- 선택 과목 - | - -- 문자열 - | - -- 요청 본문. - | -
| - **선택기** - | - -- 선택 과목 - | - -- 목록 - | - -- 지정된 음색만 출력으로 가져오는 선택기입니다. - | -
| - 출력 필드 - | - -- 유형 - | - -- 설명 - | -
|---|---|---|
| - **응답 본문** - | - -- 문자열 - | - -- 응답의 본문. - | -
| - **상태 코드** - | - -- 정수 - | - -- 응답의 HTTP 상태 코드입니다. - | -
| - 워크플로 예 - | -
|---|
| - ```yaml - name: httpPostTest - description: 'Performs an HTTP POST request to send data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - body: - type: String - steps: - - name: query - type: action - action: http.post - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - body: ${{ .workflowInputs.body }} - next: end - ``` - - **입력 예시:** - - ```json - { - "url": "https://example.com", - "headers": "{\"Content-Type\":\"application/json\"}", - "urlParams": "{\"foo\": \"bar\"}", - "body": "{\"foo\": \"bar\"}" - } - ``` - - **출력 예시:** - - ```json - { - "responseBody": "", - "statusCode": 200 - } - ``` - | -
| - 입력 필드 - | - -- 선택성 - | - -- 유형 - | - -- 설명 - | -
|---|---|---|---|
| - **URL** - | - -- 필수의 - | - -- 문자열 - | - -- 요청에 대한 타겟 URL입니다. URL에는 스키마(예: https:// 또는 http://)가 포함되어야 합니다. 예: - - `https://example.com` - | -
| - **url 매개변수** - | - -- 선택 과목 - | - -- 지도 - | - -- URL에 추가하려면 쿼리를 수행해야 합니다. 문자열화된 JSON 객체를 사용합니다. - | -
| - **헤더** - | - -- 선택 과목 - | - -- 지도 - | - -- 요청에 추가할 헤더입니다. 문자열화된 JSON 객체를 사용합니다. - | -
| - **몸** - | - -- 선택 과목 - | - -- 문자열 - | - -- 요청 본문. - | -
| - **선택기** - | - -- 선택 과목 - | - -- 목록 - | - -- 지정된 음색만 출력으로 가져오는 선택기입니다. - | -
| - 출력 필드 - | - -- 유형 - | - -- 설명 - | -
|---|---|---|
| - **응답 본문** - | - -- 문자열 - | - -- 응답의 본문. - | -
| - **상태 코드** - | - -- 정수 - | - -- 응답의 HTTP 상태 코드입니다. - | -
| - 워크플로 예 - | -
|---|
| - ```yaml - name: httpPutTest - description: 'Performs an HTTP PUT request to update data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - body: - type: String - selectors: - type: String - steps: - - name: query - type: action - action: http.put - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - body: ${{ .workflowInputs.body }} - selectors: ${{ .workflowInputs.selectors }} - next: end - ``` - - **입력 예시:** - - ```json - { - "url": "https://example.com", - "headers": "{\"Content-Type\":\"application/json\"}", - "urlParams": "{\"foo\": \"bar\"}", - "body": "{\"foo\": \"bar\"}", - "selectors": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" - } - ``` - - **출력 예시:** - - ```json - { - "responseBody": "", - "statusCode": 200 - } - ``` - | -
| - 입력 필드 - | - -- 선택성 - | - -- 유형 - | - -- 설명 - | -
|---|---|---|---|
| - **URL** - | - -- 필수의 - | - -- 문자열 - | - -- 요청에 대한 타겟 URL입니다. URL에는 스키마(예: https:// 또는 http://)가 포함되어야 합니다. 예: - - `https://example.com` - | -
| - **url 매개변수** - | - -- 선택 과목 - | - -- 지도 - | - -- URL에 추가하려면 쿼리를 수행해야 합니다. 문자열화된 JSON 객체를 사용합니다. - | -
| - **헤더** - | - -- 선택 과목 - | - -- 지도 - | - -- 요청에 추가할 헤더입니다. 문자열화된 JSON 객체를 사용합니다. - | -
| - **선택기** - | - -- 선택 과목 - | - -- 목록 - | - -- 지정된 음색만 출력으로 가져오는 선택기입니다. - | -
| - 출력 필드 - | - -- 유형 - | - -- 설명 - | -
|---|---|---|
| - **응답 본문** - | - -- 문자열 - | - -- 응답의 본문. - | -
| - **상태 코드** - | - -- 정수 - | - -- 응답의 HTTP 상태 코드입니다. - | -
| - 워크플로 예 - | -
|---|
| - ```yaml - name: httpDeleteTest - description: 'Performs an HTTP DELETE request to remove data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - selectors: - type: String - steps: - - name: query - type: action - action: http.delete - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - selectors: ${{ .workflowInputs.selectors }} - next: end - ``` - - **입력 예시:** - - ```json - { - "url": "https://example.com", - "urlParams": "{\"foo\": \"bar\"}", - "headers": "{\"baz\": \"bat\"}", - "selectors": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" - } - ``` - - **출력 예시:** - - ```json - { - "responseBody": "\n...\n", - "statusCode": 200 - } - ``` - | -
| - 범주 - | - -- 동작 - | - -- 목적 - | -
|---|---|---|
| - **데이터 수집** - | - -- [맞춤형 대시보드 보내기](#newrelicingestsendevents) - | - -- 커스텀 대시보드를 뉴렐릭에게 보내세요. - | -
| - **데이터 수집** - | - -- [로그 보내기](#newrelicingestsendlogs) - | - -- 뉴렐릭에게 로그인 데이터를 보냅니다. - | -
| - **너드그래프** - | - -- [GraphQL 쿼리 또는 뮤테이션 실행](#newrelicnerdgraphexecute) - | - -- NerdGraph API에 대해 GraphQL 명령을 실행합니다. - | -
| - **질문** - | - -- [NRDB 쿼리 실행](#newrelicnrdbquery) - | - -- 여러 계정의 NRQL 쿼리를 실행합니다. - | -
| - **알림** - | - -- [공지 보내기](#newrelicnotificationsend) - | - -- 공지를 뉴렐릭 목적지로 보냅니다. - | -
| - 입력 필드 - | - -- 선택성 - | - -- 유형 - | - -- 예시 - | -
|---|---|---|---|
| - **속성** - | - -- 선택 과목 - | - -- 지도 - | - -- `"{\"page\": \"1\", \"limit\": \"10\"}"` - | -
| - **이벤트** - | - -- 필수의 - | - -- 목록 - | - -- `"[{\"eventType\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"eventType\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]` - | -
| - **라이센스 키** - | - -- 선택 과목 - | - -- 끈 - | - -- `"{{ .secrets.secretName }}"` - | -
| - **선택기** - | - -- 선택 과목 - | - -- 목록 - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - 출력 필드 - | - -- 유형 - | - -- 예시 - | -
|---|---|---|
| - **성공** - | - -- 부울 - | - -- `true` - | -
| - **오류 메시지** - | - -- 끈 - | - -- `"Error message if operation failed"` - | -
| - 워크플로 예 - | -
|---|
| - ```yaml - name: heartbeat_newrelicIngestSendEvents - - workflowInputs: - cellName: - type: String - - steps: - - name: runAction - type: action - action: newrelic.ingest.sendEvents - version: 1 - inputs: - attributes: - colour: red - id: 1234 - events: - - eventType: HeartBeat - test: "OK" - attributes: - foo: bar - - eventType: HeartBeat1234 - test: "OK1234" - attributes: - foo: bar - - eventType: HeartBeat12345 - test: "OK12345" - attributes: - foo: bar - colour: yellow - - eventType: HeartBeat12345678 - test: "OK12345678" - selectors: - - name: success - expression: ".success" - ``` - - **예상 출력:** - - ```yaml - { - "success": true - } - ``` - - **이벤트 검색:** - - 워크플로우를 성공적으로 실행한 후 해당 이벤트를 실행한 계정에서 쿼리를 실행하면 관련 이벤트를 검색할 수 있습니다. - - ```sql - SELECT * FROM HeartBeat - ``` - | -
| - 입력 필드 - | - -- 선택성 - | - -- 유형 - | - -- 예시 - | -
|---|---|---|---|
| - **속성** - | - -- 선택 과목 - | - -- 지도 - | - -- `"{\"page\": \"1\", \"limit\": \"10\"}"` - | -
| - **로그** - | - -- 필수의 - | - -- 목록 - | - -- `"[{\"message\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"message\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]"` - | -
| - **라이센스 키** - | - -- 선택 과목 - | - -- 끈 - | - -- `"{{ .secrets.secretName }}"` - | -
| - **선택기** - | - -- 선택 과목 - | - -- 목록 - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - 출력 필드 - | - -- 유형 - | - -- 예시 - | -
|---|---|---|
| - **성공** - | - -- 부울 - | - -- `true` - | -
| - **오류 메시지** - | - -- 끈 - | - -- `"Error message if operation failed"` - | -
| - 워크플로 예 - | -
|---|
| - ```yaml - name: heartbeat_newrelicIngestSendLogs - - workflowInputs: - cellName: - type: String - - steps: - - name: runAction - type: action - action: newrelic.ingest.sendLogs - version: 1 - inputs: - attributes: - colour: red - id: 1234 - logs: - - message: 'Heartbeat sendLogs Action Test Message' - attributes: - foo: bar - - message: 'HeartBeat1234' - attributes: - foo: bar - - message: 'HeartBeat12345' - attributes: - foo: bar - colour: yellow - - message: 'HeartBeat12345678' - selectors: - - name: success - expression: ".success" - ``` - - **예상 출력:** - - ```yaml - { - "success": true - } - ``` - - **로그 검색:** - - 워크플로우를 성공적으로 실행한 후 해당 로그플로우를 실행한 계정에서 쿼리를 실행하여 관련 로그플로우를 검색할 수 있습니다. - - ```sql - SELECT * FROM Log - ``` - | -
| - 입력 - | - -- 선택성 - | - -- 유형 - | - -- 설명 - | - -- 예시 - | -
|---|---|---|---|---|
| - **그래프QL** - | - -- 필수의 - | - -- 끈 - | - -- GraphQL 구문. 명령을 빌드하고 테스트하려면 GraphiQL을 사용해야 합니다. - | - -- |
| - **변수** - | - -- 필수의 - | - -- map[string]any - | - -- GraphQL 명령문과 함께 사용할 핵심 가치 쌍 변수입니다. - | - -- |
| - **선택기** - | - -- 선택 과목 - | - -- 목록 - | - -- 지정된 유일한 델파이를 출력으로 가져오는 선택기입니다. - | - -- ```yaml - { - "data": { - "actor": { - "user": { - "name": "" - } - } - } - ``` - | -
| - 산출 - | - -- 유형 - | - -- 예시 - | -
|---|---|---|
| - **data** - | - -- map[string]any: NerdGraph 응답의 - - `data` - - 속성 내용입니다. - | - -- ```yaml - steps: - - name: currentUserId - type: action - action: newrelic.nerdgraph.execute - version: 1 - inputs: - graphql: | - query userId { - currentUser { - id - } - } - - name: sayHello - type: action - action: example.messaging.sayHello - version: 1 - inputs: - name: ${{ .steps.currentUserId.outputs.data.currentUser.id }} - ``` - | -
| - 예시 - | - -- 산출 - | - -- 이벤트 검색 - | -
|---|---|---|
| - ```json - name: testLog - - steps: - - name: logStep - type: action - action: newrelic.ingest.sendLogs - version: 1 - inputs: - logs: - - message: 'Hello World' - ``` - | - -- ```yaml - { - "success": true - } - ``` - | - -- 해당 이벤트를 실행한 계정으로 쿼리를 실행하면 해당 이벤트를 조회할 수 있습니다. - - ```yaml - SELECT message FROM Log WHERE allColumnSearch('Hello World', insensitive: true) SINCE 30 minutes ago - ``` - | -
| - 입력 - | - -- 선택성 - | - -- 유형 - | - -- 설명 - | - -- 예시 - | -
|---|---|---|---|---|
| - **질문** - | - -- 필수의 - | - -- 끈 - | - -- NRQL 쿼리 문. - | - -- |
| - **계정 ID** - | - -- 선택 과목 - | - -- int 목록 - | - -- **New Relic Account ID** - - \[뉴렐릭 계정 ID] 입력은 쿼리가 실행되는 퀴, 목표 계정을 지정할 수 있는 롤리, 목표 ID 목록입니다. 이 값을 입력으로 제공하지 않으면 쿼리는 자동으로 RPG우의 실행 계정과 연결된 계정에 대해 실행됩니다. - | - -- |
| - **선택기** - | - -- 선택 과목 - | - -- 목록 - | - -- 지정된 유일한 델파이를 출력으로 가져오는 선택기입니다. - | - -- ```json - steps: - - name: queryForLog - type: action - action: newrelic.nrdb.query - version: 1 - inputs: - accountIds: [12345] - query: FROM Log SELECT * WHERE message LIKE 'DEMO%' - selectors: - - name: resultsAsString - expression: '.results | tostring' - ``` - | -
| - 산출 - | - -- 유형 - | - -- 예시 - | -
|---|---|---|
| - **results** - - : 쿼리 결과를 포함하는 객체의 목록입니다. - | - -- - | - ```yaml - { - results=[ - { message=[INFO] - Workflow: test has ended, messageId=39af98 }, - { message=[INFO] - Workflow: test - Step query has started, messageId=649c612 }, - ... - ] - } - ``` - | -
| - 입력 - | - -- 선택성 - | - -- 유형 - | - -- 설명 - | - -- 예시 - | -
|---|---|---|---|---|
| - **유형** - | - -- 필수의 - | - -- 끈 - | - -- Newrelic 목적지 유형 - | - -- `slack` - | -
| - **목적지 ID** - | - -- 필수의 - | - -- 문자열 - | - -- Newrelic 대상과 연관된 DestinationId입니다. - | - -- `123e4567-e89b-12d3-a456-426614174000` - | -
| - **매개변수** - | - -- 필수의 - | - -- 지도 - | - -- 선택한 대상 유형으로 공지를 보내는 데 필요한 필드입니다. - | - -- `{\"channel\": \"${{ YOUR_CHANNEL }}\", \"text\": \"Enter your text here\"}` - | -
| - **선택기** - | - -- 선택 과목 - | - -- 목록 - | - -- 지정된 유일한 델파이를 출력으로 가져오는 선택기입니다. - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - 산출 - | - -- 유형 - | - -- 예시 - | -
|---|---|---|
| - 성공 - | - -- 부울 - | - -- `true/false` - | -
| - 입력 - | - -- 선택성 - | - -- 유형 - | - -- 설명 - | -
|---|---|---|---|
| - **타임스탬프** - | - -- 필수의 - | - -- 정수 - | - -- 에포크 타임스탬프를 나타내는 정수입니다. 참고로, UNIX 에포크는 1970년 1월 1일 자정 UTC(00:00) 이후의 초 수입니다. - | -
| - **타임스탬프 단위** - | - -- 선택 과목 - | - -- 끈 - | - -- 제공된 타임스탬프의 단위를 나타내는 문자열입니다. 허용 가능한 값: SECONDS, MILLISECONDS(기본값) - | -
| - **시간대 ID** - | - -- 선택 과목 - | - -- 끈 - | - -- 원하는 날짜/시간의 시간대를 나타내는 문자열, 기본값: UTC - | -
| - **pattern** - | - -- 선택 과목 - | - -- 끈 - | - -- 원하는 날짜/시간 패턴을 나타내는 문자열, 기본값: ISO-8601 - | -
| - 들 - | - -- 선택성 - | - -- 데이터 유형 - | - -- 설명 - | -
|---|---|---|---|
| - **날짜** - | - -- 필수의 - | - -- 끈 - | - -- 날짜의 문자열 표현입니다. - | -
| - **시간** - | - -- 필수의 - | - -- 끈 - | - -- 시간을 나타내는 문자열입니다. - | -
| - **날짜 시간** - | - -- 필수의 - | - -- 끈 - | - -- datetime의 문자열 표현입니다. - | -
| - **시간대** - | - -- 필수의 - | - -- 지도 - | - -- 시간대 ID와 약어를 지도로 표현한 것입니다. - | -
| - 예시 - | - -- 흐름흐름 입력 - | - -- 출력 - | -
|---|---|---|
| - ```yaml - name: from_epoch - - workflowInputs: - timestamp: - type: Int - timestampUnit: - type: String - timezoneId: - type: String - pattern: - type: String - - steps: - - name: epochTime - type: action - action: utils.datetime.fromEpoch - version: 1 - inputs: - timestamp: ${{ .workflowInputs.timestamp }} - timezoneId: ${{ .workflowInputs.timezoneId }} - pattern: ${{ .workflowInputs.pattern }} - timestampUnit: ${{ .workflowInputs.timestampUnit }} - ``` - | - -- ```json - mutation { - workflowAutomationStartWorkflowRun( - scope: { type: ACCOUNT id: "12345678" } - definition: { name: "from_epoch" } - workflowInputs: [ - {key: "timestamp", value: "1738236424003"} - {key: "timestampUnit", value: "MILLISECONDS"} - {key: "pattern", value: "yyyy-mm-dd HH:SS"} - {key: "timezoneId", value: "Asia/Kolkata"} - ] - ) { - runId - } - } - ``` - | - -- ```json - { - "date": "2025-01-30", - "time": "16:57:04.003" - "datetime": "2025-01-30 16:00", - "timezone": { - "abbreviation": "IST", - "id": "Asia/Kolkata" - } - } - ``` - | -
| - 입력 - | - -- 선택성 - | - -- 유형 - | - -- 설명 - | -
|---|---|---|---|
| - **data** - | - -- 필수의 - | - -- 어느 - | - -- CSV로 변환할 데이터를 나타내는 문자열로, 일반적으로 JSON 문자열이나 맵입니다. - | -
| - 들 - | - -- 선택성 - | - -- 데이터 유형 - | - -- 설명 - | -
|---|---|---|---|
| - **CSV** - | - -- 필수의 - | - -- 끈 - | - -- 수신된 데이터의 CSV 표현입니다. - | -
| - 예시 - | - -- 흐름흐름 입력 - | - -- 출력 - | -
|---|---|---|
| - ```json - name: nrqltocsv - - steps: - - name: queryForLog - type: action - action: newrelic.nrql.query - version: 1 - inputs: - accountIds: ['${{ .workflowInputs.accountId }}'] - query: ${{ .workflowInputs.nrql }} - - - name: csv1 - type: action - action: utils.transform.toCSV - version: 1 - inputs: - data: ${{ .steps.queryForLog.outputs.results | tostring }} - ``` - | - -- ```json - mutation { - startWorkflowRun( - scope: { type: ACCOUNT id: "12345678" } - definition: { - name: "nrqltocsv", - } - workflowInputs: [ - {key: "accountId" value: "12345678"} - {key: "nrql" value: "FROM TransactionError SELECT error.message, error.class, transactionName, request.uri, query WHERE appName like 'my-app-1%' AND error.expected IS FALSE SINCE 1 hour ago LIMIT 50"} - ] - ) - { runId } - } - ``` - | - -- |
| - 입력 - | - -- 선택성 - | - -- 데이터 유형 - | - -- 설명 - | -
|---|---|---|---|
| - - | - - | - |
| - 들 - | - -- 데이터 유형 - | - -- 설명 - | -
|---|---|---|
| - **uuid** - | - -- 끈 - | - -- |
| - 예시 - | - -- 흐름흐름 입력 - | - -- 출력 - | -
|---|---|---|
| - - |
- 이름: generateUUID 단계: - - * 이름: generateUUID 유형: 작업 작업: utils.uuid.generate 버전: 1 - |
-
- - ```json - { - "uuid": "c76bd606-5eaa-42bb-a847-4221fb49f83c", - } - ``` - | -
| - Campo de entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Exemplo - | -
|---|---|---|---|
| - **token** - | - -- Obrigatório - | - -- segredo - | - -- `${{ :secrets:slackToken }}` - | -
| - **canal** - | - -- Obrigatório - | - -- corda - | - -- `my-slack-channel` - | -
| - **texto** - | - -- Obrigatório - | - -- corda - | - -- `Hello World!` - | -
| - **threadTs** - | - -- Opcional - | - -- corda - | - -
- ` |
-
| - **anexo** - | - -- Opcional - | - -- map - | - -- |
| - **anexo.nome do arquivo** - | - -- Obrigatório - | - -- corda - | - -- `file.txt` - | -
| - **anexo.conteúdo** - | - -- Obrigatório - | - -- corda - | - -- `Hello\nWorld!` - | -
| - Campo de saída - | - -- Tipo - | - -- Exemplo - | -
|---|---|---|
| - **threadTs** - | - -- corda - | - -
- ` |
-
| - **ID do canal** - | - -- corda - | - -
- ` |
-
| - Exemplo de fluxo de trabalho - | -
|---|
| - ```yaml - name: SendMessage - - steps: - - name: send_slack_message - type: action - action: slack.chat.postMessage - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channel: ${{ .workflowInputs.channel }} - text: ${{ .workflowInputs.text }} - ``` - - **Entradas esperadas:** - - ```json - { - "inputs": [ - { - "key" : "channel", - "value" : "my-channel" - }, - { - "key" : "text", - "value" : "This is my message *with bold text* and `code backticks`" - } - ] - } - ``` - - **Resultado esperado:** - - ```json - [ - { - "threadTs": "1718897637.400609", - "channelID": "C063JK1RHN1" - } - ] - ``` - | -
| - Exemplo de fluxo de trabalho - | -
|---|
| - ```yaml - name: SendFileMessage - - steps: - - name: postCsv - type: action - action: slack.chat.postMessage - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channel: my-channel - text: "Please find the attached file:" - attachment: - filename: 'file.txt' - content: "Hello\nWorld!" - ``` - - **Resultado esperado:** - - ```json - [ - { - "threadTs": "1718897637.400609", - "channelID": "C063JK1RHN1" - } - ] - ``` - | -
| - Campo de entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Exemplo - | -
|---|---|---|---|
| - **token** - | - -- Obrigatório - | - -- segredo - | - -- `${{ :secrets:slackToken }}` - | -
| - **ID do canal** - | - -- Obrigatório - | - -- corda - | - -- `C063JK1RHN1` - | -
| - **Tempo esgotado** - | - -- Opcional - | - -- int - | - -- 60 - | -
| - **threadTs** - | - -- Obrigatório - | - -- corda - | - -
- ` |
-
| - **seletores** - | - -- Opcional - | - -- list - | - -- `[{\"name\": \"reactions\", \"expression\": \".reactions \"}]` - | -
| - Campo de saída - | - -- Tipo - | - -- Exemplo - | -
|---|---|---|
| - **reações** - | - -- list - | - -
- `
|
-
| - Exemplo de fluxo de trabalho - | -
|---|
| - ```yaml - name: GetReactions - - steps: - - name: getReactions - type: action - action: slack.chat.getReactions - version: 1 - inputs: - token: ${{ :secrets:slackToken }} - channelID: ${{ .steps.promptUser.outputs.channelID }} - threadTs: ${{ .steps.promptUser.outputs.threadTs }} - timeout: ${{ .workflowInputs.timeout }} - selectors: ${{ .workflowInputs.selectors }} - ``` - - **Entradas esperadas:** - - ```json - { - "inputs": [ - { - "key" : "channelID", - "value" : "C063JK1RHN1" - }, - { - "key" : "threadTs", - "value" : "1718897637.400609" - }, - { - "key" : "selectors", - "value" : "[{\"name\": \"reactions\", \"expression\": \".reactions \"}]" - } - ] - } - ``` - - **Resultado esperado:** - - ```json - [ - { - "name": "grinning", - "users": [ - "W222222" - ], - "count": 1 - }, - { - "name": "question", - "users": [ - "W333333" - ], - "count": 1 - } - ] - ``` - - Ou, se o tempo limite tiver expirado: - - ```json - [] - ``` - | -
| - Campo de entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Descrição - | -
|---|---|---|---|
| - **url** - | - -- Obrigatório - | - -- Corda - | - -- A URL de destino da solicitação. O esquema deve ser incluído: - - `https://example.com` - | -
| - **parâmetros da URL** - | - -- Opcional - | - -- Mapa - | - -- O parâmetro de consulta deve ser adicionado à URL. Recebe um objeto JSON em formato de string. - | -
| - **cabeçalhos** - | - -- Opcional - | - -- Mapa - | - -- Os cabeçalhos a serem adicionados à solicitação. Recebe um objeto JSON em formato de string. - | -
| - **seletores** - | - -- Opcional - | - -- Lista - | - -- Os seletores permitem obter apenas o parâmetro especificado como saída. - | -
| - Campo de saída - | - -- Tipo - | - -- Descrição - | -
|---|---|---|
| - **respostaCorpo** - | - -- Corda - | - -- O corpo da resposta. - | -
| - **código de status** - | - -- Inteiro - | - -- O código de status HTTP da resposta. - | -
| - Exemplo de fluxo de trabalho - | -
|---|
| - ```yaml - name: httpGetTest - description: 'Performs an HTTP GET request to retrieve data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - steps: - - name: query - type: action - action: http.get - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - next: end - ``` - - **Exemplos de entradas:** - - ```json - { - "url": "https://example.com", - "urlParams": "{\"foo\": \"bar\"}", - "headers": "{\"baz\": \"bat\"}" - } - ``` - - **Exemplos de saída:** - - ```json - { - "responseBody": "\n...\n", - "statusCode": 200 - } - ``` - | -
| - Campo de entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Descrição - | -
|---|---|---|---|
| - **url** - | - -- Obrigatório - | - -- Corda - | - -- A URL de destino da solicitação. O esquema deve ser incluído: - - `https://example.com` - | -
| - **parâmetros da URL** - | - -- Opcional - | - -- Mapa - | - -- O parâmetro de consulta deve ser adicionado à URL. Recebe um objeto JSON em formato de string. - | -
| - **cabeçalhos** - | - -- Opcional - | - -- Mapa - | - -- Os cabeçalhos a serem adicionados à solicitação. Recebe um objeto JSON em formato de string. - | -
| - **corpo** - | - -- Opcional - | - -- Corda - | - -- O corpo da requisição. - | -
| - **seletores** - | - -- Opcional - | - -- Lista - | - -- Os seletores permitem obter apenas o parâmetro especificado como saída. - | -
| - Campo de saída - | - -- Tipo - | - -- Descrição - | -
|---|---|---|
| - **respostaCorpo** - | - -- Corda - | - -- O corpo da resposta. - | -
| - **código de status** - | - -- Inteiro - | - -- O código de status HTTP da resposta. - | -
| - Exemplo de fluxo de trabalho - | -
|---|
| - ```yaml - name: httpPostTest - description: 'Performs an HTTP POST request to send data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - body: - type: String - steps: - - name: query - type: action - action: http.post - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - body: ${{ .workflowInputs.body }} - next: end - ``` - - **Exemplos de entradas:** - - ```json - { - "url": "https://example.com", - "headers": "{\"Content-Type\":\"application/json\"}", - "urlParams": "{\"foo\": \"bar\"}", - "body": "{\"foo\": \"bar\"}" - } - ``` - - **Exemplos de saída:** - - ```json - { - "responseBody": "", - "statusCode": 200 - } - ``` - | -
| - Campo de entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Descrição - | -
|---|---|---|---|
| - **url** - | - -- Obrigatório - | - -- Corda - | - -- A URL de destino da solicitação. O URL deve incluir o esquema (por exemplo, https:// ou http://). Exemplo: - - `https://example.com` - | -
| - **parâmetros da URL** - | - -- Opcional - | - -- Mapa - | - -- O parâmetro de consulta deve ser adicionado à URL. Recebe um objeto JSON em formato de string. - | -
| - **cabeçalhos** - | - -- Opcional - | - -- Mapa - | - -- Os cabeçalhos a serem adicionados à solicitação. Recebe um objeto JSON em formato de string. - | -
| - **corpo** - | - -- Opcional - | - -- Corda - | - -- O corpo da requisição. - | -
| - **seletores** - | - -- Opcional - | - -- Lista - | - -- Os seletores permitem obter apenas o parâmetro especificado como saída. - | -
| - Campo de saída - | - -- Tipo - | - -- Descrição - | -
|---|---|---|
| - **respostaCorpo** - | - -- Corda - | - -- O corpo da resposta. - | -
| - **código de status** - | - -- Inteiro - | - -- O código de status HTTP da resposta. - | -
| - Exemplo de fluxo de trabalho - | -
|---|
| - ```yaml - name: httpPutTest - description: 'Performs an HTTP PUT request to update data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - body: - type: String - selectors: - type: String - steps: - - name: query - type: action - action: http.put - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - body: ${{ .workflowInputs.body }} - selectors: ${{ .workflowInputs.selectors }} - next: end - ``` - - **Exemplos de entradas:** - - ```json - { - "url": "https://example.com", - "headers": "{\"Content-Type\":\"application/json\"}", - "urlParams": "{\"foo\": \"bar\"}", - "body": "{\"foo\": \"bar\"}", - "selectors": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" - } - ``` - - **Exemplos de saída:** - - ```json - { - "responseBody": "", - "statusCode": 200 - } - ``` - | -
| - Campo de entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Descrição - | -
|---|---|---|---|
| - **url** - | - -- Obrigatório - | - -- Corda - | - -- A URL de destino da solicitação. O URL deve incluir o esquema (por exemplo, https:// ou http://). Exemplo: - - `https://example.com` - | -
| - **parâmetros da URL** - | - -- Opcional - | - -- Mapa - | - -- O parâmetro de consulta deve ser adicionado à URL. Recebe um objeto JSON em formato de string. - | -
| - **cabeçalhos** - | - -- Opcional - | - -- Mapa - | - -- Os cabeçalhos a serem adicionados à solicitação. Recebe um objeto JSON em formato de string. - | -
| - **seletores** - | - -- Opcional - | - -- Lista - | - -- Os seletores permitem obter apenas o parâmetro especificado como saída. - | -
| - Campo de saída - | - -- Tipo - | - -- Descrição - | -
|---|---|---|
| - **respostaCorpo** - | - -- Corda - | - -- O corpo da resposta. - | -
| - **código de status** - | - -- Inteiro - | - -- O código de status HTTP da resposta. - | -
| - Exemplo de fluxo de trabalho - | -
|---|
| - ```yaml - name: httpDeleteTest - description: 'Performs an HTTP DELETE request to remove data' - workflowInputs: - url: - type: String - urlParams: - type: String - headers: - type: String - selectors: - type: String - steps: - - name: query - type: action - action: http.delete - version: '1' - inputs: - url: ${{ .workflowInputs.url }} - urlParams: ${{ .workflowInputs.urlParams }} - headers: ${{ .workflowInputs.headers }} - selectors: ${{ .workflowInputs.selectors }} - next: end - ``` - - **Exemplos de entradas:** - - ```json - { - "url": "https://example.com", - "urlParams": "{\"foo\": \"bar\"}", - "headers": "{\"baz\": \"bat\"}", - "selectors": "[{\"name\": \"responseBody\", \"expression\": \".responseBody\"}, {\"name\": \"statusCode\", \"expression\": \".statusCode\"}]" - } - ``` - - **Exemplos de saída:** - - ```json - { - "responseBody": "\n...\n", - "statusCode": 200 - } - ``` - | -
| - Categoria - | - -- Ação - | - -- Propósito - | -
|---|---|---|
| - **Ingestão de dados** - | - -- [Enviar evento personalizado](#newrelicingestsendevents) - | - -- Enviar evento personalizado para New Relic. - | -
| - **Ingestão de dados** - | - -- [Enviar logs](#newrelicingestsendlogs) - | - -- Enviar dados de logs para o New Relic. - | -
| - **NerdGraph** - | - -- [Executar consulta ou mutação GraphQL](#newrelicnerdgraphexecute) - | - -- Execute comandos GraphQL na API NerdGraph. - | -
| - **Consulta** - | - -- [Executar consulta NRDB](#newrelicnrdbquery) - | - -- Executar consultoria NRQL entre contas. - | -
| - **Notificação** - | - -- [Enviar notificação](#newrelicnotificationsend) - | - -- Envie notificação para destinos New Relic. - | -
| - Campo de entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Exemplo - | -
|---|---|---|---|
| - **atributo** - | - -- Opcional - | - -- map - | - -- `"{\"page\": \"1\", \"limit\": \"10\"}"` - | -
| - **eventos** - | - -- Obrigatório - | - -- list - | - -- `"[{\"eventType\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"eventType\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]` - | -
| - **chave de licença** - | - -- Opcional - | - -- corda - | - -- `"{{ .secrets.secretName }}"` - | -
| - **seletores** - | - -- Opcional - | - -- list - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - Campo de saída - | - -- Tipo - | - -- Exemplo - | -
|---|---|---|
| - **sucesso** - | - -- Boleano - | - -- `true` - | -
| - **mensagem de erro** - | - -- corda - | - -- `"Error message if operation failed"` - | -
| - Exemplo de fluxo de trabalho - | -
|---|
| - ```yaml - name: heartbeat_newrelicIngestSendEvents - - workflowInputs: - cellName: - type: String - - steps: - - name: runAction - type: action - action: newrelic.ingest.sendEvents - version: 1 - inputs: - attributes: - colour: red - id: 1234 - events: - - eventType: HeartBeat - test: "OK" - attributes: - foo: bar - - eventType: HeartBeat1234 - test: "OK1234" - attributes: - foo: bar - - eventType: HeartBeat12345 - test: "OK12345" - attributes: - foo: bar - colour: yellow - - eventType: HeartBeat12345678 - test: "OK12345678" - selectors: - - name: success - expression: ".success" - ``` - - **Resultado esperado:** - - ```yaml - { - "success": true - } - ``` - - **Recuperar evento:** - - Após executar um fluxo de trabalho com sucesso, você pode recuperar o evento associado executando uma consulta na conta que executou o fluxo de trabalho: - - ```sql - SELECT * FROM HeartBeat - ``` - | -
| - Campo de entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Exemplo - | -
|---|---|---|---|
| - **atributo** - | - -- Opcional - | - -- map - | - -- `"{\"page\": \"1\", \"limit\": \"10\"}"` - | -
| - **logs** - | - -- Obrigatório - | - -- list - | - -- `"[{\"message\":\"XYZ\",\"attributes\":{\"foo\":\"bar\"}}, {\"message\":\"ABC\",\"value\":\"1234\",\"attributes\":{\"color\":\"red\"}}]"` - | -
| - **chave de licença** - | - -- Opcional - | - -- corda - | - -- `"{{ .secrets.secretName }}"` - | -
| - **seletores** - | - -- Opcional - | - -- list - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - Campo de saída - | - -- Tipo - | - -- Exemplo - | -
|---|---|---|
| - **sucesso** - | - -- Boleano - | - -- `true` - | -
| - **mensagem de erro** - | - -- corda - | - -- `"Error message if operation failed"` - | -
| - Exemplo de fluxo de trabalho - | -
|---|
| - ```yaml - name: heartbeat_newrelicIngestSendLogs - - workflowInputs: - cellName: - type: String - - steps: - - name: runAction - type: action - action: newrelic.ingest.sendLogs - version: 1 - inputs: - attributes: - colour: red - id: 1234 - logs: - - message: 'Heartbeat sendLogs Action Test Message' - attributes: - foo: bar - - message: 'HeartBeat1234' - attributes: - foo: bar - - message: 'HeartBeat12345' - attributes: - foo: bar - colour: yellow - - message: 'HeartBeat12345678' - selectors: - - name: success - expression: ".success" - ``` - - **Resultado esperado:** - - ```yaml - { - "success": true - } - ``` - - **Recuperar logs:** - - Após executar um fluxo de trabalho com sucesso, você pode recuperar o log associado executando uma consulta na conta que executou o fluxo de trabalho: - - ```sql - SELECT * FROM Log - ``` - | -
| - Entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Descrição - | - -- Exemplo - | -
|---|---|---|---|---|
| - **graphql** - | - -- Obrigatório - | - -- corda - | - -- Uma sintaxe GraphQL. Você deve usar o GraphiQL para construir e testar seu comando. - | - -- |
| - **variáveis** - | - -- Obrigatório - | - -- map[string]any - | - -- Quaisquer variáveis de par principal-valor para usar com a instrução GraphQL. - | - -- |
| - **seletores** - | - -- Opcional - | - -- list - | - -- Os seletores permitem obter como saída apenas o parâmetro especificado. - | - -- ```yaml - { - "data": { - "actor": { - "user": { - "name": "" - } - } - } - ``` - | -
| - Saída - | - -- Tipo - | - -- Exemplo - | -
|---|---|---|
| - **dados** - | - -- map[string]any: Conteúdo da propriedade - - `data` - - de uma resposta NerdGraph. - | - -- ```yaml - steps: - - name: currentUserId - type: action - action: newrelic.nerdgraph.execute - version: 1 - inputs: - graphql: | - query userId { - currentUser { - id - } - } - - name: sayHello - type: action - action: example.messaging.sayHello - version: 1 - inputs: - name: ${{ .steps.currentUserId.outputs.data.currentUser.id }} - ``` - | -
| - Exemplo - | - -- Saída - | - -- Recuperar evento - | -
|---|---|---|
| - ```json - name: testLog - - steps: - - name: logStep - type: action - action: newrelic.ingest.sendLogs - version: 1 - inputs: - logs: - - message: 'Hello World' - ``` - | - -- ```yaml - { - "success": true - } - ``` - | - -- Você pode recuperar o evento associado executando uma consulta na conta que executou o fluxo de trabalho. - - ```yaml - SELECT message FROM Log WHERE allColumnSearch('Hello World', insensitive: true) SINCE 30 minutes ago - ``` - | -
| - Entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Descrição - | - -- Exemplo - | -
|---|---|---|---|---|
| - **consulta** - | - -- Obrigatório - | - -- corda - | - -- A instrução de consulta NRQL. - | - -- |
| - **IDs da conta** - | - -- Opcional - | - -- lista de inteiros - | - -- O campo - - **New Relic Account ID** - - é uma lista de IDs de destino que permite especificar as contas de destino nas quais a consulta será executada. Caso esse valor não seja fornecido como entrada, a consulta será executada automaticamente na conta associada à conta de execução do fluxo de trabalho. - | - -- |
| - **seletores** - | - -- Opcional - | - -- list - | - -- Os seletores permitem obter como saída apenas o parâmetro especificado. - | - -- ```json - steps: - - name: queryForLog - type: action - action: newrelic.nrdb.query - version: 1 - inputs: - accountIds: [12345] - query: FROM Log SELECT * WHERE message LIKE 'DEMO%' - selectors: - - name: resultsAsString - expression: '.results | tostring' - ``` - | -
| - Saída - | - -- Tipo - | - -- Exemplo - | -
|---|---|---|
| - **results** - - : Uma matriz de objetos contendo os resultados da consulta. - | - -- - | - ```yaml - { - results=[ - { message=[INFO] - Workflow: test has ended, messageId=39af98 }, - { message=[INFO] - Workflow: test - Step query has started, messageId=649c612 }, - ... - ] - } - ``` - | -
| - Entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Descrição - | - -- Exemplo - | -
|---|---|---|---|---|
| - **tipo** - | - -- Obrigatório - | - -- corda - | - -- Tipo de destino do New Relic - | - -- `slack` - | -
| - **id de destino** - | - -- Obrigatório - | - -- Corda - | - -- DestinationId associado ao destino New Relic. - | - -- `123e4567-e89b-12d3-a456-426614174000` - | -
| - **parâmetro** - | - -- Obrigatório - | - -- map - | - -- Campos obrigatórios para enviar notificação ao tipo de destino escolhido. - | - -- `{\"channel\": \"${{ YOUR_CHANNEL }}\", \"text\": \"Enter your text here\"}` - | -
| - **seletores** - | - -- Opcional - | - -- list - | - -- Os seletores permitem obter como saída apenas o parâmetro especificado. - | - -- `[{\"name\": \"success\", \"expression\": \".success\"}]` - | -
| - Saída - | - -- Tipo - | - -- Exemplo - | -
|---|---|---|
| - sucesso - | - -- boleano - | - -- `true/false` - | -
| - Entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Descrição - | -
|---|---|---|---|
| - **Timestamp** - | - -- Obrigatório - | - -- int - | - -- Um número inteiro que representa o timestamp da época. Note que as épocas UNIX são o número de segundos após 1º de janeiro de 1970, meia-noite UTC (00:00). - | -
| - **timestampUnit** - | - -- Opcional - | - -- corda - | - -- Uma string representando a unidade do timestamp fornecido. Valores aceitáveis: SEGUNDOS, MILISSEGUNDOS (PADRÃO) - | -
| - **ID do fuso horário** - | - -- Opcional - | - -- corda - | - -- Uma string que representa o fuso horário para a data/hora desejada, padrão: UTC - | -
| - **padrão** - | - -- Opcional - | - -- corda - | - -- Uma string que representa o padrão para a data e hora desejadas, padrão: ISO-8601 - | -
| - Campo - | - -- Opcionalidade - | - -- Tipo de dados - | - -- Descrição - | -
|---|---|---|---|
| - **data** - | - -- Obrigatório - | - -- corda - | - -- Uma representação em formato de string de uma data. - | -
| - **tempo** - | - -- Obrigatório - | - -- corda - | - -- Uma representação em forma de string do tempo. - | -
| - **data e hora** - | - -- Obrigatório - | - -- corda - | - -- Uma representação em formato de string de data e hora. - | -
| - **fuso horário** - | - -- Obrigatório - | - -- map - | - -- Representação em mapa do ID do fuso horário e sua abreviação. - | -
| - Exemplo - | - -- Entrada de fluxo de trabalho - | - -- Saídas - | -
|---|---|---|
| - ```yaml - name: from_epoch - - workflowInputs: - timestamp: - type: Int - timestampUnit: - type: String - timezoneId: - type: String - pattern: - type: String - - steps: - - name: epochTime - type: action - action: utils.datetime.fromEpoch - version: 1 - inputs: - timestamp: ${{ .workflowInputs.timestamp }} - timezoneId: ${{ .workflowInputs.timezoneId }} - pattern: ${{ .workflowInputs.pattern }} - timestampUnit: ${{ .workflowInputs.timestampUnit }} - ``` - | - -- ```json - mutation { - workflowAutomationStartWorkflowRun( - scope: { type: ACCOUNT id: "12345678" } - definition: { name: "from_epoch" } - workflowInputs: [ - {key: "timestamp", value: "1738236424003"} - {key: "timestampUnit", value: "MILLISECONDS"} - {key: "pattern", value: "yyyy-mm-dd HH:SS"} - {key: "timezoneId", value: "Asia/Kolkata"} - ] - ) { - runId - } - } - ``` - | - -- ```json - { - "date": "2025-01-30", - "time": "16:57:04.003" - "datetime": "2025-01-30 16:00", - "timezone": { - "abbreviation": "IST", - "id": "Asia/Kolkata" - } - } - ``` - | -
| - Entrada - | - -- Opcionalidade - | - -- Tipo - | - -- Descrição - | -
|---|---|---|---|
| - **dados** - | - -- Obrigatório - | - -- qualquer - | - -- Uma sequência de caracteres que representa dados a serem transformados em CSV, normalmente uma string JSON ou um mapa. - | -
| - Campo - | - -- Opcionalidade - | - -- Tipo de dados - | - -- Descrição - | -
|---|---|---|---|
| - **arquivo CSV** - | - -- Obrigatório - | - -- corda - | - -- Representação em formato CSV dos dados recebidos. - | -
| - Exemplo - | - -- Entrada de fluxo de trabalho - | - -- Saídas - | -
|---|---|---|
| - ```json - name: nrqltocsv - - steps: - - name: queryForLog - type: action - action: newrelic.nrql.query - version: 1 - inputs: - accountIds: ['${{ .workflowInputs.accountId }}'] - query: ${{ .workflowInputs.nrql }} - - - name: csv1 - type: action - action: utils.transform.toCSV - version: 1 - inputs: - data: ${{ .steps.queryForLog.outputs.results | tostring }} - ``` - | - -- ```json - mutation { - startWorkflowRun( - scope: { type: ACCOUNT id: "12345678" } - definition: { - name: "nrqltocsv", - } - workflowInputs: [ - {key: "accountId" value: "12345678"} - {key: "nrql" value: "FROM TransactionError SELECT error.message, error.class, transactionName, request.uri, query WHERE appName like 'my-app-1%' AND error.expected IS FALSE SINCE 1 hour ago LIMIT 50"} - ] - ) - { runId } - } - ``` - | - -- |
| - Entrada - | - -- Opcionalidade - | - -- Tipo de dados - | - -- Descrição - | -
|---|---|---|---|
| - - | - - | - |
| - Campo - | - -- Tipo de dados - | - -- Descrição - | -
|---|---|---|
| - **uuid** - | - -- corda - | - -- |
| - Exemplo - | - -- Entrada de fluxo de trabalho - | - -- Saídas - | -
|---|---|---|
| - - |
- nome: gerarUUID passos: - - * nome: gerarUUID tipo: ação ação: utils.uuid.generate versão: 1 - |
-
- - ```json - { - "uuid": "c76bd606-5eaa-42bb-a847-4221fb49f83c", - } - ``` - | -