A Pass state passes the state's input to its output. You can also add arbitrary data to the output.

You typically use a Pass state as a placeholder for a state you haven't written yet. You can also use a Pass state to add mock data to a ZIS flow. This is often useful for testing or troubleshooting. For examples, seeMocking a built-in actionandMocking a custom action.

In production, you can use a Pass state to append data to a reference path. This can reduce the complexity of your flow and help you avoid passing large JSON objects toTransformactions. For an example, seeAdding data to a reference path.

             
"Mock.GetTicket":{"Type":"Pass","Result":{"id":35436,"subject":"Help, my printer is on fire!"},"ResultPath":"$.ticket","Next":"MyNextStep"}

Supported properties

In addition tocommon state properties, a Pass state supports theResultproperty.

Name Type Mandatory Description
Result object false Output for the state

Mocking a built-in action

The following Pass state mocks the output of aLoadConfig行动。您可以使用状态测试子流before building a Zendesk app that lets admins specify the config settings.

             
"Mock.LoadConfigData":{"Type":"Pass","Result":{"channel":"#zendesk-tickets","priority":"urgent"},"ResultPath":"$.settings","Next":"MyNextStep"}

Mocking a custom action

The following Pass state mocks the output of a子custom action. You can use the state to test a ZIS flow without defining the action or making an API request.

             
"Mock.InitiateRefund":{"Type":"Pass","Result":{"transaction_id":54321,"transaction_value":"99.01","transaction_state":"pending_approval"},"ResultPath":"$.refund_details","Next":"MyNextStep"}

Adding data to a reference path

The following ZIS bundle's job spec listens for theComment Createdevent. When the event occurs, the bundle's ZIS flow retrieves a HTML-formatted version of the event's comment body. It then posts the HTML body to an external URL.

The bundle's flow includes a Pass state. The state appends the event's comment id to aList Commentsresponse object in the$.fetched_commentspath.

This setup lets the flow's Transform action access both the event's comment id and the comments object without processing the entire$ object. By processing a smaller JSON object, the Transform action runs more efficiently.

             
{"zis_template_version":"2019-10-14","name":"Send webhook when ticket comment is added","description":"Send webhook when ticket comment is added","resources":{"fetch_ticket_comments":{"type":"ZIS::Action::Http","properties":{"name":"fetch_ticket_comments","definition":{"method":"GET","path":"/api/v2/tickets/{{$.ticket_id}}/comments.json","connectionName":"zendesk"}}},"post_webhook":{"type":"ZIS::Action::Http","properties":{"name":"post_webhook","definition":{"method":"POST","url":"EXTERNAL_TARGET_URL","requestBody":{"text.$":"$.message"}}}},"Flow":{"type":"ZIS::Flow","properties":{"name":"PostWebhookFlow","definition":{"StartAt":"fetch_comments","States":{"fetch_comments":{"Type":"Action","ActionName":"zis:INTEGRATION:action:fetch_ticket_comments","Parameters":{"ticket_id.$":"$.input.ticket_event.ticket.id"},"ResultPath":"$.fetched_comments","Next":"pass.store_this_comment_id"},"pass.store_this_comment_id":{"Type":"Pass","Result":{"this_id.$":"$.input.ticket_event.comment.id"},"ResultPath":"$.fetched_comments","Next":“transform.fetch_this_comment”},“transform.fetch_this_comment”:{"Type":"Action","ActionName":"zis:common:transform:Jq","Parameters":{"data.$":"$.fetched_comments","expr":".this_id as $my_id | .comments[] | select(.id == $my_id).html_body"},"ResultPath":"$.fetched_comments.this_comment","Next":"post_webhook"},"post_webhook":{"Type":"Action","ActionName":"zis:INTEGRATION:action:post_webhook","Parameters":{"message.$":"$.fetched_comments.this_comment"},"ResultPath":"$.posted_webhook","End":true}}}}},"JobSpec":{"type":"ZIS::JobSpec","properties":{"name":"TicketCommentAddedJobSpec",“event_source”:"support","event_type":"ticket.CommentAdded","flow_name":"zis:INTEGRATION:flow:PostWebhookFlow"}}}}

Before using the bundle, replace the "EXTERNAL_TARGET_URL" placeholder with an external target URL, such as an endpoint URL you obtained fromRequestBin. Replace "INTEGRATION" with your ZIS integration key.