{
  "name": "Exemplo Z-API",
  "nodes": [
    {
      "parameters": {},
      "name": "Start",
      "type": "n8n-nodes-base.start",
      "typeVersion": 1,
      "position": [
        -1880,
        1800
      ],
      "id": "009f0dac-4c9e-4035-9202-f075af0d9e34"
    },
    {
      "parameters": {
        "content": "## Start n\u00e3o pode ser apagado\n\nPor isso ele fica ai no canto isolado. N\u00e3o usaremos ele neste exemplo e sim o Webhook para receber as mensagens.",
        "height": 201.21912275758433,
        "width": 360
      },
      "name": "Note",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1900,
        1964.0597619718499
      ],
      "id": "0e0ff514-7ed9-45f5-a3b5-67c4a9d7864c"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "zapi",
        "options": {}
      },
      "name": "Recebe mensagem da Z-API",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        -1460,
        2220
      ],
      "id": "74c80777-a1a6-4fe4-bd65-a5c9e17c8fa3"
    },
    {
      "parameters": {
        "requestMethod": "POST",
        "url": "={{$node[\"Constantes\"].json[\"endpointSendOptionList\"]}}",
        "options": {},
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "phone",
              "value": "={{$node[\"Recebe mensagem da Z-API\"].json[\"body\"][\"phone\"]}}"
            },
            {
              "name": "message",
              "value": "={{$node[\"Monta lista\"].json[\"message\"]}}"
            },
            {
              "name": "optionList",
              "value": "={{$node[\"Monta lista\"].json[\"optionList\"]}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Client-Token",
              "value": "={{$node[\"Constantes\"].json[\"clientTokenHeaderZapi\"]}}"
            }
          ]
        }
      },
      "name": "Envia lista",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        -560,
        2400
      ],
      "id": "24f86593-1bc2-4800-82f6-8f9b5f74526e"
    },
    {
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{$node[\"Constantes\"].json[\"listResponse\"]}}",
              "value2": true
            }
          ]
        }
      },
      "name": "\u00c9 resposta de lista?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        -1020,
        2220
      ],
      "id": "38135099-67fd-4df0-8d55-f1c1f062cfa4"
    },
    {
      "parameters": {
        "dataType": "string",
        "value1": "={{$node[\"Recebe mensagem da Z-API\"].json[\"body\"][\"listResponseMessage\"][\"title\"]}}",
        "rules": {
          "rules": [
            {
              "value2": "send-text",
              "output": 1
            },
            {
              "value2": "send-link",
              "output": 2
            },
            {
              "value2": "send-audio",
              "output": 3
            }
          ]
        },
        "fallbackOutput": 0
      },
      "name": "Resposta lista 1",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 1,
      "position": [
        -800,
        2040
      ],
      "id": "a76fe89a-ea67-4ab2-9be8-85b6b6ac1ee7"
    },
    {
      "parameters": {
        "dataType": "string",
        "value1": "={{$node[\"Recebe mensagem da Z-API\"].json[\"body\"][\"listResponseMessage\"][\"title\"]}}",
        "rules": {
          "rules": [
            {
              "value2": "send-contact"
            },
            {
              "value2": "send-video",
              "output": 1
            },
            {
              "value2": "send-image",
              "output": 2
            },
            {
              "value2": "send-document",
              "output": 3
            }
          ]
        }
      },
      "name": "Resposta lista 2",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 1,
      "position": [
        -560,
        1740
      ],
      "id": "1718abc7-edeb-43cc-b068-f69e52c82811"
    },
    {
      "parameters": {
        "requestMethod": "POST",
        "url": "={{$node[\"Constantes\"].json[\"endpointSendText\"]}}",
        "options": {},
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "phone",
              "value": "={{$node[\"Recebe mensagem da Z-API\"].json[\"body\"][\"phone\"]}}"
            },
            {
              "name": "message",
              "value": "={{$node[\"Constantes\"].json[\"message\"]}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Client-Token",
              "value": "={{$node[\"Constantes\"].json[\"clientTokenHeaderZapi\"]}}"
            }
          ]
        }
      },
      "name": "Envia mensagem",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        -560,
        1900
      ],
      "id": "c858305f-cd45-4ee6-bcb8-d71ad88f6dc6"
    },
    {
      "parameters": {
        "requestMethod": "POST",
        "url": "={{$node[\"Constantes\"].json[\"endpointSendLink\"]}}",
        "options": {},
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "phone",
              "value": "={{$node[\"Recebe mensagem da Z-API\"].json[\"body\"][\"phone\"]}}"
            },
            {
              "name": "linkUrl",
              "value": "https://z-api.io"
            },
            {
              "name": "message",
              "value": "Aqui voc\u00ea coloca um texto sobre o site. Mas Aten\u00e7\u00e3o! Esse texto preciso ter o link que ser\u00e1 enviado no final da mensagem! Assim: https://z-api.io"
            },
            {
              "name": "image",
              "value": "https://firebasestorage.googleapis.com/v0/b/zaap-messenger-web.appspot.com/o/logo.png?alt=media"
            },
            {
              "name": "title",
              "value": "Z-API"
            },
            {
              "name": "linkDescription",
              "value": "Integra\u00e7\u00e3o com o WhatsApp"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Client-Token",
              "value": "={{$node[\"Constantes\"].json[\"clientTokenHeaderZapi\"]}}"
            }
          ]
        }
      },
      "name": "Envia link",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        -560,
        2060
      ],
      "id": "7e567976-0a41-47c9-b65d-b53e301985d5"
    },
    {
      "parameters": {
        "requestMethod": "POST",
        "url": "={{$node[\"Constantes\"].json[\"endpointSendAudio\"]}}",
        "options": {},
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "phone",
              "value": "={{$node[\"Recebe mensagem da Z-API\"].json[\"body\"][\"phone\"]}}"
            },
            {
              "name": "audio",
              "value": "={{$node[\"Constantes\"].json[\"urlAudio\"]}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Client-Token",
              "value": "={{$node[\"Constantes\"].json[\"clientTokenHeaderZapi\"]}}"
            }
          ]
        }
      },
      "name": "Envia audio",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        -560,
        2220
      ],
      "id": "69f95ddc-c5fd-489b-a55d-f433fc44161a"
    },
    {
      "parameters": {
        "requestMethod": "POST",
        "url": "={{$node[\"Constantes\"].json[\"endpointSendVideo\"]}}",
        "options": {},
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "phone",
              "value": "={{$node[\"Recebe mensagem da Z-API\"].json[\"body\"][\"phone\"]}}"
            },
            {
              "name": "video",
              "value": "={{$node[\"Constantes\"].json[\"urlVideo\"]}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Client-Token",
              "value": "={{$node[\"Constantes\"].json[\"clientTokenHeaderZapi\"]}}"
            }
          ]
        }
      },
      "name": "Envia video",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        -180,
        1720
      ],
      "id": "e07e72c9-2895-4a52-8395-ea87b91e5f43"
    },
    {
      "parameters": {
        "requestMethod": "POST",
        "url": "={{$node[\"Constantes\"].json[\"endpointSendImage\"]}}",
        "options": {},
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "phone",
              "value": "={{$node[\"Recebe mensagem da Z-API\"].json[\"body\"][\"phone\"]}}"
            },
            {
              "name": "image",
              "value": "={{$node[\"Constantes\"].json[\"urlImage\"]}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Client-Token",
              "value": "={{$node[\"Constantes\"].json[\"clientTokenHeaderZapi\"]}}"
            }
          ]
        }
      },
      "name": "Envia imagem",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        -180,
        1880
      ],
      "id": "f86ebe33-abf9-40cf-9b45-ab73d7d5dd93"
    },
    {
      "parameters": {
        "requestMethod": "POST",
        "url": "={{$node[\"Constantes\"].json[\"endpointSendDocument\"]}}",
        "options": {},
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "phone",
              "value": "={{$node[\"Recebe mensagem da Z-API\"].json[\"body\"][\"phone\"]}}"
            },
            {
              "name": "document",
              "value": "={{$node[\"Constantes\"].json[\"urlDocument\"]}}"
            },
            {
              "name": "fileName",
              "value": "={{$node[\"Constantes\"].json[\"nameDocument\"]}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Client-Token",
              "value": "={{$node[\"Constantes\"].json[\"clientTokenHeaderZapi\"]}}"
            }
          ]
        }
      },
      "name": "Envia documento",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        -180,
        2040
      ],
      "id": "ece4fc77-6609-4e16-84e0-be9dca1702cc"
    },
    {
      "parameters": {
        "content": "## Node Webhook\n\nTudo come\u00e7a aqui. Este \u00e9 o node de **Webhook** onde voc\u00ea deve configurar o endpoint dado aqui pelo pr\u00f3prio node e colocar ele na parte de webhook **Ao receber** da Z-API\n\nRepare que durante a execu\u00e7\u00e3o de testes, o webhook \u00e9 **Test URL**, e com o workflow ativo \u00e9 o **Production URL**, se atente a isso.",
        "height": 360.8658159910907,
        "width": 360
      },
      "name": "Note1",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1900,
        2200
      ],
      "id": "5cf12117-079d-4f35-a87d-150da26e93c1"
    },
    {
      "parameters": {
        "content": "## Worfklow Exemplo Z-API\n\nEste Workflow pode ser encontrado no seu [reposit\u00f3rio oficial](https://github.com/Z-API/z-api-n8n-example) no GitHub. Siga-o para updates.\n\nAqui \u00e9 demonstrado de forma simples o recebimento de mensagens, al\u00e9m do envio de lista, mensagem, audio, video, imagem, documento e contato.\n\nO fluxo poderia ter sido feito de forma mais eficaz, mas tentei deixar o mais simples poss\u00edvel pois o objetivo \u00e9 que um leigo consiga entender o funcionamento b\u00e1sico.\n\nOutros coment\u00e1rios foram adicionados no c\u00f3digo dos nodes **Code** que est\u00e3o com os nomes de **Constantes** e **Monta lista**\n\nWorkflow desenvolvido por **Kim Tiago Baptista**\n \n[Meu GitHub](https://github.com/kimtiago)\n[Meu LinkedIn](https://www.linkedin.com/in/kimtiagobaptista/)\n",
        "height": 359.18241758241766,
        "width": 639.28685478136
      },
      "name": "Note2",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1680,
        1560
      ],
      "id": "26127a32-fd85-47a0-a608-c503d576d264"
    },
    {
      "parameters": {
        "content": "## O n8n\nO **n8n** \u00e9 uma ferramenta de **Low-Code**, ou seja, voc\u00ea consegue fazer muita coisa sem programar, mas n\u00e3o tudo. Para utilizar voc\u00ea vai precisar de um conhecimento pr\u00e9vio de **L\u00f3gica de Programa\u00e7\u00e3o** e **APIs**.\n\nTem integra\u00e7\u00e3o nativa com diversas APIs do mercado. Consulte a documenta\u00e7\u00e3o para mais detalhes.",
        "height": 202.72556454534478,
        "width": 535.8241758241757
      },
      "name": "Note3",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1500,
        1963.768605509265
      ],
      "id": "64dc3396-2d9a-419e-b445-a3528b89e87f"
    },
    {
      "parameters": {
        "content": "## Node Switch\n\nPara cada resposta que o cliente enviar ser\u00e1 encaminhado para uma determinada rota. Ele sabe para qual rota enviar baseado nas configura\u00e7\u00f5es que voc\u00ea realiza nele.",
        "height": 180,
        "width": 360
      },
      "name": "Note4",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1020,
        1740
      ],
      "id": "c653fe2e-5f15-4507-9b1d-d0204dce0567"
    },
    {
      "parameters": {
        "content": "## Node HTTP Request\n\nS\u00e3o esses nodes que fazem as chamadas aos endpoints da **Z-API** de acordo com a documenta\u00e7\u00e3o.\n\nNeste exemplo, o Client-Token que deve ser enviado, foi inserido atrav\u00e9s de uma constante no node **Constantes**. Mas o ideal \u00e9 que voc\u00ea utilize o cadastro de chaves de autentica\u00e7\u00e3o do pr\u00f3prio **n8n**.\n\nPara cadastrar especificamente a da Z-API, v\u00e1 em **Credentials** -> **Add Credentials** -> Busque por **Header Auth** -> **Name** \u00e9 Client-Token e **Value** \u00e9 o seu token. N\u00e3o esque\u00e7a de colocar um nome para esta credencial no topo da dela, ao lado do s\u00edmbolo.\n\nDepois, utilize-a no node **HTTP Request** nas op\u00e7\u00f5es internas dele, ele estar\u00e1 dispon\u00edvel na lista em **Authentication** -> **Generic Credential Type** -> **Header Auth**",
        "height": 364.5045123374794,
        "width": 459.8680459955185
      },
      "name": "Note5",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -360,
        2200
      ],
      "id": "30215755-408c-47bb-8126-465238b3f137"
    },
    {
      "parameters": {
        "content": "## Node Code\n\nEsse node permite voc\u00ea a manipular os dados com c\u00f3digo **JavaScript** ou **Python**.",
        "height": 178.89822753559008,
        "width": 354.44346764346756
      },
      "name": "Note6",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1502.944223054113,
        2380
      ],
      "id": "2dfdd40b-ec3c-49d4-b460-43f6064d94d7"
    },
    {
      "parameters": {
        "content": "## Node If\n\nDiferente do node **Swtich** que tem at\u00e9 4 rotas, o **If** somente tem duas.\n\nUsamos ele aqui para definir se \u00e9 a resposta de uma lista ou n\u00e3o.",
        "height": 180.10671282319623,
        "width": 362.4551141166524
      },
      "name": "Note7",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1120,
        2380
      ],
      "id": "a408b9af-ea7c-42f1-a097-c464f5bb5a2f"
    },
    {
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// o n8n tem um \u00f3timo controle de credenciais,\n// mas no caso da Z-API, da forma que \u00e9 constru\u00edda via URL\n// n\u00e3o \u00e9 poss\u00edvel utilizar esta funcionalidade,\n// por isso faremos esse tratamento por JavaScript\n\n// voc\u00ea pode utilizar os parametros como texto direto no node do HTTP Request\n// mas se tiver uma mudan\u00e7a de id e token da instancia ou outra coisa\n// vai precisar alterar um por um, ent\u00e3o \u00e9 melhor concentrar aqui\n\n// !!!!  N\u00c3O ESQUE\u00c7A DE SUBSTITUIR AS VARIAVEIS ABAIXO COM  !!!!\n// !!!! O ID, TOKEN E CLIENT TOKEN CORRETO DA SUA INSTANCIA !!!!\n\nconst idInstanceZapi = \"11111111111111111111\";\nconst tokenInstanceZapi = \"1111111111111111111\";\nconst clientTokenHeaderZapi = \"11111111111111111111\";\nconst endpointZapi = \"https://api.z-api.io/instances/\" + idInstanceZapi + \"/token/\" + tokenInstanceZapi;\nconst extensionDocument = \"pdf\";\n\n// definindo parametros que serao utilizados posteriormente no workflow\nitem.json.message = \"Teste de mensagem com Z-API e n8n\"\nitem.json.urlLink = \"https://app.z-api.io/\";\nitem.json.urlAudio = \"https://freetestdata.com/wp-content/uploads/2021/09/Free_Test_Data_100KB_MP3.mp3\";\nitem.json.urlVideo = \"https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4\";\nitem.json.urlImage = \"https://www.learningcontainer.com/wp-content/uploads/2020/07/Sample-JPEG-Image-File-Download-scaled.jpg\";\nitem.json.urlDocument = \"https://www.learningcontainer.com/wp-content/uploads/2019/09/sample-pdf-file.pdf\";\nitem.json.nameDocument = \"teste\"\nitem.json.clientTokenHeaderZapi = clientTokenHeaderZapi;\nitem.json.endpointSendOptionList = endpointZapi + \"/send-option-list\";\nitem.json.endpointSendText = endpointZapi + \"/send-text\";\nitem.json.endpointSendLink = endpointZapi + \"/send-link\";\nitem.json.endpointSendAudio = endpointZapi + \"/send-audio\";\nitem.json.endpointSendVideo = endpointZapi + \"/send-video\";\nitem.json.endpointSendImage = endpointZapi + \"/send-image\";\nitem.json.endpointSendDocument = endpointZapi + \"/send-document/\" + extensionDocument;\nitem.json.endpointSendContact = endpointZapi + \"/send-contact\";\n\n// checa se a mensagem \u00e9 uma resposta de lista\n// esse atributo listResponseMessage somente vem no objeto\n// se for resposta de lista\n// essa informa\u00e7\u00e3o \u00e9 importante para o fluxo do workflow\nif ($node[\"Recebe mensagem da Z-API\"].json[\"body\"][\"listResponseMessage\"]) {\n  item.json.listResponse = true;\n} else {\n  item.json.listResponse = false;\n}\n\n// voc\u00ea pode usar express\u00f5es para referenciar dados e outras coisas mais\n// como por exemplo acima $node[\"nome que voc\u00ea deu ao node\"]\n// seguido de .json[\"nome do atributo\"]\n// consulte a documenta\u00e7\u00e3o para mais detalhes\n\nreturn item;"
      },
      "id": "68f33117-2c80-4236-a70c-fee2501f6722",
      "name": "Constantes",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -1240,
        2220
      ]
    },
    {
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// alguns parametros \u00e9 melhor montar com javascript,\n// facilita o entendimento e manuten\u00e7\u00e3o \n\n// nao confundir montagem de objetos javascript com mensagens json\n// tem diferen\u00e7as, mas o n8n converte automaticamente para json\n\nitem.json.message = \"Teste da Z-API com o n8n\";\n\nitem.json.optionList = {\n  title: \"Seleciona a op\u00e7\u00e3o desejada para testar\",\n  buttonLabel: \"SELECIONE A OP\u00c7\u00c3O\",\n  options: [\n    {\n      id: \"1\",\n      description: \"Envia mensagem\",\n      title: \"send-text\"\n    },\n    {\n      id: \"2\",\n      description: \"Envia link\",\n      title: \"send-link\"\n    },\n    {\n      id: \"3\",\n      description: \"Envia audio\",\n      title: \"send-audio\"\n    },\n    {\n      id: \"4\",\n      description: \"Envia video\",\n      title: \"send-video\"\n    },\n    {\n      id: \"5\",\n      description: \"Envia imagem\",\n      title: \"send-image\"\n    },\n    {\n      id: \"6\",\n      description: \"Envia documento\",\n      title: \"send-document\"\n    },\n    {\n      id: \"7\",\n      description: \"Envia contato\",\n      title: \"send-contact\"\n    },\n  ]\n}\n\nreturn item;"
      },
      "id": "70b74b1a-b2a1-4726-9120-932eb59185cf",
      "name": "Monta lista",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -740,
        2240
      ]
    },
    {
      "parameters": {
        "requestMethod": "POST",
        "url": "={{$node[\"Constantes\"].json[\"endpointSendContact\"]}}",
        "options": {},
        "bodyParametersUi": {
          "parameter": [
            {
              "name": "phone",
              "value": "={{$node[\"Recebe mensagem da Z-API\"].json[\"body\"][\"phone\"]}}"
            },
            {
              "name": "contactName",
              "value": "Z-API Contato"
            },
            {
              "name": "contactPhone",
              "value": "554498398733"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Client-Token",
              "value": "={{$node[\"Constantes\"].json[\"clientTokenHeaderZapi\"]}}"
            }
          ]
        }
      },
      "name": "Envia contato",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        -180,
        1560
      ],
      "id": "56b486df-8779-4dad-a0b5-62df0819a9a0"
    }
  ],
  "connections": {
    "Recebe mensagem da Z-API": {
      "main": [
        [
          {
            "node": "Constantes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u00c9 resposta de lista?": {
      "main": [
        [
          {
            "node": "Resposta lista 1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Monta lista",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Resposta lista 1": {
      "main": [
        [
          {
            "node": "Resposta lista 2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Envia mensagem",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Envia link",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Envia audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Resposta lista 2": {
      "main": [
        [
          {
            "node": "Envia contato",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Envia video",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Envia imagem",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Envia documento",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Constantes": {
      "main": [
        [
          {
            "node": "\u00c9 resposta de lista?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Monta lista": {
      "main": [
        [
          {
            "node": "Envia lista",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  }
}