{
  "openruna_format": "flow-graph-v1",
  "title": "0829_Webhook_Code_Create_Webhook",
  "slug": "0829-webhook-code-create-webhook",
  "source_filename": "0829_Webhook_Code_Create_Webhook.json",
  "nodes": [
    {
      "id": "Input Arguments",
      "name": "Input Arguments",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Format response",
      "name": "Format response",
      "integration": "itemLists",
      "kind": "logic"
    },
    {
      "id": "Sort",
      "name": "Sort",
      "integration": "itemLists",
      "kind": "logic"
    },
    {
      "id": "Available Start Times & Ranges",
      "name": "Available Start Times & Ranges",
      "integration": "code",
      "kind": "logic"
    },
    {
      "id": "Flatten Slots",
      "name": "Flatten Slots",
      "integration": "code",
      "kind": "logic"
    },
    {
      "id": "Enrich Date",
      "name": "Enrich Date",
      "integration": "code",
      "kind": "logic"
    },
    {
      "id": "Build Response Payload",
      "name": "Build Response Payload",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Booking Payload",
      "name": "Booking Payload",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Success Response",
      "name": "Success Response",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Add Friendly Error",
      "name": "Add Friendly Error",
      "integration": "code",
      "kind": "logic"
    },
    {
      "id": "Error Response",
      "name": "Error Response",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Escape Json",
      "name": "Escape Json",
      "integration": "code",
      "kind": "logic"
    },
    {
      "id": "Has all information",
      "name": "Has all information",
      "integration": "if",
      "kind": "logic"
    },
    {
      "id": "Respond with Error",
      "name": "Respond with Error",
      "integration": "respondToWebhook",
      "kind": "action"
    },
    {
      "id": "Build Error Response Payload",
      "name": "Build Error Response Payload",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Build Error Response Payload2",
      "name": "Build Error Response Payload2",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Getslot_tool",
      "name": "Getslot_tool",
      "integration": "webhook",
      "kind": "trigger"
    },
    {
      "id": "Check Availability",
      "name": "Check Availability",
      "integration": "googleCalendar",
      "kind": "action"
    },
    {
      "id": "Response",
      "name": "Response",
      "integration": "respondToWebhook",
      "kind": "action"
    },
    {
      "id": "Check if time is available or not",
      "name": "Check if time is available or not",
      "integration": "if",
      "kind": "logic"
    },
    {
      "id": "Time available (true) & Call_id",
      "name": "Time available (true) & Call_id",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Get All Calendar Events",
      "name": "Get All Calendar Events",
      "integration": "googleCalendar",
      "kind": "action"
    },
    {
      "id": "Extract start, end and name",
      "name": "Extract start, end and name",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Convert into Json format for Vapi",
      "name": "Convert into Json format for Vapi",
      "integration": "code",
      "kind": "logic"
    },
    {
      "id": "Response to Vapi",
      "name": "Response to Vapi",
      "integration": "respondToWebhook",
      "kind": "action"
    },
    {
      "id": "bookslots_tool",
      "name": "bookslots_tool",
      "integration": "webhook",
      "kind": "trigger"
    },
    {
      "id": "Input Arguments from booking tools",
      "name": "Input Arguments from booking tools",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Convert time to CST America / Chicago",
      "name": "Convert time to CST America / Chicago",
      "integration": "code",
      "kind": "logic"
    },
    {
      "id": "Create Event",
      "name": "Create Event",
      "integration": "googleCalendar",
      "kind": "action"
    },
    {
      "id": "Respond to Vapi",
      "name": "Respond to Vapi",
      "integration": "respondToWebhook",
      "kind": "action"
    },
    {
      "id": "If the booking is confirmed then true",
      "name": "If the booking is confirmed then true",
      "integration": "if",
      "kind": "logic"
    },
    {
      "id": "Information to be Saved in Airtable",
      "name": "Information to be Saved in Airtable",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Logs the confirmed booking details",
      "name": "Logs the confirmed booking details",
      "integration": "airtable",
      "kind": "action"
    },
    {
      "id": "Updateslots_tool",
      "name": "Updateslots_tool",
      "integration": "webhook",
      "kind": "trigger"
    },
    {
      "id": "Input Arguments from updateslot tool",
      "name": "Input Arguments from updateslot tool",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Checks if required info is provided.",
      "name": "Checks if required info is provided.",
      "integration": "if",
      "kind": "logic"
    },
    {
      "id": "Finds original appointment",
      "name": "Finds original appointment",
      "integration": "airtable",
      "kind": "action"
    },
    {
      "id": "Response with Error",
      "name": "Response with Error",
      "integration": "respondToWebhook",
      "kind": "action"
    },
    {
      "id": "Update Event",
      "name": "Update Event",
      "integration": "googleCalendar",
      "kind": "action"
    },
    {
      "id": "Updates Airtable record",
      "name": "Updates Airtable record",
      "integration": "airtable",
      "kind": "action"
    },
    {
      "id": "Response & call_id",
      "name": "Response & call_id",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Respond to Vapi about Updating slots",
      "name": "Respond to Vapi about Updating slots",
      "integration": "respondToWebhook",
      "kind": "action"
    },
    {
      "id": "CancelSlots_tool",
      "name": "CancelSlots_tool",
      "integration": "webhook",
      "kind": "trigger"
    },
    {
      "id": "Input Arguments from cancelslot tool",
      "name": "Input Arguments from cancelslot tool",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Checks if required info is provided for cancelation",
      "name": "Checks if required info is provided for cancelation",
      "integration": "if",
      "kind": "logic"
    },
    {
      "id": "Finds the appointment record",
      "name": "Finds the appointment record",
      "integration": "airtable",
      "kind": "action"
    },
    {
      "id": "Build Error Response",
      "name": "Build Error Response",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Respond with Error to Vapi",
      "name": "Respond with Error to Vapi",
      "integration": "respondToWebhook",
      "kind": "action"
    },
    {
      "id": "Delete Event",
      "name": "Delete Event",
      "integration": "googleCalendar",
      "kind": "action"
    },
    {
      "id": "Update Airtable record",
      "name": "Update Airtable record",
      "integration": "airtable",
      "kind": "action"
    },
    {
      "id": "Call_id & Response",
      "name": "Call_id & Response",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Respond to Vapi about cancelation",
      "name": "Respond to Vapi about cancelation",
      "integration": "respondToWebhook",
      "kind": "action"
    },
    {
      "id": "call_results",
      "name": "call_results",
      "integration": "webhook",
      "kind": "trigger"
    },
    {
      "id": "All Input Arguments",
      "name": "All Input Arguments",
      "integration": "set",
      "kind": "logic"
    },
    {
      "id": "Save all information",
      "name": "Save all information",
      "integration": "airtable",
      "kind": "action"
    }
  ],
  "edges": [
    {
      "from": "Sort",
      "to": "Format response"
    },
    {
      "from": "Enrich Date",
      "to": "Build Response Payload"
    },
    {
      "from": "Escape Json",
      "to": "Convert time to CST America / Chicago"
    },
    {
      "from": "Create Event",
      "to": "Booking Payload"
    },
    {
      "from": "Create Event",
      "to": "Add Friendly Error"
    },
    {
      "from": "Delete Event",
      "to": "Update Airtable record"
    },
    {
      "from": "Delete Event",
      "to": "Call_id & Response"
    },
    {
      "from": "Getslot_tool",
      "to": "Input Arguments"
    },
    {
      "from": "Update Event",
      "to": "Updates Airtable record"
    },
    {
      "from": "Update Event",
      "to": "Response & call_id"
    },
    {
      "from": "call_results",
      "to": "All Input Arguments"
    },
    {
      "from": "Flatten Slots",
      "to": "Enrich Date"
    },
    {
      "from": "Error Response",
      "to": "Respond to Vapi"
    },
    {
      "from": "bookslots_tool",
      "to": "Input Arguments from booking tools"
    },
    {
      "from": "Booking Payload",
      "to": "Success Response"
    },
    {
      "from": "Format response",
      "to": "Available Start Times & Ranges"
    },
    {
      "from": "Input Arguments",
      "to": "Check Availability"
    },
    {
      "from": "Respond to Vapi",
      "to": "If the booking is confirmed then true"
    },
    {
      "from": "CancelSlots_tool",
      "to": "Input Arguments from cancelslot tool"
    },
    {
      "from": "Success Response",
      "to": "Respond to Vapi"
    },
    {
      "from": "Updateslots_tool",
      "to": "Input Arguments from updateslot tool"
    },
    {
      "from": "Add Friendly Error",
      "to": "Error Response"
    },
    {
      "from": "Call_id & Response",
      "to": "Respond to Vapi about cancelation"
    },
    {
      "from": "Check Availability",
      "to": "Check if time is available or not"
    },
    {
      "from": "Response & call_id",
      "to": "Respond to Vapi about Updating slots"
    },
    {
      "from": "All Input Arguments",
      "to": "Save all information"
    },
    {
      "from": "Has all information",
      "to": "Escape Json"
    },
    {
      "from": "Has all information",
      "to": "Build Error Response Payload"
    },
    {
      "from": "Build Error Response",
      "to": "Respond with Error to Vapi"
    },
    {
      "from": "Build Response Payload",
      "to": "Convert into Json format for Vapi"
    },
    {
      "from": "Update Airtable record",
      "to": "Call_id & Response"
    },
    {
      "from": "Get All Calendar Events",
      "to": "Extract start, end and name"
    },
    {
      "from": "Updates Airtable record",
      "to": "Response & call_id"
    },
    {
      "from": "Finds original appointment",
      "to": "Update Event"
    },
    {
      "from": "Extract start, end and name",
      "to": "Sort"
    },
    {
      "from": "Build Error Response Payload",
      "to": "Respond with Error"
    },
    {
      "from": "Finds the appointment record",
      "to": "Delete Event"
    },
    {
      "from": "Build Error Response Payload2",
      "to": "Response with Error"
    },
    {
      "from": "Available Start Times & Ranges",
      "to": "Flatten Slots"
    },
    {
      "from": "Time available (true) & Call_id",
      "to": "Response"
    },
    {
      "from": "Check if time is available or not",
      "to": "Time available (true) & Call_id"
    },
    {
      "from": "Check if time is available or not",
      "to": "Get All Calendar Events"
    },
    {
      "from": "Convert into Json format for Vapi",
      "to": "Response to Vapi"
    },
    {
      "from": "Input Arguments from booking tools",
      "to": "Has all information"
    },
    {
      "from": "Information to be Saved in Airtable",
      "to": "Logs the confirmed booking details"
    },
    {
      "from": "Checks if required info is provided.",
      "to": "Finds original appointment"
    },
    {
      "from": "Checks if required info is provided.",
      "to": "Build Error Response Payload2"
    },
    {
      "from": "Input Arguments from cancelslot tool",
      "to": "Checks if required info is provided for cancelation"
    },
    {
      "from": "Input Arguments from updateslot tool",
      "to": "Checks if required info is provided."
    },
    {
      "from": "Convert time to CST America / Chicago",
      "to": "Create Event"
    },
    {
      "from": "If the booking is confirmed then true",
      "to": "Information to be Saved in Airtable"
    },
    {
      "from": "Checks if required info is provided for cancelation",
      "to": "Finds the appointment record"
    },
    {
      "from": "Checks if required info is provided for cancelation",
      "to": "Build Error Response"
    }
  ]
}