{
  "name": "Notify Redmine project members in Slack about teammates’ approved Odoo leave",
  "nodes": [
    {
      "id": "425cc66f-75b9-4b24-b952-c960881186a4",
      "name": "Step2: Set Variables",
      "type": "n8n-nodes-base.set",
      "position": [
        512,
        32
      ]
    },
    {
      "id": "8291b5bb-94fa-46ac-8036-33d0cae9bec9",
      "name": "Step 1: Schedule the trigger to run every weekday at 5:15 PM.",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        320,
        32
      ]
    },
    {
      "id": "a0cf3311-95b5-4a17-a2fc-ba8e91102467",
      "name": "Step3: Get datetime",
      "type": "n8n-nodes-base.code",
      "position": [
        320,
        240
      ]
    },
    {
      "id": "5bc1ad0c-b4a7-4c23-962f-939638ff59e6",
      "name": "Step4: Get all user in Redmine6",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        512,
        240
      ]
    },
    {
      "id": "0040816b-cf09-4c83-b2c4-36168ccdee06",
      "name": "Step5: Get a list of closed projects.",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        320,
        448
      ]
    },
    {
      "id": "23da7fd5-2a18-4669-8a1e-650e2a8d4d13",
      "name": "Step7: Get the list of members' leave records for tomorrow.",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        320,
        800
      ]
    },
    {
      "id": "79ed5d66-df67-45c2-9498-e4d101fd8837",
      "name": "End",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1008,
        -208
      ]
    },
    {
      "id": "5522d06e-4dd3-426d-a783-bb6166e9388c",
      "name": "End1",
      "type": "n8n-nodes-base.noOp",
      "position": [
        512,
        960
      ]
    },
    {
      "id": "c885a8f2-93cd-4836-8163-52d68716b4b6",
      "name": "Step1: When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        1696,
        320
      ]
    },
    {
      "id": "cb4c6a1d-3db0-4dcc-91fc-b9786de3a2c9",
      "name": "Step3: Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        2080,
        320
      ]
    },
    {
      "id": "e4759e7e-64ac-405d-89b9-046cba790e95",
      "name": "Step4: Get membership list of user in Redmine 6",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2320,
        432
      ]
    },
    {
      "id": "51723393-16c7-444c-ae38-a2a9f9e84a8f",
      "name": "Step2: Return redmine list ProjectID of user",
      "type": "n8n-nodes-base.code",
      "position": [
        1888,
        320
      ]
    },
    {
      "id": "ea0432ff-1efc-4d65-944a-4d366bf58357",
      "name": "Step5: Get redmine project Team MemberIds",
      "type": "n8n-nodes-base.code",
      "position": [
        2544,
        432
      ]
    },
    {
      "id": "aef87abe-6838-4d3a-b1e8-a09d5e8a69fc",
      "name": "Step6: Remove duplicate id",
      "type": "n8n-nodes-base.code",
      "position": [
        2320,
        224
      ]
    },
    {
      "id": "5c4f7669-d8b9-47d8-a17e-3d501aff18a6",
      "name": "No Operation, do nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1904,
        -304
      ]
    },
    {
      "id": "045acc35-2104-40dc-9538-7faee912426f",
      "name": "Step2: Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1696,
        -288
      ]
    },
    {
      "id": "ab3ee8da-a620-4113-89b2-f70a3a2c887a",
      "name": "Step3: Wait 1s",
      "type": "n8n-nodes-base.wait",
      "position": [
        1696,
        -144
      ]
    },
    {
      "id": "cf4467ec-2c81-4c13-928f-13c70dd3cdb7",
      "name": "Step6: Get many users",
      "type": "n8n-nodes-base.slack",
      "position": [
        512,
        448
      ]
    },
    {
      "id": "27b24219-1edc-4b9d-9ecc-9e165f322041",
      "name": "Step8: Check if there is a record or not?",
      "type": "n8n-nodes-base.if",
      "position": [
        320,
        944
      ]
    },
    {
      "id": "4ddbe9f6-fdb5-4f82-aa46-e993c6033dae",
      "name": "Step9: Handling and get user information in Odoo 18",
      "type": "n8n-nodes-base.code",
      "position": [
        512,
        800
      ]
    },
    {
      "id": "aa110700-708b-4920-8365-f3a8a08e5e39",
      "name": "Step10: Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        800,
        768
      ]
    },
    {
      "id": "a029aeb0-3a12-474e-bfad-3f2f3d23e5fc",
      "name": "Step11: Get leave record information",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1008,
        784
      ]
    },
    {
      "id": "65bb8b85-d89f-4fed-a8c8-29184c9ae14c",
      "name": "Step12: Get name record",
      "type": "n8n-nodes-base.code",
      "position": [
        1216,
        784
      ]
    },
    {
      "id": "afc80ffe-e5bd-401b-baad-10904ff96ae6",
      "name": "Step13: Get employee information in Odoo 18",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1424,
        784
      ]
    },
    {
      "id": "9add14fe-50c3-4122-a9fa-4a722569dbac",
      "name": "Step14: Get work_email",
      "type": "n8n-nodes-base.code",
      "position": [
        1616,
        784
      ]
    },
    {
      "id": "6c9f7bc6-2f98-49cb-910c-e61bf5f7e0e0",
      "name": "Step15: Get information for this employee's manager on Odoo 18",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1808,
        784
      ]
    },
    {
      "id": "a2f22d05-b3b1-4a67-9ee3-f414d7d4c995",
      "name": "Step16: Get work_email of manager",
      "type": "n8n-nodes-base.code",
      "position": [
        2000,
        784
      ]
    },
    {
      "id": "75bc9fa2-d85d-481a-b132-09779fd4b324",
      "name": "Step17: Get user info in Redmine 6",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        816,
        1200
      ]
    },
    {
      "id": "ace5d7ea-8041-4d77-a0f3-8f63b756516e",
      "name": "Step18:  Check if there is a record or not?",
      "type": "n8n-nodes-base.if",
      "position": [
        1008,
        1200
      ]
    },
    {
      "id": "f57ff24e-fc83-4bfa-97a5-b6bfc815331c",
      "name": "Step19.1: Get membership list of user in Redmine 6",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1200,
        1104
      ]
    },
    {
      "id": "761f0ff6-e3f3-43d9-bfb0-be2ecba75485",
      "name": "Step19.2: Return isAccountRedmine = false",
      "type": "n8n-nodes-base.code",
      "position": [
        1200,
        1296
      ]
    },
    {
      "id": "aaeb9361-2b7d-483a-a221-39737f5f99ea",
      "name": "Step20: Get project IDs that the member is participating in.",
      "type": "n8n-nodes-base.code",
      "position": [
        1376,
        1200
      ]
    },
    {
      "id": "4b2531fe-9f23-493a-b235-5b1a33a72413",
      "name": "Step21: Merge data",
      "type": "n8n-nodes-base.merge",
      "position": [
        1616,
        1120
      ]
    },
    {
      "id": "f02df777-b0db-4fc1-bacd-eb46d2dd8663",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1632,
        80
      ],
      "parameters": {
        "width": 1072,
        "height": 560,
        "content": "## Subflow: Get membership list of user in Redmine\n- It starts when the subflow is called from the main flow.\n- Loop over projects to extract project members and remove duplicate records.\n\nNote: Subfl"
      }
    },
    {
      "id": "9f4f9620-c23b-4b7e-9107-01b27b5d5966",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1632,
        -432
      ],
      "parameters": {
        "width": 640,
        "height": 496,
        "content": "## Subflow: Push message to member\n- There are 3 different notifications: Time Off, Remote, Leave company\n\nNote: Need to add trigger node \"When Executed by Another Workflow\""
      }
    },
    {
      "id": "aa1ab49e-5a19-4adb-93ca-c2abda7fa33e",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        656
      ],
      "parameters": {
        "width": 448,
        "height": 448,
        "content": "## Querying data in Odoo\n- Check if there are any records of the member's leave schedule for tomorrow?\n- If there are no records, end the flow.\n- If so, proceed to the next step for filtering."
      }
    },
    {
      "id": "5e346261-0467-4a65-a0f0-145d00787fc2",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        -96
      ],
      "parameters": {
        "width": 448,
        "height": 736,
        "content": "## Schedule daily runs at 5:15 PM.\n- Get some information about datetime, the list of users on Redmine, and the list of closed projects.\n- Add necessary variables."
      }
    },
    {
      "id": "795758f1-1ebb-472d-b1cc-a1f32de81602",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        656
      ],
      "parameters": {
        "width": 1472,
        "height": 320,
        "content": "## Loop over item\n- Read the detailed information of the records and extract the member's leave information.\n- Then get the information for that employee and their manager."
      }
    },
    {
      "id": "9f0e0f3e-0dd0-4c48-9885-eabb92f1223a",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        992
      ],
      "parameters": {
        "width": 1072,
        "height": 464,
        "content": "## Get user info in Redmine\n- Get the information for that member on Redmine \n- If there's any information, then find out which projects they are currently involved in.\n- If not, return isAccountRedmi"
      }
    },
    {
      "id": "7b7fb23c-7b68-4393-817d-5150548084c8",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        240
      ],
      "parameters": {
        "width": 912,
        "height": 400,
        "content": "## Loop over members to check if a member has a Redmine account.\n\n- If there's any information, call 'Subflow Get membership list of user in RM' and handle \"Get email Redmine project Team Member Info\n"
      }
    },
    {
      "id": "ba51edeb-7203-4b4e-a248-f6308049e20d",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        -320
      ],
      "parameters": {
        "width": 912,
        "height": 544,
        "content": "## Loop over members to check if a member has a Redmine account.\n- If you have an account, send a notification about the holiday schedule to the project members.Call 'Subflow push message to member' w"
      }
    },
    {
      "id": "0992fa70-f1d7-4b94-8e4b-29e29576a03b",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        -352
      ],
      "parameters": {
        "width": 720,
        "height": 1392,
        "content": "# Notify project members when a teammate has an approved leave tomorrow.\n\n## 📌Who is this for?\nThis workflow is designed for engineering teams, project managers, and IT operations who need consistent "
      }
    },
    {
      "id": "bb42b7a1-97b0-4ee8-93ee-6ca20518a928",
      "name": "Step22: Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        800,
        400
      ]
    },
    {
      "id": "175fa503-91db-457a-8534-0175e8ff8bc0",
      "name": "Step 23: If redmine_listProjectID != [] ==> true",
      "type": "n8n-nodes-base.if",
      "position": [
        1008,
        416
      ]
    },
    {
      "id": "7df52887-ecf5-4fe0-9c1f-6e13b455037f",
      "name": "Step 24: Call subflow: \"Get membership list of user in Redmine'",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        1216,
        416
      ]
    },
    {
      "id": "a8e87f6e-6347-4758-8e91-40752b780b90",
      "name": "Step25: Get email Redmine project Team Member Info",
      "type": "n8n-nodes-base.code",
      "position": [
        1408,
        416
      ]
    },
    {
      "id": "27fc1840-7725-42a3-8f1d-5eb05872ffb2",
      "name": "Step26: Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        800,
        -112
      ]
    },
    {
      "id": "3ee1a0f9-c28c-4baf-9077-c10ca310e348",
      "name": "Step 27: If redmine_listProjectID != [] ==> true",
      "type": "n8n-nodes-base.if",
      "position": [
        1008,
        -32
      ]
    },
    {
      "id": "6e6f12ce-d5c5-40da-99a1-38a3213ba621",
      "name": "Step28.1: Prepare information about leave schedules for announcement.",
      "type": "n8n-nodes-base.code",
      "position": [
        1216,
        -128
      ]
    },
    {
      "id": "0fc89b6f-69b3-4456-85ae-5a819f86cf94",
      "name": "Step28.2: Prepare information about leave schedules for announcement.",
      "type": "n8n-nodes-base.code",
      "position": [
        1216,
        64
      ]
    },
    {
      "id": "285b91d1-c0ce-4f20-9fff-bc918e9415ff",
      "name": "Step29: Call subflow: 'Push message to member'",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        1408,
        -48
      ]
    },
    {
      "id": "d7d8d48c-e5a8-4183-a6fa-f78afe041604",
      "name": "Step4: Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        1904,
        -144
      ]
    },
    {
      "id": "85ced538-00cb-42e7-97ea-98614c550d72",
      "name": "Step5.1: Send a message to the project team members.",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2112,
        -304
      ]
    },
    {
      "id": "65ec9cba-3f59-4410-b376-e8f0e901d011",
      "name": "Step5.2: Send a message to the project team members.",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2112,
        -128
      ]
    }
  ],
  "connections": {
    "End": {
      "main": [
        []
      ]
    },
    "Step4: Switch": {
      "main": [
        [
          {
            "node": "Step5.1: Send a message to the project team members.",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step5.2: Send a message to the project team members.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step3: Wait 1s": {
      "main": [
        [
          {
            "node": "Step4: Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step21: Merge data": {
      "main": [
        [
          {
            "node": "Step10: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step3: Get datetime": {
      "main": [
        [
          {
            "node": "Step4: Get all user in Redmine6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step2: Set Variables": {
      "main": [
        [
          {
            "node": "Step3: Get datetime",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step6: Get many users": {
      "main": [
        [
          {
            "node": "Step7: Get the list of members' leave records for tomorrow.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step14: Get work_email": {
      "main": [
        [
          {
            "node": "Step21: Merge data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Step15: Get information for this employee's manager on Odoo 18",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step2: Loop Over Items": {
      "main": [
        [
          {
            "node": "No Operation, do nothing",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step3: Wait 1s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step3: Loop Over Items": {
      "main": [
        [
          {
            "node": "Step6: Remove duplicate id",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step4: Get membership list of user in Redmine 6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step10: Loop Over Items": {
      "main": [
        [
          {
            "node": "Step22: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step11: Get leave record information",
            "type": "main",
            "index": 0
          },
          {
            "node": "Step21: Merge data",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Step12: Get name record": {
      "main": [
        [
          {
            "node": "Step13: Get employee information in Odoo 18",
            "type": "main",
            "index": 0
          },
          {
            "node": "Step21: Merge data",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Step22: Loop Over Items": {
      "main": [
        [
          {
            "node": "Step26: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step 23: If redmine_listProjectID != [] ==> true",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step26: Loop Over Items": {
      "main": [
        [
          {
            "node": "End",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step 27: If redmine_listProjectID != [] ==> true",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step4: Get all user in Redmine6": {
      "main": [
        [
          {
            "node": "Step5: Get a list of closed projects.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step16: Get work_email of manager": {
      "main": [
        [
          {
            "node": "Step17: Get user info in Redmine 6",
            "type": "main",
            "index": 0
          },
          {
            "node": "Step21: Merge data",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "Step17: Get user info in Redmine 6": {
      "main": [
        [
          {
            "node": "Step18:  Check if there is a record or not?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step11: Get leave record information": {
      "main": [
        [
          {
            "node": "Step12: Get name record",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step5: Get a list of closed projects.": {
      "main": [
        [
          {
            "node": "Step6: Get many users",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step1: When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Step2: Return redmine list ProjectID of user",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step19.2: Return isAccountRedmine = false": {
      "main": [
        [
          {
            "node": "Step21: Merge data",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "Step5: Get redmine project Team MemberIds": {
      "main": [
        [
          {
            "node": "Step3: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step8: Check if there is a record or not?": {
      "main": [
        [
          {
            "node": "Step9: Handling and get user information in Odoo 18",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "End1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step13: Get employee information in Odoo 18": {
      "main": [
        [
          {
            "node": "Step14: Get work_email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step18:  Check if there is a record or not?": {
      "main": [
        [
          {
            "node": "Step19.1: Get membership list of user in Redmine 6",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step19.2: Return isAccountRedmine = false",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step2: Return redmine list ProjectID of user": {
      "main": [
        [
          {
            "node": "Step3: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step29: Call subflow: 'Push message to member'": {
      "main": [
        [
          {
            "node": "Step26: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step4: Get membership list of user in Redmine 6": {
      "main": [
        [
          {
            "node": "Step5: Get redmine project Team MemberIds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 23: If redmine_listProjectID != [] ==> true": {
      "main": [
        [
          {
            "node": "Step 24: Call subflow: \"Get membership list of user in Redmine'",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step22: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 27: If redmine_listProjectID != [] ==> true": {
      "main": [
        [
          {
            "node": "Step28.1: Prepare information about leave schedules for announcement.",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step28.2: Prepare information about leave schedules for announcement.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step19.1: Get membership list of user in Redmine 6": {
      "main": [
        [
          {
            "node": "Step20: Get project IDs that the member is participating in.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step25: Get email Redmine project Team Member Info": {
      "main": [
        [
          {
            "node": "Step22: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step9: Handling and get user information in Odoo 18": {
      "main": [
        [
          {
            "node": "Step10: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step5.1: Send a message to the project team members.": {
      "main": [
        [
          {
            "node": "Step2: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step5.2: Send a message to the project team members.": {
      "main": [
        [
          {
            "node": "Step2: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step7: Get the list of members' leave records for tomorrow.": {
      "main": [
        [
          {
            "node": "Step8: Check if there is a record or not?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step20: Get project IDs that the member is participating in.": {
      "main": [
        [
          {
            "node": "Step21: Merge data",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "Step 1: Schedule the trigger to run every weekday at 5:15 PM.": {
      "main": [
        [
          {
            "node": "Step2: Set Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step15: Get information for this employee's manager on Odoo 18": {
      "main": [
        [
          {
            "node": "Step16: Get work_email of manager",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 24: Call subflow: \"Get membership list of user in Redmine'": {
      "main": [
        [
          {
            "node": "Step25: Get email Redmine project Team Member Info",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step28.1: Prepare information about leave schedules for announcement.": {
      "main": [
        [
          {
            "node": "Step29: Call subflow: 'Push message to member'",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step28.2: Prepare information about leave schedules for announcement.": {
      "main": [
        [
          {
            "node": "Step29: Call subflow: 'Push message to member'",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}