[{"key":"bland","htmlDocs":"<hr />\n<p>title: Bland.ai</p>\n<h2 id=\"descriptiontodo\">description: To do</h2>\n<h1 id=\"blandai\">Bland.ai</h1>\n<p>With Bland.ai you can build, test, and deploy AI phone calling agents. </p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>To set up this extension, you will need to provide an API key for Bland.</p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"sendcallwithpathway\">Send call (with Pathway)</h3>\n<p>Initiates an AI phone call using a simple prompt or a conversational pathway agent built on the Bland platform. This action is asynchronous—it triggers a call request in Bland, which queues the call. Note that the action only confirms that Bland has received the request; it does not wait for the call to complete or handle any callbacks from Bland.</p>\n<p>Awell lets you specify both the data you want to send to Bland and the structured data you’d like to receive in return. This is achieved by defining the request data for outgoing information and an analysis schema for the structured data you’ll get back.</p>\n<h4 id=\"requestdata\">Request data</h4>\n<p>Any JSON you put in here will be visible to the AI agent during the call - and can also be referenced with Prompt Variables.</p>\n<p>For example, let’s say in the action you want to programmatically set the name of the person you’re calling. You could set request data to:</p>\n<pre><code class=\"json language-json\">{\n    \"name\": \"John Doe\",\n}\n</code></pre>\n<p><a href=\"https://docs.bland.ai/api-v1/post/calls\">Also see Bland documentation.</a></p>\n<h4 id=\"analysisschema\">Analysis schema</h4>\n<p>Define a JSON schema for how you want to get information about the call - information like email addresses, names, appointment times or any other type of custom data.</p>\n<p>For example, if you wanted to retrieve this information from the call:</p>\n<pre><code class=\"json language-json\">{\n    \"email_address\": \"email\",\n    \"first_name\": \"string\",\n    \"last_name\": \"string\",\n    \"wants_to_book_appointment\": \"boolean\",\n    \"appointment_time\": \"YYYY-MM-DD HH:MM:SS\"\n}\n</code></pre>\n<p>When retrieving the call details, Bland will return data about the call in the following format:</p>\n<pre><code class=\"json language-json\">{\n  \"analysis\": {\n    \"email_address\": \"johndoe@gmail.com\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"wants_to_book_appointment\": true,\n    \"appointment_time\": \"2024-01-01 12:00:00\"\n  }\n}\n</code></pre>\n<p><a href=\"https://docs.bland.ai/api-v1/post/calls\">Also see Bland documentation.</a></p>\n<h3 id=\"getcalldetails\">Get call details</h3>\n<p>Retrieve the details of a call based on the provider call ID.</p>","changelog":"<h1 id=\"changelog\">CHANGELOG</h1>","actions":{"sendCallWithPathway":{"key":"sendCallWithPathway","title":"Send call with pathway","description":"Send an AI phone call based on a pathway","category":"Communication","fields":{"phoneNumber":{"id":"phoneNumber","label":"Phone number","description":"The phone number to call.","type":"string","stringType":"phone","required":true},"pathwayId":{"id":"pathwayId","label":"Pathway ID","description":"The pathway ID for the pathway you have created.","type":"text","required":true},"pathwayVersion":{"id":"pathwayVersion","label":"Pathway version","description":"The version number of the pathway to use for the call. Defaults to the production version.","type":"numeric","required":false},"webhook":{"id":"webhook","label":"Webhook","description":"The webhook to send the call completed event to.","type":"string","required":false},"voice":{"id":"voice","label":"Voice","description":"The voice of the AI agent to use. Accepts any form of voice ID, including custom voice clones and voice presets.","type":"string","required":false},"background_track":{"id":"background_track","label":"Background track","description":"Select an audio track that you’d like to play in the background during the call. The audio will play continuously when the agent isn’t speaking, and is incorporated into it’s speech as well.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"null","label":"Default"},{"value":"office","label":"Office"},{"value":"cafe","label":"Cafe"},{"value":"restaurant","label":"Restaurant"},{"value":"none","label":"None"}]}},"first_sentence":{"id":"first_sentence","label":"First sentence","description":"Makes your agent say a specific phrase or sentence for it’s first response.","type":"string","required":false},"wait_for_greeting":{"id":"wait_for_greeting","label":"Wait for greeting","description":"When enabled, the agent will wait for the call recipient to speak first before responding.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"block_interruptions":{"id":"block_interruptions","label":"Block interruptions","description":"When enabled, the AI will not respond or process interruptions from the user.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"interruption_threshold":{"id":"interruption_threshold","label":"Interruption threshold","description":"Adjusts how patient the AI is when waiting for the user to finish speaking. Lower values mean the AI will respond more quickly, while higher values mean the AI will wait longer before responding.","type":"numeric","required":false},"model":{"id":"model","label":"Model","description":"Select a model to use for your call.","type":"string","required":false,"options":{"dropdownOptions":[{"label":"base","value":"base"},{"label":"turbo","value":"turbo"}]}},"temperature":{"id":"temperature","label":"Temperature","description":"A value between 0 and 1 that controls the randomness of the LLM. 0 will cause more deterministic outputs while 1 will cause more random.","type":"numeric","required":false},"dynamic_data":{"id":"dynamic_data","label":"Dynamic data","description":"Integrate data from external APIs into your agent’s knowledge.","type":"json","required":false},"keywords":{"id":"keywords","label":"Keywords","description":"Comma-separated list of keywords. These words will be boosted in the transcription engine - recommended for proper nouns or words that are frequently mis-transcribed.","type":"string","required":false},"pronunciation_guide":{"id":"pronunciation_guide","label":"Pronunciation guide","description":"The pronunciation guide is an array of objects that guides the agent on how to say specific words. This is great for situations with complicated terms or names.","type":"json","required":false},"language":{"id":"language","label":"Language","description":"Optimizes every part of our API for that language - transcription, speech, and other inner workings.","type":"string","required":false},"local_dialing":{"id":"local_dialing","label":"Local dialing","description":"When true, automatically selects a “from” number that matches the callee’s area code for US-based calls. Must have purchased a local dialing add-on.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"voicemail_sms":{"id":"voicemail_sms","label":"Voicemail SMS","description":"Configure SMS settings for voicemail notifications.","type":"json","required":false},"dispatch_hours":{"id":"dispatch_hours","label":"Dispatch hours","description":"Restricts calls to certain hours in your timezone.","type":"json","required":false},"sensitive_voicemail_detection":{"id":"sensitive_voicemail_detection","label":"Sensitive voicemail detection","description":"When true, uses LLM-based analysis to detect frequent voicemails.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"noise_cancellation":{"id":"noise_cancellation","label":"Noise cancellation","description":"Toggles noise filtering or suppression in the audio stream to filter out background noise.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"ignore_button_press":{"id":"ignore_button_press","label":"Ignore button press","description":"When true, DTMF (digit) presses are ignored, disabling menu navigation or call transfers triggered by keypad input.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"timezone":{"id":"timezone","label":"Timezone","description":"Set the timezone for the call. Handled automatically for calls in the US.","type":"string","required":false,"options":{"dropdownOptions":[{"label":"Africa/Algiers","value":"Africa/Algiers"},{"label":"Atlantic/Cape_Verde","value":"Atlantic/Cape_Verde"},{"label":"Africa/Ndjamena","value":"Africa/Ndjamena"},{"label":"Africa/Abidjan","value":"Africa/Abidjan"},{"label":"Africa/Cairo","value":"Africa/Cairo"},{"label":"Africa/Bissau","value":"Africa/Bissau"},{"label":"Africa/Nairobi","value":"Africa/Nairobi"},{"label":"Africa/Monrovia","value":"Africa/Monrovia"},{"label":"Africa/Tripoli","value":"Africa/Tripoli"},{"label":"Indian/Mauritius","value":"Indian/Mauritius"},{"label":"Africa/Casablanca","value":"Africa/Casablanca"},{"label":"Africa/El_Aaiun","value":"Africa/El_Aaiun"},{"label":"Africa/Maputo","value":"Africa/Maputo"},{"label":"Africa/Windhoek","value":"Africa/Windhoek"},{"label":"Africa/Lagos","value":"Africa/Lagos"},{"label":"Africa/Sao_Tome","value":"Africa/Sao_Tome"},{"label":"Africa/Johannesburg","value":"Africa/Johannesburg"},{"label":"Africa/Khartoum","value":"Africa/Khartoum"},{"label":"Africa/Juba","value":"Africa/Juba"},{"label":"Africa/Tunis","value":"Africa/Tunis"},{"label":"Antarctica/Casey","value":"Antarctica/Casey"},{"label":"Antarctica/Davis","value":"Antarctica/Davis"},{"label":"Antarctica/Mawson","value":"Antarctica/Mawson"},{"label":"Antarctica/Troll","value":"Antarctica/Troll"},{"label":"Antarctica/Vostok","value":"Antarctica/Vostok"},{"label":"Antarctica/Rothera","value":"Antarctica/Rothera"},{"label":"Asia/Kabul","value":"Asia/Kabul"},{"label":"Asia/Yerevan","value":"Asia/Yerevan"},{"label":"Asia/Baku","value":"Asia/Baku"},{"label":"Asia/Dhaka","value":"Asia/Dhaka"},{"label":"Asia/Thimphu","value":"Asia/Thimphu"},{"label":"Indian/Chagos","value":"Indian/Chagos"},{"label":"Asia/Yangon","value":"Asia/Yangon"},{"label":"Asia/Shanghai","value":"Asia/Shanghai"},{"label":"Asia/Urumqi","value":"Asia/Urumqi"},{"label":"Asia/Hong_Kong","value":"Asia/Hong_Kong"},{"label":"Asia/Taipei","value":"Asia/Taipei"},{"label":"Asia/Macau","value":"Asia/Macau"},{"label":"Asia/Nicosia","value":"Asia/Nicosia"},{"label":"Asia/Famagusta","value":"Asia/Famagusta"},{"label":"Asia/Tbilisi","value":"Asia/Tbilisi"},{"label":"Asia/Dili","value":"Asia/Dili"},{"label":"Asia/Kolkata","value":"Asia/Kolkata"},{"label":"Asia/Jakarta","value":"Asia/Jakarta"},{"label":"Asia/Pontianak","value":"Asia/Pontianak"},{"label":"Asia/Makassar","value":"Asia/Makassar"},{"label":"Asia/Jayapura","value":"Asia/Jayapura"},{"label":"Asia/Tehran","value":"Asia/Tehran"},{"label":"Asia/Baghdad","value":"Asia/Baghdad"},{"label":"Asia/Jerusalem","value":"Asia/Jerusalem"},{"label":"Asia/Tokyo","value":"Asia/Tokyo"},{"label":"Asia/Amman","value":"Asia/Amman"},{"label":"Asia/Almaty","value":"Asia/Almaty"},{"label":"Asia/Qyzylorda","value":"Asia/Qyzylorda"},{"label":"Asia/Qostanay","value":"Asia/Qostanay"},{"label":"Asia/Aqtobe","value":"Asia/Aqtobe"},{"label":"Asia/Aqtau","value":"Asia/Aqtau"},{"label":"Asia/Atyrau","value":"Asia/Atyrau"},{"label":"Asia/Oral","value":"Asia/Oral"},{"label":"Asia/Bishkek","value":"Asia/Bishkek"},{"label":"Asia/Seoul","value":"Asia/Seoul"},{"label":"Asia/Pyongyang","value":"Asia/Pyongyang"},{"label":"Asia/Beirut","value":"Asia/Beirut"},{"label":"Asia/Kuching","value":"Asia/Kuching"},{"label":"Indian/Maldives","value":"Indian/Maldives"},{"label":"Asia/Hovd","value":"Asia/Hovd"},{"label":"Asia/Ulaanbaatar","value":"Asia/Ulaanbaatar"},{"label":"Asia/Kathmandu","value":"Asia/Kathmandu"},{"label":"Asia/Karachi","value":"Asia/Karachi"},{"label":"Asia/Gaza","value":"Asia/Gaza"},{"label":"Asia/Hebron","value":"Asia/Hebron"},{"label":"Asia/Manila","value":"Asia/Manila"},{"label":"Asia/Qatar","value":"Asia/Qatar"},{"label":"Asia/Riyadh","value":"Asia/Riyadh"},{"label":"Asia/Singapore","value":"Asia/Singapore"},{"label":"Asia/Colombo","value":"Asia/Colombo"},{"label":"Asia/Damascus","value":"Asia/Damascus"},{"label":"Asia/Dushanbe","value":"Asia/Dushanbe"},{"label":"Asia/Bangkok","value":"Asia/Bangkok"},{"label":"Asia/Ashgabat","value":"Asia/Ashgabat"},{"label":"Asia/Dubai","value":"Asia/Dubai"},{"label":"Asia/Samarkand","value":"Asia/Samarkand"},{"label":"Asia/Tashkent","value":"Asia/Tashkent"},{"label":"Asia/Ho_Chi_Minh","value":"Asia/Ho_Chi_Minh"},{"label":"Australia/Darwin","value":"Australia/Darwin"},{"label":"Australia/Perth","value":"Australia/Perth"},{"label":"Australia/Eucla","value":"Australia/Eucla"},{"label":"Australia/Brisbane","value":"Australia/Brisbane"},{"label":"Australia/Lindeman","value":"Australia/Lindeman"},{"label":"Australia/Adelaide","value":"Australia/Adelaide"},{"label":"Australia/Hobart","value":"Australia/Hobart"},{"label":"Australia/Melbourne","value":"Australia/Melbourne"},{"label":"Australia/Sydney","value":"Australia/Sydney"},{"label":"Australia/Broken_Hill","value":"Australia/Broken_Hill"},{"label":"Australia/Lord_Howe","value":"Australia/Lord_Howe"},{"label":"Antarctica/Macquarie","value":"Antarctica/Macquarie"},{"label":"Pacific/Fiji","value":"Pacific/Fiji"},{"label":"Pacific/Gambier","value":"Pacific/Gambier"},{"label":"Pacific/Marquesas","value":"Pacific/Marquesas"},{"label":"Pacific/Tahiti","value":"Pacific/Tahiti"},{"label":"Pacific/Guam","value":"Pacific/Guam"},{"label":"Pacific/Tarawa","value":"Pacific/Tarawa"},{"label":"Pacific/Kanton","value":"Pacific/Kanton"},{"label":"Pacific/Kiritimati","value":"Pacific/Kiritimati"},{"label":"Pacific/Kwajalein","value":"Pacific/Kwajalein"},{"label":"Pacific/Kosrae","value":"Pacific/Kosrae"},{"label":"Pacific/Nauru","value":"Pacific/Nauru"},{"label":"Pacific/Noumea","value":"Pacific/Noumea"},{"label":"Pacific/Auckland","value":"Pacific/Auckland"},{"label":"Pacific/Chatham","value":"Pacific/Chatham"},{"label":"Pacific/Rarotonga","value":"Pacific/Rarotonga"},{"label":"Pacific/Niue","value":"Pacific/Niue"},{"label":"Pacific/Norfolk","value":"Pacific/Norfolk"},{"label":"Pacific/Palau","value":"Pacific/Palau"},{"label":"Pacific/Port_Moresby","value":"Pacific/Port_Moresby"},{"label":"Pacific/Bougainville","value":"Pacific/Bougainville"},{"label":"Pacific/Pitcairn","value":"Pacific/Pitcairn"},{"label":"Pacific/Pago_Pago","value":"Pacific/Pago_Pago"},{"label":"Pacific/Apia","value":"Pacific/Apia"},{"label":"Pacific/Guadalcanal","value":"Pacific/Guadalcanal"},{"label":"Pacific/Fakaofo","value":"Pacific/Fakaofo"},{"label":"Pacific/Tongatapu","value":"Pacific/Tongatapu"},{"label":"Pacific/Efate","value":"Pacific/Efate"},{"label":"Australia/ACT","value":"Australia/ACT"},{"label":"Australia/LHI","value":"Australia/LHI"},{"label":"Australia/NSW","value":"Australia/NSW"},{"label":"Australia/North","value":"Australia/North"},{"label":"Australia/Queensland","value":"Australia/Queensland"},{"label":"Australia/South","value":"Australia/South"},{"label":"Australia/Tasmania","value":"Australia/Tasmania"},{"label":"Australia/Victoria","value":"Australia/Victoria"},{"label":"Australia/West","value":"Australia/West"},{"label":"Australia/Yancowinna","value":"Australia/Yancowinna"},{"label":"Brazil/Acre","value":"Brazil/Acre"},{"label":"Brazil/DeNoronha","value":"Brazil/DeNoronha"},{"label":"Brazil/East","value":"Brazil/East"},{"label":"Brazil/West","value":"Brazil/West"},{"label":"CET","value":"CET"},{"label":"CST6CDT","value":"CST6CDT"},{"label":"Canada/Atlantic","value":"Canada/Atlantic"},{"label":"Canada/Central","value":"Canada/Central"},{"label":"Canada/Eastern","value":"Canada/Eastern"},{"label":"Canada/Mountain","value":"Canada/Mountain"},{"label":"Canada/Newfoundland","value":"Canada/Newfoundland"},{"label":"Canada/Pacific","value":"Canada/Pacific"},{"label":"Canada/Saskatchewan","value":"Canada/Saskatchewan"},{"label":"Canada/Yukon","value":"Canada/Yukon"},{"label":"Chile/Continental","value":"Chile/Continental"},{"label":"Chile/EasterIsland","value":"Chile/EasterIsland"},{"label":"Cuba","value":"Cuba"},{"label":"EET","value":"EET"},{"label":"EST","value":"EST"},{"label":"EST5EDT","value":"EST5EDT"},{"label":"Egypt","value":"Egypt"},{"label":"Eire","value":"Eire"},{"label":"Etc/GMT+0","value":"Etc/GMT+0"},{"label":"Etc/GMT-0","value":"Etc/GMT-0"},{"label":"Etc/GMT0","value":"Etc/GMT0"},{"label":"Etc/Greenwich","value":"Etc/Greenwich"},{"label":"Etc/UCT","value":"Etc/UCT"},{"label":"Etc/Universal","value":"Etc/Universal"},{"label":"Etc/Zulu","value":"Etc/Zulu"},{"label":"GB","value":"GB"},{"label":"GB-Eire","value":"GB-Eire"},{"label":"GMT+0","value":"GMT+0"},{"label":"GMT-0","value":"GMT-0"},{"label":"GMT0","value":"GMT0"},{"label":"Greenwich","value":"Greenwich"},{"label":"Hongkong","value":"Hongkong"},{"label":"Iceland","value":"Iceland"},{"label":"Iran","value":"Iran"},{"label":"Israel","value":"Israel"},{"label":"Jamaica","value":"Jamaica"},{"label":"Japan","value":"Japan"},{"label":"Kwajalein","value":"Kwajalein"},{"label":"Libya","value":"Libya"},{"label":"MET","value":"MET"},{"label":"MST","value":"MST"},{"label":"MST7MDT","value":"MST7MDT"},{"label":"Mexico/BajaNorte","value":"Mexico/BajaNorte"},{"label":"Mexico/BajaSur","value":"Mexico/BajaSur"},{"label":"Mexico/General","value":"Mexico/General"},{"label":"NZ","value":"NZ"},{"label":"NZ-CHAT","value":"NZ-CHAT"},{"label":"Navajo","value":"Navajo"},{"label":"PRC","value":"PRC"},{"label":"Poland","value":"Poland"},{"label":"Portugal","value":"Portugal"},{"label":"ROC","value":"ROC"},{"label":"ROK","value":"ROK"},{"label":"Singapore","value":"Singapore"},{"label":"Turkey","value":"Turkey"},{"label":"UCT","value":"UCT"},{"label":"US/Alaska","value":"US/Alaska"},{"label":"US/Aleutian","value":"US/Aleutian"},{"label":"US/Arizona","value":"US/Arizona"},{"label":"US/Central","value":"US/Central"},{"label":"US/East-Indiana","value":"US/East-Indiana"},{"label":"US/Eastern","value":"US/Eastern"},{"label":"US/Hawaii","value":"US/Hawaii"},{"label":"US/Indiana-Starke","value":"US/Indiana-Starke"},{"label":"US/Michigan","value":"US/Michigan"},{"label":"US/Mountain","value":"US/Mountain"},{"label":"US/Pacific","value":"US/Pacific"},{"label":"US/Samoa","value":"US/Samoa"},{"label":"UTC","value":"UTC"},{"label":"Universal","value":"Universal"},{"label":"W-SU","value":"W-SU"},{"label":"Zulu","value":"Zulu"},{"label":"America/Buenos_Aires","value":"America/Buenos_Aires"},{"label":"America/Catamarca","value":"America/Catamarca"},{"label":"America/Cordoba","value":"America/Cordoba"},{"label":"America/Indianapolis","value":"America/Indianapolis"},{"label":"America/Jujuy","value":"America/Jujuy"},{"label":"America/Knox_IN","value":"America/Knox_IN"},{"label":"America/Louisville","value":"America/Louisville"},{"label":"America/Mendoza","value":"America/Mendoza"},{"label":"America/Virgin","value":"America/Virgin"},{"label":"Pacific/Samoa","value":"Pacific/Samoa"},{"label":"Africa/Accra","value":"Africa/Accra"},{"label":"Africa/Addis_Ababa","value":"Africa/Addis_Ababa"},{"label":"Africa/Asmara","value":"Africa/Asmara"},{"label":"Africa/Bamako","value":"Africa/Bamako"},{"label":"Africa/Bangui","value":"Africa/Bangui"},{"label":"Africa/Banjul","value":"Africa/Banjul"},{"label":"Africa/Blantyre","value":"Africa/Blantyre"},{"label":"Africa/Brazzaville","value":"Africa/Brazzaville"},{"label":"Africa/Bujumbura","value":"Africa/Bujumbura"},{"label":"Africa/Conakry","value":"Africa/Conakry"},{"label":"Africa/Dakar","value":"Africa/Dakar"},{"label":"Africa/Dar_es_Salaam","value":"Africa/Dar_es_Salaam"},{"label":"Africa/Djibouti","value":"Africa/Djibouti"},{"label":"Africa/Douala","value":"Africa/Douala"},{"label":"Africa/Freetown","value":"Africa/Freetown"},{"label":"Africa/Gaborone","value":"Africa/Gaborone"},{"label":"Africa/Harare","value":"Africa/Harare"},{"label":"Africa/Kampala","value":"Africa/Kampala"},{"label":"Africa/Kigali","value":"Africa/Kigali"},{"label":"Africa/Kinshasa","value":"Africa/Kinshasa"},{"label":"Africa/Libreville","value":"Africa/Libreville"},{"label":"Africa/Lome","value":"Africa/Lome"},{"label":"Africa/Luanda","value":"Africa/Luanda"},{"label":"Africa/Lubumbashi","value":"Africa/Lubumbashi"},{"label":"Africa/Lusaka","value":"Africa/Lusaka"},{"label":"Africa/Malabo","value":"Africa/Malabo"},{"label":"Africa/Maseru","value":"Africa/Maseru"},{"label":"Africa/Mbabane","value":"Africa/Mbabane"},{"label":"Africa/Mogadishu","value":"Africa/Mogadishu"},{"label":"Africa/Niamey","value":"Africa/Niamey"},{"label":"Africa/Nouakchott","value":"Africa/Nouakchott"},{"label":"Africa/Ouagadougou","value":"Africa/Ouagadougou"},{"label":"Africa/Porto-Novo","value":"Africa/Porto-Novo"},{"label":"America/Anguilla","value":"America/Anguilla"},{"label":"America/Antigua","value":"America/Antigua"},{"label":"America/Aruba","value":"America/Aruba"},{"label":"America/Atikokan","value":"America/Atikokan"},{"label":"America/Blanc-Sablon","value":"America/Blanc-Sablon"},{"label":"America/Cayman","value":"America/Cayman"},{"label":"America/Creston","value":"America/Creston"},{"label":"America/Curacao","value":"America/Curacao"},{"label":"America/Dominica","value":"America/Dominica"},{"label":"America/Grenada","value":"America/Grenada"},{"label":"America/Guadeloupe","value":"America/Guadeloupe"},{"label":"America/Kralendijk","value":"America/Kralendijk"},{"label":"America/Lower_Princes","value":"America/Lower_Princes"},{"label":"America/Marigot","value":"America/Marigot"},{"label":"America/Montserrat","value":"America/Montserrat"},{"label":"America/Nassau","value":"America/Nassau"},{"label":"America/Port_of_Spain","value":"America/Port_of_Spain"},{"label":"America/St_Barthelemy","value":"America/St_Barthelemy"},{"label":"America/St_Kitts","value":"America/St_Kitts"},{"label":"America/St_Lucia","value":"America/St_Lucia"},{"label":"America/St_Thomas","value":"America/St_Thomas"},{"label":"America/St_Vincent","value":"America/St_Vincent"},{"label":"America/Tortola","value":"America/Tortola"},{"label":"Antarctica/DumontDUrville","value":"Antarctica/DumontDUrville"},{"label":"Antarctica/McMurdo","value":"Antarctica/McMurdo"},{"label":"Antarctica/Syowa","value":"Antarctica/Syowa"},{"label":"Arctic/Longyearbyen","value":"Arctic/Longyearbyen"},{"label":"Asia/Aden","value":"Asia/Aden"},{"label":"Asia/Bahrain","value":"Asia/Bahrain"},{"label":"Asia/Brunei","value":"Asia/Brunei"},{"label":"Asia/Kuala_Lumpur","value":"Asia/Kuala_Lumpur"},{"label":"Asia/Kuwait","value":"Asia/Kuwait"},{"label":"Asia/Muscat","value":"Asia/Muscat"},{"label":"Asia/Phnom_Penh","value":"Asia/Phnom_Penh"},{"label":"Asia/Vientiane","value":"Asia/Vientiane"},{"label":"Atlantic/Reykjavik","value":"Atlantic/Reykjavik"},{"label":"Atlantic/St_Helena","value":"Atlantic/St_Helena"},{"label":"Europe/Amsterdam","value":"Europe/Amsterdam"},{"label":"Europe/Bratislava","value":"Europe/Bratislava"},{"label":"Europe/Busingen","value":"Europe/Busingen"},{"label":"Europe/Copenhagen","value":"Europe/Copenhagen"},{"label":"Europe/Guernsey","value":"Europe/Guernsey"},{"label":"Europe/Isle_of_Man","value":"Europe/Isle_of_Man"},{"label":"Europe/Jersey","value":"Europe/Jersey"},{"label":"Europe/Ljubljana","value":"Europe/Ljubljana"},{"label":"Europe/Luxembourg","value":"Europe/Luxembourg"},{"label":"Europe/Mariehamn","value":"Europe/Mariehamn"},{"label":"Europe/Monaco","value":"Europe/Monaco"},{"label":"Europe/Oslo","value":"Europe/Oslo"},{"label":"Europe/Podgorica","value":"Europe/Podgorica"},{"label":"Europe/San_Marino","value":"Europe/San_Marino"},{"label":"Europe/Sarajevo","value":"Europe/Sarajevo"},{"label":"Europe/Skopje","value":"Europe/Skopje"},{"label":"Europe/Stockholm","value":"Europe/Stockholm"},{"label":"Europe/Vaduz","value":"Europe/Vaduz"},{"label":"Europe/Vatican","value":"Europe/Vatican"},{"label":"Europe/Zagreb","value":"Europe/Zagreb"},{"label":"Indian/Antananarivo","value":"Indian/Antananarivo"},{"label":"Indian/Christmas","value":"Indian/Christmas"},{"label":"Indian/Cocos","value":"Indian/Cocos"},{"label":"Indian/Comoro","value":"Indian/Comoro"},{"label":"Indian/Kerguelen","value":"Indian/Kerguelen"},{"label":"Indian/Mahe","value":"Indian/Mahe"},{"label":"Indian/Mayotte","value":"Indian/Mayotte"},{"label":"Indian/Reunion","value":"Indian/Reunion"},{"label":"Pacific/Chuuk","value":"Pacific/Chuuk"},{"label":"Pacific/Funafuti","value":"Pacific/Funafuti"},{"label":"Pacific/Majuro","value":"Pacific/Majuro"},{"label":"Pacific/Midway","value":"Pacific/Midway"},{"label":"Pacific/Pohnpei","value":"Pacific/Pohnpei"},{"label":"Pacific/Saipan","value":"Pacific/Saipan"},{"label":"Pacific/Wake","value":"Pacific/Wake"},{"label":"Pacific/Wallis","value":"Pacific/Wallis"},{"label":"Africa/Timbuktu","value":"Africa/Timbuktu"},{"label":"America/Argentina/ComodRivadavia","value":"America/Argentina/ComodRivadavia"},{"label":"America/Atka","value":"America/Atka"},{"label":"America/Coral_Harbour","value":"America/Coral_Harbour"},{"label":"America/Ensenada","value":"America/Ensenada"},{"label":"America/Fort_Wayne","value":"America/Fort_Wayne"},{"label":"America/Montreal","value":"America/Montreal"},{"label":"America/Nipigon","value":"America/Nipigon"},{"label":"America/Pangnirtung","value":"America/Pangnirtung"},{"label":"America/Porto_Acre","value":"America/Porto_Acre"},{"label":"America/Rainy_River","value":"America/Rainy_River"},{"label":"America/Rosario","value":"America/Rosario"},{"label":"America/Santa_Isabel","value":"America/Santa_Isabel"},{"label":"America/Shiprock","value":"America/Shiprock"},{"label":"America/Thunder_Bay","value":"America/Thunder_Bay"},{"label":"America/Yellowknife","value":"America/Yellowknife"},{"label":"Antarctica/South_Pole","value":"Antarctica/South_Pole"},{"label":"Asia/Choibalsan","value":"Asia/Choibalsan"},{"label":"Asia/Chongqing","value":"Asia/Chongqing"},{"label":"Asia/Harbin","value":"Asia/Harbin"},{"label":"Asia/Kashgar","value":"Asia/Kashgar"},{"label":"Asia/Tel_Aviv","value":"Asia/Tel_Aviv"},{"label":"Atlantic/Jan_Mayen","value":"Atlantic/Jan_Mayen"},{"label":"Australia/Canberra","value":"Australia/Canberra"},{"label":"Australia/Currie","value":"Australia/Currie"},{"label":"Europe/Belfast","value":"Europe/Belfast"},{"label":"Europe/Tiraspol","value":"Europe/Tiraspol"},{"label":"Europe/Uzhgorod","value":"Europe/Uzhgorod"},{"label":"Europe/Zaporozhye","value":"Europe/Zaporozhye"},{"label":"Pacific/Enderbury","value":"Pacific/Enderbury"},{"label":"Pacific/Johnston","value":"Pacific/Johnston"},{"label":"Pacific/Yap","value":"Pacific/Yap"},{"label":"WET","value":"WET"},{"label":"Africa/Asmera","value":"Africa/Asmera"},{"label":"America/Godthab","value":"America/Godthab"},{"label":"Asia/Ashkhabad","value":"Asia/Ashkhabad"},{"label":"Asia/Calcutta","value":"Asia/Calcutta"},{"label":"Asia/Chungking","value":"Asia/Chungking"},{"label":"Asia/Dacca","value":"Asia/Dacca"},{"label":"Asia/Istanbul","value":"Asia/Istanbul"},{"label":"Asia/Katmandu","value":"Asia/Katmandu"},{"label":"Asia/Macao","value":"Asia/Macao"},{"label":"Asia/Rangoon","value":"Asia/Rangoon"},{"label":"Asia/Saigon","value":"Asia/Saigon"},{"label":"Asia/Thimbu","value":"Asia/Thimbu"},{"label":"Asia/Ujung_Pandang","value":"Asia/Ujung_Pandang"},{"label":"Asia/Ulan_Bator","value":"Asia/Ulan_Bator"},{"label":"Atlantic/Faeroe","value":"Atlantic/Faeroe"},{"label":"Europe/Kiev","value":"Europe/Kiev"},{"label":"Europe/Nicosia","value":"Europe/Nicosia"},{"label":"HST","value":"HST"},{"label":"PST8PDT","value":"PST8PDT"},{"label":"Pacific/Ponape","value":"Pacific/Ponape"},{"label":"Pacific/Truk","value":"Pacific/Truk"},{"label":"Etc/UTC","value":"Etc/UTC"},{"label":"Etc/GMT","value":"Etc/GMT"},{"label":"GMT","value":"GMT"},{"label":"Etc/GMT-14","value":"Etc/GMT-14"},{"label":"Etc/GMT-13","value":"Etc/GMT-13"},{"label":"Etc/GMT-12","value":"Etc/GMT-12"},{"label":"Etc/GMT-11","value":"Etc/GMT-11"},{"label":"Etc/GMT-10","value":"Etc/GMT-10"},{"label":"Etc/GMT-9","value":"Etc/GMT-9"},{"label":"Etc/GMT-8","value":"Etc/GMT-8"},{"label":"Etc/GMT-7","value":"Etc/GMT-7"},{"label":"Etc/GMT-6","value":"Etc/GMT-6"},{"label":"Etc/GMT-5","value":"Etc/GMT-5"},{"label":"Etc/GMT-4","value":"Etc/GMT-4"},{"label":"Etc/GMT-3","value":"Etc/GMT-3"},{"label":"Etc/GMT-2","value":"Etc/GMT-2"},{"label":"Etc/GMT-1","value":"Etc/GMT-1"},{"label":"Etc/GMT+1","value":"Etc/GMT+1"},{"label":"Etc/GMT+2","value":"Etc/GMT+2"},{"label":"Etc/GMT+3","value":"Etc/GMT+3"},{"label":"Etc/GMT+4","value":"Etc/GMT+4"},{"label":"Etc/GMT+5","value":"Etc/GMT+5"},{"label":"Etc/GMT+6","value":"Etc/GMT+6"},{"label":"Etc/GMT+7","value":"Etc/GMT+7"},{"label":"Etc/GMT+8","value":"Etc/GMT+8"},{"label":"Etc/GMT+9","value":"Etc/GMT+9"},{"label":"Etc/GMT+10","value":"Etc/GMT+10"},{"label":"Etc/GMT+11","value":"Etc/GMT+11"},{"label":"Etc/GMT+12","value":"Etc/GMT+12"},{"label":"Europe/London","value":"Europe/London"},{"label":"Europe/Dublin","value":"Europe/Dublin"},{"label":"Europe/Tirane","value":"Europe/Tirane"},{"label":"Europe/Andorra","value":"Europe/Andorra"},{"label":"Europe/Vienna","value":"Europe/Vienna"},{"label":"Europe/Minsk","value":"Europe/Minsk"},{"label":"Europe/Brussels","value":"Europe/Brussels"},{"label":"Europe/Sofia","value":"Europe/Sofia"},{"label":"Europe/Prague","value":"Europe/Prague"},{"label":"Atlantic/Faroe","value":"Atlantic/Faroe"},{"label":"America/Danmarkshavn","value":"America/Danmarkshavn"},{"label":"America/Scoresbysund","value":"America/Scoresbysund"},{"label":"America/Nuuk","value":"America/Nuuk"},{"label":"America/Thule","value":"America/Thule"},{"label":"Europe/Tallinn","value":"Europe/Tallinn"},{"label":"Europe/Helsinki","value":"Europe/Helsinki"},{"label":"Europe/Paris","value":"Europe/Paris"},{"label":"Europe/Berlin","value":"Europe/Berlin"},{"label":"Europe/Gibraltar","value":"Europe/Gibraltar"},{"label":"Europe/Athens","value":"Europe/Athens"},{"label":"Europe/Budapest","value":"Europe/Budapest"},{"label":"Europe/Rome","value":"Europe/Rome"},{"label":"Europe/Riga","value":"Europe/Riga"},{"label":"Europe/Vilnius","value":"Europe/Vilnius"},{"label":"Europe/Malta","value":"Europe/Malta"},{"label":"Europe/Chisinau","value":"Europe/Chisinau"},{"label":"Europe/Warsaw","value":"Europe/Warsaw"},{"label":"Europe/Lisbon","value":"Europe/Lisbon"},{"label":"Atlantic/Azores","value":"Atlantic/Azores"},{"label":"Atlantic/Madeira","value":"Atlantic/Madeira"},{"label":"Europe/Bucharest","value":"Europe/Bucharest"},{"label":"Europe/Kaliningrad","value":"Europe/Kaliningrad"},{"label":"Europe/Moscow","value":"Europe/Moscow"},{"label":"Europe/Simferopol","value":"Europe/Simferopol"},{"label":"Europe/Astrakhan","value":"Europe/Astrakhan"},{"label":"Europe/Volgograd","value":"Europe/Volgograd"},{"label":"Europe/Saratov","value":"Europe/Saratov"},{"label":"Europe/Kirov","value":"Europe/Kirov"},{"label":"Europe/Samara","value":"Europe/Samara"},{"label":"Europe/Ulyanovsk","value":"Europe/Ulyanovsk"},{"label":"Asia/Yekaterinburg","value":"Asia/Yekaterinburg"},{"label":"Asia/Omsk","value":"Asia/Omsk"},{"label":"Asia/Barnaul","value":"Asia/Barnaul"},{"label":"Asia/Novosibirsk","value":"Asia/Novosibirsk"},{"label":"Asia/Tomsk","value":"Asia/Tomsk"},{"label":"Asia/Novokuznetsk","value":"Asia/Novokuznetsk"},{"label":"Asia/Krasnoyarsk","value":"Asia/Krasnoyarsk"},{"label":"Asia/Irkutsk","value":"Asia/Irkutsk"},{"label":"Asia/Chita","value":"Asia/Chita"},{"label":"Asia/Yakutsk","value":"Asia/Yakutsk"},{"label":"Asia/Vladivostok","value":"Asia/Vladivostok"},{"label":"Asia/Khandyga","value":"Asia/Khandyga"},{"label":"Asia/Sakhalin","value":"Asia/Sakhalin"},{"label":"Asia/Magadan","value":"Asia/Magadan"},{"label":"Asia/Srednekolymsk","value":"Asia/Srednekolymsk"},{"label":"Asia/Ust-Nera","value":"Asia/Ust-Nera"},{"label":"Asia/Kamchatka","value":"Asia/Kamchatka"},{"label":"Asia/Anadyr","value":"Asia/Anadyr"},{"label":"Europe/Belgrade","value":"Europe/Belgrade"},{"label":"Europe/Madrid","value":"Europe/Madrid"},{"label":"Africa/Ceuta","value":"Africa/Ceuta"},{"label":"Atlantic/Canary","value":"Atlantic/Canary"},{"label":"Europe/Zurich","value":"Europe/Zurich"},{"label":"Europe/Istanbul","value":"Europe/Istanbul"},{"label":"Europe/Kyiv","value":"Europe/Kyiv"},{"label":"Factory","value":"Factory"},{"label":"America/New_York","value":"America/New_York"},{"label":"America/Chicago","value":"America/Chicago"},{"label":"America/North_Dakota/Center","value":"America/North_Dakota/Center"},{"label":"America/North_Dakota/New_Salem","value":"America/North_Dakota/New_Salem"},{"label":"America/North_Dakota/Beulah","value":"America/North_Dakota/Beulah"},{"label":"America/Denver","value":"America/Denver"},{"label":"America/Los_Angeles","value":"America/Los_Angeles"},{"label":"America/Juneau","value":"America/Juneau"},{"label":"America/Sitka","value":"America/Sitka"},{"label":"America/Metlakatla","value":"America/Metlakatla"},{"label":"America/Yakutat","value":"America/Yakutat"},{"label":"America/Anchorage","value":"America/Anchorage"},{"label":"America/Nome","value":"America/Nome"},{"label":"America/Adak","value":"America/Adak"},{"label":"Pacific/Honolulu","value":"Pacific/Honolulu"},{"label":"America/Phoenix","value":"America/Phoenix"},{"label":"America/Boise","value":"America/Boise"},{"label":"America/Indiana/Indianapolis","value":"America/Indiana/Indianapolis"},{"label":"America/Indiana/Marengo","value":"America/Indiana/Marengo"},{"label":"America/Indiana/Vincennes","value":"America/Indiana/Vincennes"},{"label":"America/Indiana/Tell_City","value":"America/Indiana/Tell_City"},{"label":"America/Indiana/Petersburg","value":"America/Indiana/Petersburg"},{"label":"America/Indiana/Knox","value":"America/Indiana/Knox"},{"label":"America/Indiana/Winamac","value":"America/Indiana/Winamac"},{"label":"America/Indiana/Vevay","value":"America/Indiana/Vevay"},{"label":"America/Kentucky/Louisville","value":"America/Kentucky/Louisville"},{"label":"America/Kentucky/Monticello","value":"America/Kentucky/Monticello"},{"label":"America/Detroit","value":"America/Detroit"},{"label":"America/Menominee","value":"America/Menominee"},{"label":"America/St_Johns","value":"America/St_Johns"},{"label":"America/Goose_Bay","value":"America/Goose_Bay"},{"label":"America/Halifax","value":"America/Halifax"},{"label":"America/Glace_Bay","value":"America/Glace_Bay"},{"label":"America/Moncton","value":"America/Moncton"},{"label":"America/Toronto","value":"America/Toronto"},{"label":"America/Winnipeg","value":"America/Winnipeg"},{"label":"America/Regina","value":"America/Regina"},{"label":"America/Swift_Current","value":"America/Swift_Current"},{"label":"America/Edmonton","value":"America/Edmonton"},{"label":"America/Vancouver","value":"America/Vancouver"},{"label":"America/Dawson_Creek","value":"America/Dawson_Creek"},{"label":"America/Fort_Nelson","value":"America/Fort_Nelson"},{"label":"America/Iqaluit","value":"America/Iqaluit"},{"label":"America/Resolute","value":"America/Resolute"},{"label":"America/Rankin_Inlet","value":"America/Rankin_Inlet"},{"label":"America/Cambridge_Bay","value":"America/Cambridge_Bay"},{"label":"America/Inuvik","value":"America/Inuvik"},{"label":"America/Whitehorse","value":"America/Whitehorse"},{"label":"America/Dawson","value":"America/Dawson"},{"label":"America/Cancun","value":"America/Cancun"},{"label":"America/Merida","value":"America/Merida"},{"label":"America/Matamoros","value":"America/Matamoros"},{"label":"America/Monterrey","value":"America/Monterrey"},{"label":"America/Mexico_City","value":"America/Mexico_City"},{"label":"America/Ciudad_Juarez","value":"America/Ciudad_Juarez"},{"label":"America/Ojinaga","value":"America/Ojinaga"},{"label":"America/Chihuahua","value":"America/Chihuahua"},{"label":"America/Hermosillo","value":"America/Hermosillo"},{"label":"America/Mazatlan","value":"America/Mazatlan"},{"label":"America/Bahia_Banderas","value":"America/Bahia_Banderas"},{"label":"America/Tijuana","value":"America/Tijuana"},{"label":"America/Barbados","value":"America/Barbados"},{"label":"America/Belize","value":"America/Belize"},{"label":"Atlantic/Bermuda","value":"Atlantic/Bermuda"},{"label":"America/Costa_Rica","value":"America/Costa_Rica"},{"label":"America/Havana","value":"America/Havana"},{"label":"America/Santo_Domingo","value":"America/Santo_Domingo"},{"label":"America/El_Salvador","value":"America/El_Salvador"},{"label":"America/Guatemala","value":"America/Guatemala"},{"label":"America/Port-au-Prince","value":"America/Port-au-Prince"},{"label":"America/Tegucigalpa","value":"America/Tegucigalpa"},{"label":"America/Jamaica","value":"America/Jamaica"},{"label":"America/Martinique","value":"America/Martinique"},{"label":"America/Managua","value":"America/Managua"},{"label":"America/Panama","value":"America/Panama"},{"label":"America/Puerto_Rico","value":"America/Puerto_Rico"},{"label":"America/Miquelon","value":"America/Miquelon"},{"label":"America/Grand_Turk","value":"America/Grand_Turk"},{"label":"America/Argentina/Buenos_Aires","value":"America/Argentina/Buenos_Aires"},{"label":"America/Argentina/Cordoba","value":"America/Argentina/Cordoba"},{"label":"America/Argentina/Salta","value":"America/Argentina/Salta"},{"label":"America/Argentina/Tucuman","value":"America/Argentina/Tucuman"},{"label":"America/Argentina/La_Rioja","value":"America/Argentina/La_Rioja"},{"label":"America/Argentina/San_Juan","value":"America/Argentina/San_Juan"},{"label":"America/Argentina/Jujuy","value":"America/Argentina/Jujuy"},{"label":"America/Argentina/Catamarca","value":"America/Argentina/Catamarca"},{"label":"America/Argentina/Mendoza","value":"America/Argentina/Mendoza"},{"label":"America/Argentina/San_Luis","value":"America/Argentina/San_Luis"},{"label":"America/Argentina/Rio_Gallegos","value":"America/Argentina/Rio_Gallegos"},{"label":"America/Argentina/Ushuaia","value":"America/Argentina/Ushuaia"},{"label":"America/La_Paz","value":"America/La_Paz"},{"label":"America/Noronha","value":"America/Noronha"},{"label":"America/Belem","value":"America/Belem"},{"label":"America/Santarem","value":"America/Santarem"},{"label":"America/Fortaleza","value":"America/Fortaleza"},{"label":"America/Recife","value":"America/Recife"},{"label":"America/Araguaina","value":"America/Araguaina"},{"label":"America/Maceio","value":"America/Maceio"},{"label":"America/Bahia","value":"America/Bahia"},{"label":"America/Sao_Paulo","value":"America/Sao_Paulo"},{"label":"America/Campo_Grande","value":"America/Campo_Grande"},{"label":"America/Cuiaba","value":"America/Cuiaba"},{"label":"America/Porto_Velho","value":"America/Porto_Velho"},{"label":"America/Boa_Vista","value":"America/Boa_Vista"},{"label":"America/Manaus","value":"America/Manaus"},{"label":"America/Eirunepe","value":"America/Eirunepe"},{"label":"America/Rio_Branco","value":"America/Rio_Branco"},{"label":"America/Santiago","value":"America/Santiago"},{"label":"America/Coyhaique","value":"America/Coyhaique"},{"label":"America/Punta_Arenas","value":"America/Punta_Arenas"},{"label":"Pacific/Easter","value":"Pacific/Easter"},{"label":"Antarctica/Palmer","value":"Antarctica/Palmer"},{"label":"America/Bogota","value":"America/Bogota"},{"label":"America/Guayaquil","value":"America/Guayaquil"},{"label":"Pacific/Galapagos","value":"Pacific/Galapagos"},{"label":"Atlantic/Stanley","value":"Atlantic/Stanley"},{"label":"America/Cayenne","value":"America/Cayenne"},{"label":"America/Guyana","value":"America/Guyana"},{"label":"America/Asuncion","value":"America/Asuncion"},{"label":"America/Lima","value":"America/Lima"},{"label":"Atlantic/South_Georgia","value":"Atlantic/South_Georgia"},{"label":"America/Paramaribo","value":"America/Paramaribo"},{"label":"America/Montevideo","value":"America/Montevideo"},{"label":"America/Caracas","value":"America/Caracas"}]}},"tools":{"id":"tools","label":"Tools","description":"Interact with the real world through API calls.","type":"json","required":false},"voicemail_message":{"id":"voicemail_message","label":"Voicemail message","description":"When the AI encounters a voicemail, it will leave this message after the beep and then immediately end the call.","type":"text","required":false},"voicemail_action":{"id":"voicemail_action","label":"Voicemail action","description":"This is processed separately from the AI’s decision making, and overrides it. If voicemail_message is set, then the AI will leave the message regardless of the voicemail_action.","type":"json","required":false},"retry":{"id":"retry","label":"Retry","description":"If the call goes to voicemail, you can set up the call to retry, after a configurable delay.","type":"json","required":false},"max_duration":{"id":"max_duration","label":"Max duration (minutes)","description":"When the call starts, a timer is set for the max_duration minutes. At the end of that timer, if the call is still active it will be automatically ended.","type":"numeric","required":false},"record":{"id":"record","label":"Record call","description":"When your call completes, you can access through the recording_url field in the call details or your webhook.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"metadata":{"id":"metadata","label":"Metadata","description":"Add any additional information you want to associate with the call. This data is accessible for all calls, regardless of if they are picked up or not. This can be used to track calls or add custom data to the call.","type":"json","required":false},"analysis_preset":{"id":"analysis_preset","label":"Analysis preset","description":"The analysis preset UUID used to analyze the call, must be created on the analysis presets page.","type":"string","required":false},"available_tags":{"id":"available_tags","label":"Available tags","description":"Comma-separated list of disposition tags. Upon call completion, the AI will evaluate the transcripts of the call and assign one of the tags to the “disposition_tag” field.","type":"string","required":false},"geospatial_dialing":{"id":"geospatial_dialing","label":"Geospatial dialing","description":"The geospatial dialing pool UUID.","type":"string","required":false},"precall_dtmf_sequence":{"id":"precall_dtmf_sequence","label":"Pre-call DTMF sequence","description":"A sequence of DTMF digits that will be played before the call starts.","type":"string","required":false},"requestData":{"id":"requestData","label":"Request data","description":"Any JSON you put in here will be visible to the AI agent during the call - and can also be referenced with Prompt Variables.","type":"json","required":false},"analysisSchema":{"id":"analysisSchema","label":"Analysis schema","description":"Define a JSON schema for how you want to get information about the call - information like email addresses, names, appointment times or any other type of custom data.","type":"json","required":false},"otherData":{"id":"otherData","label":"Other data","description":"Any fields you put in here will be sent in the request body of the call, but will be overridden by all other fields above if that field is also set.","type":"json","required":false},"completeExtensionActivityAsync":{"id":"completeExtensionActivityAsync","label":"Complete extension activity async","description":"Whether to complete the extension activity async. When true, the extension activity will be completed asynchronously via a webhook.","type":"boolean","required":false}},"previewable":true,"dataPoints":{"call_id":{"key":"call_id","valueType":"string"}},"supports_automated_retries":true},"sendCall":{"key":"sendCall","title":"Send call","description":"Send an AI phone call with a custom objective and actions.","category":"Communication","fields":{"phoneNumber":{"id":"phoneNumber","label":"Phone number","description":"The phone number to call.","type":"string","stringType":"phone","required":true},"webhook":{"id":"webhook","label":"Webhook","description":"The webhook to send the call completed event to.","type":"string","required":false},"task":{"id":"task","label":"Task","description":"Provide instructions, relevant information, and examples of the ideal conversation flow.","type":"text","required":true},"voice":{"id":"voice","label":"Voice","description":"The voice of the AI agent to use. Accepts any form of voice ID, including custom voice clones and voice presets.","type":"string","required":false},"background_track":{"id":"background_track","label":"Background track","description":"Select an audio track that you’d like to play in the background during the call. The audio will play continuously when the agent isn’t speaking, and is incorporated into it’s speech as well.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"null","label":"Default"},{"value":"office","label":"Office"},{"value":"cafe","label":"Cafe"},{"value":"restaurant","label":"Restaurant"},{"value":"none","label":"None"}]}},"first_sentence":{"id":"first_sentence","label":"First sentence","description":"Makes your agent say a specific phrase or sentence for it’s first response.","type":"string","required":false},"wait_for_greeting":{"id":"wait_for_greeting","label":"Wait for greeting","description":"When enabled, the agent will wait for the call recipient to speak first before responding.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"block_interruptions":{"id":"block_interruptions","label":"Block interruptions","description":"When enabled, the AI will not respond or process interruptions from the user.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"interruption_threshold":{"id":"interruption_threshold","label":"Interruption threshold","description":"Adjusts how patient the AI is when waiting for the user to finish speaking. Lower values mean the AI will respond more quickly, while higher values mean the AI will wait longer before responding.","type":"numeric","required":false},"model":{"id":"model","label":"Model","description":"Select a model to use for your call.","type":"string","required":false,"options":{"dropdownOptions":[{"label":"base","value":"base"},{"label":"turbo","value":"turbo"}]}},"temperature":{"id":"temperature","label":"Temperature","description":"A value between 0 and 1 that controls the randomness of the LLM. 0 will cause more deterministic outputs while 1 will cause more random.","type":"numeric","required":false},"dynamic_data":{"id":"dynamic_data","label":"Dynamic data","description":"Integrate data from external APIs into your agent’s knowledge.","type":"json","required":false},"keywords":{"id":"keywords","label":"Keywords","description":"Comma-separated list of keywords. These words will be boosted in the transcription engine - recommended for proper nouns or words that are frequently mis-transcribed.","type":"string","required":false},"pronunciation_guide":{"id":"pronunciation_guide","label":"Pronunciation guide","description":"The pronunciation guide is an array of objects that guides the agent on how to say specific words. This is great for situations with complicated terms or names.","type":"json","required":false},"language":{"id":"language","label":"Language","description":"Optimizes every part of our API for that language - transcription, speech, and other inner workings.","type":"string","required":false},"local_dialing":{"id":"local_dialing","label":"Local dialing","description":"When true, automatically selects a “from” number that matches the callee’s area code for US-based calls. Must have purchased a local dialing add-on.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"voicemail_sms":{"id":"voicemail_sms","label":"Voicemail SMS","description":"Configure SMS settings for voicemail notifications.","type":"json","required":false},"dispatch_hours":{"id":"dispatch_hours","label":"Dispatch hours","description":"Restricts calls to certain hours in your timezone.","type":"json","required":false},"sensitive_voicemail_detection":{"id":"sensitive_voicemail_detection","label":"Sensitive voicemail detection","description":"When true, uses LLM-based analysis to detect frequent voicemails.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"noise_cancellation":{"id":"noise_cancellation","label":"Noise cancellation","description":"Toggles noise filtering or suppression in the audio stream to filter out background noise.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"ignore_button_press":{"id":"ignore_button_press","label":"Ignore button press","description":"When true, DTMF (digit) presses are ignored, disabling menu navigation or call transfers triggered by keypad input.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"timezone":{"id":"timezone","label":"Timezone","description":"Set the timezone for the call. Handled automatically for calls in the US.","type":"string","required":false,"options":{"dropdownOptions":[{"label":"Africa/Algiers","value":"Africa/Algiers"},{"label":"Atlantic/Cape_Verde","value":"Atlantic/Cape_Verde"},{"label":"Africa/Ndjamena","value":"Africa/Ndjamena"},{"label":"Africa/Abidjan","value":"Africa/Abidjan"},{"label":"Africa/Cairo","value":"Africa/Cairo"},{"label":"Africa/Bissau","value":"Africa/Bissau"},{"label":"Africa/Nairobi","value":"Africa/Nairobi"},{"label":"Africa/Monrovia","value":"Africa/Monrovia"},{"label":"Africa/Tripoli","value":"Africa/Tripoli"},{"label":"Indian/Mauritius","value":"Indian/Mauritius"},{"label":"Africa/Casablanca","value":"Africa/Casablanca"},{"label":"Africa/El_Aaiun","value":"Africa/El_Aaiun"},{"label":"Africa/Maputo","value":"Africa/Maputo"},{"label":"Africa/Windhoek","value":"Africa/Windhoek"},{"label":"Africa/Lagos","value":"Africa/Lagos"},{"label":"Africa/Sao_Tome","value":"Africa/Sao_Tome"},{"label":"Africa/Johannesburg","value":"Africa/Johannesburg"},{"label":"Africa/Khartoum","value":"Africa/Khartoum"},{"label":"Africa/Juba","value":"Africa/Juba"},{"label":"Africa/Tunis","value":"Africa/Tunis"},{"label":"Antarctica/Casey","value":"Antarctica/Casey"},{"label":"Antarctica/Davis","value":"Antarctica/Davis"},{"label":"Antarctica/Mawson","value":"Antarctica/Mawson"},{"label":"Antarctica/Troll","value":"Antarctica/Troll"},{"label":"Antarctica/Vostok","value":"Antarctica/Vostok"},{"label":"Antarctica/Rothera","value":"Antarctica/Rothera"},{"label":"Asia/Kabul","value":"Asia/Kabul"},{"label":"Asia/Yerevan","value":"Asia/Yerevan"},{"label":"Asia/Baku","value":"Asia/Baku"},{"label":"Asia/Dhaka","value":"Asia/Dhaka"},{"label":"Asia/Thimphu","value":"Asia/Thimphu"},{"label":"Indian/Chagos","value":"Indian/Chagos"},{"label":"Asia/Yangon","value":"Asia/Yangon"},{"label":"Asia/Shanghai","value":"Asia/Shanghai"},{"label":"Asia/Urumqi","value":"Asia/Urumqi"},{"label":"Asia/Hong_Kong","value":"Asia/Hong_Kong"},{"label":"Asia/Taipei","value":"Asia/Taipei"},{"label":"Asia/Macau","value":"Asia/Macau"},{"label":"Asia/Nicosia","value":"Asia/Nicosia"},{"label":"Asia/Famagusta","value":"Asia/Famagusta"},{"label":"Asia/Tbilisi","value":"Asia/Tbilisi"},{"label":"Asia/Dili","value":"Asia/Dili"},{"label":"Asia/Kolkata","value":"Asia/Kolkata"},{"label":"Asia/Jakarta","value":"Asia/Jakarta"},{"label":"Asia/Pontianak","value":"Asia/Pontianak"},{"label":"Asia/Makassar","value":"Asia/Makassar"},{"label":"Asia/Jayapura","value":"Asia/Jayapura"},{"label":"Asia/Tehran","value":"Asia/Tehran"},{"label":"Asia/Baghdad","value":"Asia/Baghdad"},{"label":"Asia/Jerusalem","value":"Asia/Jerusalem"},{"label":"Asia/Tokyo","value":"Asia/Tokyo"},{"label":"Asia/Amman","value":"Asia/Amman"},{"label":"Asia/Almaty","value":"Asia/Almaty"},{"label":"Asia/Qyzylorda","value":"Asia/Qyzylorda"},{"label":"Asia/Qostanay","value":"Asia/Qostanay"},{"label":"Asia/Aqtobe","value":"Asia/Aqtobe"},{"label":"Asia/Aqtau","value":"Asia/Aqtau"},{"label":"Asia/Atyrau","value":"Asia/Atyrau"},{"label":"Asia/Oral","value":"Asia/Oral"},{"label":"Asia/Bishkek","value":"Asia/Bishkek"},{"label":"Asia/Seoul","value":"Asia/Seoul"},{"label":"Asia/Pyongyang","value":"Asia/Pyongyang"},{"label":"Asia/Beirut","value":"Asia/Beirut"},{"label":"Asia/Kuching","value":"Asia/Kuching"},{"label":"Indian/Maldives","value":"Indian/Maldives"},{"label":"Asia/Hovd","value":"Asia/Hovd"},{"label":"Asia/Ulaanbaatar","value":"Asia/Ulaanbaatar"},{"label":"Asia/Kathmandu","value":"Asia/Kathmandu"},{"label":"Asia/Karachi","value":"Asia/Karachi"},{"label":"Asia/Gaza","value":"Asia/Gaza"},{"label":"Asia/Hebron","value":"Asia/Hebron"},{"label":"Asia/Manila","value":"Asia/Manila"},{"label":"Asia/Qatar","value":"Asia/Qatar"},{"label":"Asia/Riyadh","value":"Asia/Riyadh"},{"label":"Asia/Singapore","value":"Asia/Singapore"},{"label":"Asia/Colombo","value":"Asia/Colombo"},{"label":"Asia/Damascus","value":"Asia/Damascus"},{"label":"Asia/Dushanbe","value":"Asia/Dushanbe"},{"label":"Asia/Bangkok","value":"Asia/Bangkok"},{"label":"Asia/Ashgabat","value":"Asia/Ashgabat"},{"label":"Asia/Dubai","value":"Asia/Dubai"},{"label":"Asia/Samarkand","value":"Asia/Samarkand"},{"label":"Asia/Tashkent","value":"Asia/Tashkent"},{"label":"Asia/Ho_Chi_Minh","value":"Asia/Ho_Chi_Minh"},{"label":"Australia/Darwin","value":"Australia/Darwin"},{"label":"Australia/Perth","value":"Australia/Perth"},{"label":"Australia/Eucla","value":"Australia/Eucla"},{"label":"Australia/Brisbane","value":"Australia/Brisbane"},{"label":"Australia/Lindeman","value":"Australia/Lindeman"},{"label":"Australia/Adelaide","value":"Australia/Adelaide"},{"label":"Australia/Hobart","value":"Australia/Hobart"},{"label":"Australia/Melbourne","value":"Australia/Melbourne"},{"label":"Australia/Sydney","value":"Australia/Sydney"},{"label":"Australia/Broken_Hill","value":"Australia/Broken_Hill"},{"label":"Australia/Lord_Howe","value":"Australia/Lord_Howe"},{"label":"Antarctica/Macquarie","value":"Antarctica/Macquarie"},{"label":"Pacific/Fiji","value":"Pacific/Fiji"},{"label":"Pacific/Gambier","value":"Pacific/Gambier"},{"label":"Pacific/Marquesas","value":"Pacific/Marquesas"},{"label":"Pacific/Tahiti","value":"Pacific/Tahiti"},{"label":"Pacific/Guam","value":"Pacific/Guam"},{"label":"Pacific/Tarawa","value":"Pacific/Tarawa"},{"label":"Pacific/Kanton","value":"Pacific/Kanton"},{"label":"Pacific/Kiritimati","value":"Pacific/Kiritimati"},{"label":"Pacific/Kwajalein","value":"Pacific/Kwajalein"},{"label":"Pacific/Kosrae","value":"Pacific/Kosrae"},{"label":"Pacific/Nauru","value":"Pacific/Nauru"},{"label":"Pacific/Noumea","value":"Pacific/Noumea"},{"label":"Pacific/Auckland","value":"Pacific/Auckland"},{"label":"Pacific/Chatham","value":"Pacific/Chatham"},{"label":"Pacific/Rarotonga","value":"Pacific/Rarotonga"},{"label":"Pacific/Niue","value":"Pacific/Niue"},{"label":"Pacific/Norfolk","value":"Pacific/Norfolk"},{"label":"Pacific/Palau","value":"Pacific/Palau"},{"label":"Pacific/Port_Moresby","value":"Pacific/Port_Moresby"},{"label":"Pacific/Bougainville","value":"Pacific/Bougainville"},{"label":"Pacific/Pitcairn","value":"Pacific/Pitcairn"},{"label":"Pacific/Pago_Pago","value":"Pacific/Pago_Pago"},{"label":"Pacific/Apia","value":"Pacific/Apia"},{"label":"Pacific/Guadalcanal","value":"Pacific/Guadalcanal"},{"label":"Pacific/Fakaofo","value":"Pacific/Fakaofo"},{"label":"Pacific/Tongatapu","value":"Pacific/Tongatapu"},{"label":"Pacific/Efate","value":"Pacific/Efate"},{"label":"Australia/ACT","value":"Australia/ACT"},{"label":"Australia/LHI","value":"Australia/LHI"},{"label":"Australia/NSW","value":"Australia/NSW"},{"label":"Australia/North","value":"Australia/North"},{"label":"Australia/Queensland","value":"Australia/Queensland"},{"label":"Australia/South","value":"Australia/South"},{"label":"Australia/Tasmania","value":"Australia/Tasmania"},{"label":"Australia/Victoria","value":"Australia/Victoria"},{"label":"Australia/West","value":"Australia/West"},{"label":"Australia/Yancowinna","value":"Australia/Yancowinna"},{"label":"Brazil/Acre","value":"Brazil/Acre"},{"label":"Brazil/DeNoronha","value":"Brazil/DeNoronha"},{"label":"Brazil/East","value":"Brazil/East"},{"label":"Brazil/West","value":"Brazil/West"},{"label":"CET","value":"CET"},{"label":"CST6CDT","value":"CST6CDT"},{"label":"Canada/Atlantic","value":"Canada/Atlantic"},{"label":"Canada/Central","value":"Canada/Central"},{"label":"Canada/Eastern","value":"Canada/Eastern"},{"label":"Canada/Mountain","value":"Canada/Mountain"},{"label":"Canada/Newfoundland","value":"Canada/Newfoundland"},{"label":"Canada/Pacific","value":"Canada/Pacific"},{"label":"Canada/Saskatchewan","value":"Canada/Saskatchewan"},{"label":"Canada/Yukon","value":"Canada/Yukon"},{"label":"Chile/Continental","value":"Chile/Continental"},{"label":"Chile/EasterIsland","value":"Chile/EasterIsland"},{"label":"Cuba","value":"Cuba"},{"label":"EET","value":"EET"},{"label":"EST","value":"EST"},{"label":"EST5EDT","value":"EST5EDT"},{"label":"Egypt","value":"Egypt"},{"label":"Eire","value":"Eire"},{"label":"Etc/GMT+0","value":"Etc/GMT+0"},{"label":"Etc/GMT-0","value":"Etc/GMT-0"},{"label":"Etc/GMT0","value":"Etc/GMT0"},{"label":"Etc/Greenwich","value":"Etc/Greenwich"},{"label":"Etc/UCT","value":"Etc/UCT"},{"label":"Etc/Universal","value":"Etc/Universal"},{"label":"Etc/Zulu","value":"Etc/Zulu"},{"label":"GB","value":"GB"},{"label":"GB-Eire","value":"GB-Eire"},{"label":"GMT+0","value":"GMT+0"},{"label":"GMT-0","value":"GMT-0"},{"label":"GMT0","value":"GMT0"},{"label":"Greenwich","value":"Greenwich"},{"label":"Hongkong","value":"Hongkong"},{"label":"Iceland","value":"Iceland"},{"label":"Iran","value":"Iran"},{"label":"Israel","value":"Israel"},{"label":"Jamaica","value":"Jamaica"},{"label":"Japan","value":"Japan"},{"label":"Kwajalein","value":"Kwajalein"},{"label":"Libya","value":"Libya"},{"label":"MET","value":"MET"},{"label":"MST","value":"MST"},{"label":"MST7MDT","value":"MST7MDT"},{"label":"Mexico/BajaNorte","value":"Mexico/BajaNorte"},{"label":"Mexico/BajaSur","value":"Mexico/BajaSur"},{"label":"Mexico/General","value":"Mexico/General"},{"label":"NZ","value":"NZ"},{"label":"NZ-CHAT","value":"NZ-CHAT"},{"label":"Navajo","value":"Navajo"},{"label":"PRC","value":"PRC"},{"label":"Poland","value":"Poland"},{"label":"Portugal","value":"Portugal"},{"label":"ROC","value":"ROC"},{"label":"ROK","value":"ROK"},{"label":"Singapore","value":"Singapore"},{"label":"Turkey","value":"Turkey"},{"label":"UCT","value":"UCT"},{"label":"US/Alaska","value":"US/Alaska"},{"label":"US/Aleutian","value":"US/Aleutian"},{"label":"US/Arizona","value":"US/Arizona"},{"label":"US/Central","value":"US/Central"},{"label":"US/East-Indiana","value":"US/East-Indiana"},{"label":"US/Eastern","value":"US/Eastern"},{"label":"US/Hawaii","value":"US/Hawaii"},{"label":"US/Indiana-Starke","value":"US/Indiana-Starke"},{"label":"US/Michigan","value":"US/Michigan"},{"label":"US/Mountain","value":"US/Mountain"},{"label":"US/Pacific","value":"US/Pacific"},{"label":"US/Samoa","value":"US/Samoa"},{"label":"UTC","value":"UTC"},{"label":"Universal","value":"Universal"},{"label":"W-SU","value":"W-SU"},{"label":"Zulu","value":"Zulu"},{"label":"America/Buenos_Aires","value":"America/Buenos_Aires"},{"label":"America/Catamarca","value":"America/Catamarca"},{"label":"America/Cordoba","value":"America/Cordoba"},{"label":"America/Indianapolis","value":"America/Indianapolis"},{"label":"America/Jujuy","value":"America/Jujuy"},{"label":"America/Knox_IN","value":"America/Knox_IN"},{"label":"America/Louisville","value":"America/Louisville"},{"label":"America/Mendoza","value":"America/Mendoza"},{"label":"America/Virgin","value":"America/Virgin"},{"label":"Pacific/Samoa","value":"Pacific/Samoa"},{"label":"Africa/Accra","value":"Africa/Accra"},{"label":"Africa/Addis_Ababa","value":"Africa/Addis_Ababa"},{"label":"Africa/Asmara","value":"Africa/Asmara"},{"label":"Africa/Bamako","value":"Africa/Bamako"},{"label":"Africa/Bangui","value":"Africa/Bangui"},{"label":"Africa/Banjul","value":"Africa/Banjul"},{"label":"Africa/Blantyre","value":"Africa/Blantyre"},{"label":"Africa/Brazzaville","value":"Africa/Brazzaville"},{"label":"Africa/Bujumbura","value":"Africa/Bujumbura"},{"label":"Africa/Conakry","value":"Africa/Conakry"},{"label":"Africa/Dakar","value":"Africa/Dakar"},{"label":"Africa/Dar_es_Salaam","value":"Africa/Dar_es_Salaam"},{"label":"Africa/Djibouti","value":"Africa/Djibouti"},{"label":"Africa/Douala","value":"Africa/Douala"},{"label":"Africa/Freetown","value":"Africa/Freetown"},{"label":"Africa/Gaborone","value":"Africa/Gaborone"},{"label":"Africa/Harare","value":"Africa/Harare"},{"label":"Africa/Kampala","value":"Africa/Kampala"},{"label":"Africa/Kigali","value":"Africa/Kigali"},{"label":"Africa/Kinshasa","value":"Africa/Kinshasa"},{"label":"Africa/Libreville","value":"Africa/Libreville"},{"label":"Africa/Lome","value":"Africa/Lome"},{"label":"Africa/Luanda","value":"Africa/Luanda"},{"label":"Africa/Lubumbashi","value":"Africa/Lubumbashi"},{"label":"Africa/Lusaka","value":"Africa/Lusaka"},{"label":"Africa/Malabo","value":"Africa/Malabo"},{"label":"Africa/Maseru","value":"Africa/Maseru"},{"label":"Africa/Mbabane","value":"Africa/Mbabane"},{"label":"Africa/Mogadishu","value":"Africa/Mogadishu"},{"label":"Africa/Niamey","value":"Africa/Niamey"},{"label":"Africa/Nouakchott","value":"Africa/Nouakchott"},{"label":"Africa/Ouagadougou","value":"Africa/Ouagadougou"},{"label":"Africa/Porto-Novo","value":"Africa/Porto-Novo"},{"label":"America/Anguilla","value":"America/Anguilla"},{"label":"America/Antigua","value":"America/Antigua"},{"label":"America/Aruba","value":"America/Aruba"},{"label":"America/Atikokan","value":"America/Atikokan"},{"label":"America/Blanc-Sablon","value":"America/Blanc-Sablon"},{"label":"America/Cayman","value":"America/Cayman"},{"label":"America/Creston","value":"America/Creston"},{"label":"America/Curacao","value":"America/Curacao"},{"label":"America/Dominica","value":"America/Dominica"},{"label":"America/Grenada","value":"America/Grenada"},{"label":"America/Guadeloupe","value":"America/Guadeloupe"},{"label":"America/Kralendijk","value":"America/Kralendijk"},{"label":"America/Lower_Princes","value":"America/Lower_Princes"},{"label":"America/Marigot","value":"America/Marigot"},{"label":"America/Montserrat","value":"America/Montserrat"},{"label":"America/Nassau","value":"America/Nassau"},{"label":"America/Port_of_Spain","value":"America/Port_of_Spain"},{"label":"America/St_Barthelemy","value":"America/St_Barthelemy"},{"label":"America/St_Kitts","value":"America/St_Kitts"},{"label":"America/St_Lucia","value":"America/St_Lucia"},{"label":"America/St_Thomas","value":"America/St_Thomas"},{"label":"America/St_Vincent","value":"America/St_Vincent"},{"label":"America/Tortola","value":"America/Tortola"},{"label":"Antarctica/DumontDUrville","value":"Antarctica/DumontDUrville"},{"label":"Antarctica/McMurdo","value":"Antarctica/McMurdo"},{"label":"Antarctica/Syowa","value":"Antarctica/Syowa"},{"label":"Arctic/Longyearbyen","value":"Arctic/Longyearbyen"},{"label":"Asia/Aden","value":"Asia/Aden"},{"label":"Asia/Bahrain","value":"Asia/Bahrain"},{"label":"Asia/Brunei","value":"Asia/Brunei"},{"label":"Asia/Kuala_Lumpur","value":"Asia/Kuala_Lumpur"},{"label":"Asia/Kuwait","value":"Asia/Kuwait"},{"label":"Asia/Muscat","value":"Asia/Muscat"},{"label":"Asia/Phnom_Penh","value":"Asia/Phnom_Penh"},{"label":"Asia/Vientiane","value":"Asia/Vientiane"},{"label":"Atlantic/Reykjavik","value":"Atlantic/Reykjavik"},{"label":"Atlantic/St_Helena","value":"Atlantic/St_Helena"},{"label":"Europe/Amsterdam","value":"Europe/Amsterdam"},{"label":"Europe/Bratislava","value":"Europe/Bratislava"},{"label":"Europe/Busingen","value":"Europe/Busingen"},{"label":"Europe/Copenhagen","value":"Europe/Copenhagen"},{"label":"Europe/Guernsey","value":"Europe/Guernsey"},{"label":"Europe/Isle_of_Man","value":"Europe/Isle_of_Man"},{"label":"Europe/Jersey","value":"Europe/Jersey"},{"label":"Europe/Ljubljana","value":"Europe/Ljubljana"},{"label":"Europe/Luxembourg","value":"Europe/Luxembourg"},{"label":"Europe/Mariehamn","value":"Europe/Mariehamn"},{"label":"Europe/Monaco","value":"Europe/Monaco"},{"label":"Europe/Oslo","value":"Europe/Oslo"},{"label":"Europe/Podgorica","value":"Europe/Podgorica"},{"label":"Europe/San_Marino","value":"Europe/San_Marino"},{"label":"Europe/Sarajevo","value":"Europe/Sarajevo"},{"label":"Europe/Skopje","value":"Europe/Skopje"},{"label":"Europe/Stockholm","value":"Europe/Stockholm"},{"label":"Europe/Vaduz","value":"Europe/Vaduz"},{"label":"Europe/Vatican","value":"Europe/Vatican"},{"label":"Europe/Zagreb","value":"Europe/Zagreb"},{"label":"Indian/Antananarivo","value":"Indian/Antananarivo"},{"label":"Indian/Christmas","value":"Indian/Christmas"},{"label":"Indian/Cocos","value":"Indian/Cocos"},{"label":"Indian/Comoro","value":"Indian/Comoro"},{"label":"Indian/Kerguelen","value":"Indian/Kerguelen"},{"label":"Indian/Mahe","value":"Indian/Mahe"},{"label":"Indian/Mayotte","value":"Indian/Mayotte"},{"label":"Indian/Reunion","value":"Indian/Reunion"},{"label":"Pacific/Chuuk","value":"Pacific/Chuuk"},{"label":"Pacific/Funafuti","value":"Pacific/Funafuti"},{"label":"Pacific/Majuro","value":"Pacific/Majuro"},{"label":"Pacific/Midway","value":"Pacific/Midway"},{"label":"Pacific/Pohnpei","value":"Pacific/Pohnpei"},{"label":"Pacific/Saipan","value":"Pacific/Saipan"},{"label":"Pacific/Wake","value":"Pacific/Wake"},{"label":"Pacific/Wallis","value":"Pacific/Wallis"},{"label":"Africa/Timbuktu","value":"Africa/Timbuktu"},{"label":"America/Argentina/ComodRivadavia","value":"America/Argentina/ComodRivadavia"},{"label":"America/Atka","value":"America/Atka"},{"label":"America/Coral_Harbour","value":"America/Coral_Harbour"},{"label":"America/Ensenada","value":"America/Ensenada"},{"label":"America/Fort_Wayne","value":"America/Fort_Wayne"},{"label":"America/Montreal","value":"America/Montreal"},{"label":"America/Nipigon","value":"America/Nipigon"},{"label":"America/Pangnirtung","value":"America/Pangnirtung"},{"label":"America/Porto_Acre","value":"America/Porto_Acre"},{"label":"America/Rainy_River","value":"America/Rainy_River"},{"label":"America/Rosario","value":"America/Rosario"},{"label":"America/Santa_Isabel","value":"America/Santa_Isabel"},{"label":"America/Shiprock","value":"America/Shiprock"},{"label":"America/Thunder_Bay","value":"America/Thunder_Bay"},{"label":"America/Yellowknife","value":"America/Yellowknife"},{"label":"Antarctica/South_Pole","value":"Antarctica/South_Pole"},{"label":"Asia/Choibalsan","value":"Asia/Choibalsan"},{"label":"Asia/Chongqing","value":"Asia/Chongqing"},{"label":"Asia/Harbin","value":"Asia/Harbin"},{"label":"Asia/Kashgar","value":"Asia/Kashgar"},{"label":"Asia/Tel_Aviv","value":"Asia/Tel_Aviv"},{"label":"Atlantic/Jan_Mayen","value":"Atlantic/Jan_Mayen"},{"label":"Australia/Canberra","value":"Australia/Canberra"},{"label":"Australia/Currie","value":"Australia/Currie"},{"label":"Europe/Belfast","value":"Europe/Belfast"},{"label":"Europe/Tiraspol","value":"Europe/Tiraspol"},{"label":"Europe/Uzhgorod","value":"Europe/Uzhgorod"},{"label":"Europe/Zaporozhye","value":"Europe/Zaporozhye"},{"label":"Pacific/Enderbury","value":"Pacific/Enderbury"},{"label":"Pacific/Johnston","value":"Pacific/Johnston"},{"label":"Pacific/Yap","value":"Pacific/Yap"},{"label":"WET","value":"WET"},{"label":"Africa/Asmera","value":"Africa/Asmera"},{"label":"America/Godthab","value":"America/Godthab"},{"label":"Asia/Ashkhabad","value":"Asia/Ashkhabad"},{"label":"Asia/Calcutta","value":"Asia/Calcutta"},{"label":"Asia/Chungking","value":"Asia/Chungking"},{"label":"Asia/Dacca","value":"Asia/Dacca"},{"label":"Asia/Istanbul","value":"Asia/Istanbul"},{"label":"Asia/Katmandu","value":"Asia/Katmandu"},{"label":"Asia/Macao","value":"Asia/Macao"},{"label":"Asia/Rangoon","value":"Asia/Rangoon"},{"label":"Asia/Saigon","value":"Asia/Saigon"},{"label":"Asia/Thimbu","value":"Asia/Thimbu"},{"label":"Asia/Ujung_Pandang","value":"Asia/Ujung_Pandang"},{"label":"Asia/Ulan_Bator","value":"Asia/Ulan_Bator"},{"label":"Atlantic/Faeroe","value":"Atlantic/Faeroe"},{"label":"Europe/Kiev","value":"Europe/Kiev"},{"label":"Europe/Nicosia","value":"Europe/Nicosia"},{"label":"HST","value":"HST"},{"label":"PST8PDT","value":"PST8PDT"},{"label":"Pacific/Ponape","value":"Pacific/Ponape"},{"label":"Pacific/Truk","value":"Pacific/Truk"},{"label":"Etc/UTC","value":"Etc/UTC"},{"label":"Etc/GMT","value":"Etc/GMT"},{"label":"GMT","value":"GMT"},{"label":"Etc/GMT-14","value":"Etc/GMT-14"},{"label":"Etc/GMT-13","value":"Etc/GMT-13"},{"label":"Etc/GMT-12","value":"Etc/GMT-12"},{"label":"Etc/GMT-11","value":"Etc/GMT-11"},{"label":"Etc/GMT-10","value":"Etc/GMT-10"},{"label":"Etc/GMT-9","value":"Etc/GMT-9"},{"label":"Etc/GMT-8","value":"Etc/GMT-8"},{"label":"Etc/GMT-7","value":"Etc/GMT-7"},{"label":"Etc/GMT-6","value":"Etc/GMT-6"},{"label":"Etc/GMT-5","value":"Etc/GMT-5"},{"label":"Etc/GMT-4","value":"Etc/GMT-4"},{"label":"Etc/GMT-3","value":"Etc/GMT-3"},{"label":"Etc/GMT-2","value":"Etc/GMT-2"},{"label":"Etc/GMT-1","value":"Etc/GMT-1"},{"label":"Etc/GMT+1","value":"Etc/GMT+1"},{"label":"Etc/GMT+2","value":"Etc/GMT+2"},{"label":"Etc/GMT+3","value":"Etc/GMT+3"},{"label":"Etc/GMT+4","value":"Etc/GMT+4"},{"label":"Etc/GMT+5","value":"Etc/GMT+5"},{"label":"Etc/GMT+6","value":"Etc/GMT+6"},{"label":"Etc/GMT+7","value":"Etc/GMT+7"},{"label":"Etc/GMT+8","value":"Etc/GMT+8"},{"label":"Etc/GMT+9","value":"Etc/GMT+9"},{"label":"Etc/GMT+10","value":"Etc/GMT+10"},{"label":"Etc/GMT+11","value":"Etc/GMT+11"},{"label":"Etc/GMT+12","value":"Etc/GMT+12"},{"label":"Europe/London","value":"Europe/London"},{"label":"Europe/Dublin","value":"Europe/Dublin"},{"label":"Europe/Tirane","value":"Europe/Tirane"},{"label":"Europe/Andorra","value":"Europe/Andorra"},{"label":"Europe/Vienna","value":"Europe/Vienna"},{"label":"Europe/Minsk","value":"Europe/Minsk"},{"label":"Europe/Brussels","value":"Europe/Brussels"},{"label":"Europe/Sofia","value":"Europe/Sofia"},{"label":"Europe/Prague","value":"Europe/Prague"},{"label":"Atlantic/Faroe","value":"Atlantic/Faroe"},{"label":"America/Danmarkshavn","value":"America/Danmarkshavn"},{"label":"America/Scoresbysund","value":"America/Scoresbysund"},{"label":"America/Nuuk","value":"America/Nuuk"},{"label":"America/Thule","value":"America/Thule"},{"label":"Europe/Tallinn","value":"Europe/Tallinn"},{"label":"Europe/Helsinki","value":"Europe/Helsinki"},{"label":"Europe/Paris","value":"Europe/Paris"},{"label":"Europe/Berlin","value":"Europe/Berlin"},{"label":"Europe/Gibraltar","value":"Europe/Gibraltar"},{"label":"Europe/Athens","value":"Europe/Athens"},{"label":"Europe/Budapest","value":"Europe/Budapest"},{"label":"Europe/Rome","value":"Europe/Rome"},{"label":"Europe/Riga","value":"Europe/Riga"},{"label":"Europe/Vilnius","value":"Europe/Vilnius"},{"label":"Europe/Malta","value":"Europe/Malta"},{"label":"Europe/Chisinau","value":"Europe/Chisinau"},{"label":"Europe/Warsaw","value":"Europe/Warsaw"},{"label":"Europe/Lisbon","value":"Europe/Lisbon"},{"label":"Atlantic/Azores","value":"Atlantic/Azores"},{"label":"Atlantic/Madeira","value":"Atlantic/Madeira"},{"label":"Europe/Bucharest","value":"Europe/Bucharest"},{"label":"Europe/Kaliningrad","value":"Europe/Kaliningrad"},{"label":"Europe/Moscow","value":"Europe/Moscow"},{"label":"Europe/Simferopol","value":"Europe/Simferopol"},{"label":"Europe/Astrakhan","value":"Europe/Astrakhan"},{"label":"Europe/Volgograd","value":"Europe/Volgograd"},{"label":"Europe/Saratov","value":"Europe/Saratov"},{"label":"Europe/Kirov","value":"Europe/Kirov"},{"label":"Europe/Samara","value":"Europe/Samara"},{"label":"Europe/Ulyanovsk","value":"Europe/Ulyanovsk"},{"label":"Asia/Yekaterinburg","value":"Asia/Yekaterinburg"},{"label":"Asia/Omsk","value":"Asia/Omsk"},{"label":"Asia/Barnaul","value":"Asia/Barnaul"},{"label":"Asia/Novosibirsk","value":"Asia/Novosibirsk"},{"label":"Asia/Tomsk","value":"Asia/Tomsk"},{"label":"Asia/Novokuznetsk","value":"Asia/Novokuznetsk"},{"label":"Asia/Krasnoyarsk","value":"Asia/Krasnoyarsk"},{"label":"Asia/Irkutsk","value":"Asia/Irkutsk"},{"label":"Asia/Chita","value":"Asia/Chita"},{"label":"Asia/Yakutsk","value":"Asia/Yakutsk"},{"label":"Asia/Vladivostok","value":"Asia/Vladivostok"},{"label":"Asia/Khandyga","value":"Asia/Khandyga"},{"label":"Asia/Sakhalin","value":"Asia/Sakhalin"},{"label":"Asia/Magadan","value":"Asia/Magadan"},{"label":"Asia/Srednekolymsk","value":"Asia/Srednekolymsk"},{"label":"Asia/Ust-Nera","value":"Asia/Ust-Nera"},{"label":"Asia/Kamchatka","value":"Asia/Kamchatka"},{"label":"Asia/Anadyr","value":"Asia/Anadyr"},{"label":"Europe/Belgrade","value":"Europe/Belgrade"},{"label":"Europe/Madrid","value":"Europe/Madrid"},{"label":"Africa/Ceuta","value":"Africa/Ceuta"},{"label":"Atlantic/Canary","value":"Atlantic/Canary"},{"label":"Europe/Zurich","value":"Europe/Zurich"},{"label":"Europe/Istanbul","value":"Europe/Istanbul"},{"label":"Europe/Kyiv","value":"Europe/Kyiv"},{"label":"Factory","value":"Factory"},{"label":"America/New_York","value":"America/New_York"},{"label":"America/Chicago","value":"America/Chicago"},{"label":"America/North_Dakota/Center","value":"America/North_Dakota/Center"},{"label":"America/North_Dakota/New_Salem","value":"America/North_Dakota/New_Salem"},{"label":"America/North_Dakota/Beulah","value":"America/North_Dakota/Beulah"},{"label":"America/Denver","value":"America/Denver"},{"label":"America/Los_Angeles","value":"America/Los_Angeles"},{"label":"America/Juneau","value":"America/Juneau"},{"label":"America/Sitka","value":"America/Sitka"},{"label":"America/Metlakatla","value":"America/Metlakatla"},{"label":"America/Yakutat","value":"America/Yakutat"},{"label":"America/Anchorage","value":"America/Anchorage"},{"label":"America/Nome","value":"America/Nome"},{"label":"America/Adak","value":"America/Adak"},{"label":"Pacific/Honolulu","value":"Pacific/Honolulu"},{"label":"America/Phoenix","value":"America/Phoenix"},{"label":"America/Boise","value":"America/Boise"},{"label":"America/Indiana/Indianapolis","value":"America/Indiana/Indianapolis"},{"label":"America/Indiana/Marengo","value":"America/Indiana/Marengo"},{"label":"America/Indiana/Vincennes","value":"America/Indiana/Vincennes"},{"label":"America/Indiana/Tell_City","value":"America/Indiana/Tell_City"},{"label":"America/Indiana/Petersburg","value":"America/Indiana/Petersburg"},{"label":"America/Indiana/Knox","value":"America/Indiana/Knox"},{"label":"America/Indiana/Winamac","value":"America/Indiana/Winamac"},{"label":"America/Indiana/Vevay","value":"America/Indiana/Vevay"},{"label":"America/Kentucky/Louisville","value":"America/Kentucky/Louisville"},{"label":"America/Kentucky/Monticello","value":"America/Kentucky/Monticello"},{"label":"America/Detroit","value":"America/Detroit"},{"label":"America/Menominee","value":"America/Menominee"},{"label":"America/St_Johns","value":"America/St_Johns"},{"label":"America/Goose_Bay","value":"America/Goose_Bay"},{"label":"America/Halifax","value":"America/Halifax"},{"label":"America/Glace_Bay","value":"America/Glace_Bay"},{"label":"America/Moncton","value":"America/Moncton"},{"label":"America/Toronto","value":"America/Toronto"},{"label":"America/Winnipeg","value":"America/Winnipeg"},{"label":"America/Regina","value":"America/Regina"},{"label":"America/Swift_Current","value":"America/Swift_Current"},{"label":"America/Edmonton","value":"America/Edmonton"},{"label":"America/Vancouver","value":"America/Vancouver"},{"label":"America/Dawson_Creek","value":"America/Dawson_Creek"},{"label":"America/Fort_Nelson","value":"America/Fort_Nelson"},{"label":"America/Iqaluit","value":"America/Iqaluit"},{"label":"America/Resolute","value":"America/Resolute"},{"label":"America/Rankin_Inlet","value":"America/Rankin_Inlet"},{"label":"America/Cambridge_Bay","value":"America/Cambridge_Bay"},{"label":"America/Inuvik","value":"America/Inuvik"},{"label":"America/Whitehorse","value":"America/Whitehorse"},{"label":"America/Dawson","value":"America/Dawson"},{"label":"America/Cancun","value":"America/Cancun"},{"label":"America/Merida","value":"America/Merida"},{"label":"America/Matamoros","value":"America/Matamoros"},{"label":"America/Monterrey","value":"America/Monterrey"},{"label":"America/Mexico_City","value":"America/Mexico_City"},{"label":"America/Ciudad_Juarez","value":"America/Ciudad_Juarez"},{"label":"America/Ojinaga","value":"America/Ojinaga"},{"label":"America/Chihuahua","value":"America/Chihuahua"},{"label":"America/Hermosillo","value":"America/Hermosillo"},{"label":"America/Mazatlan","value":"America/Mazatlan"},{"label":"America/Bahia_Banderas","value":"America/Bahia_Banderas"},{"label":"America/Tijuana","value":"America/Tijuana"},{"label":"America/Barbados","value":"America/Barbados"},{"label":"America/Belize","value":"America/Belize"},{"label":"Atlantic/Bermuda","value":"Atlantic/Bermuda"},{"label":"America/Costa_Rica","value":"America/Costa_Rica"},{"label":"America/Havana","value":"America/Havana"},{"label":"America/Santo_Domingo","value":"America/Santo_Domingo"},{"label":"America/El_Salvador","value":"America/El_Salvador"},{"label":"America/Guatemala","value":"America/Guatemala"},{"label":"America/Port-au-Prince","value":"America/Port-au-Prince"},{"label":"America/Tegucigalpa","value":"America/Tegucigalpa"},{"label":"America/Jamaica","value":"America/Jamaica"},{"label":"America/Martinique","value":"America/Martinique"},{"label":"America/Managua","value":"America/Managua"},{"label":"America/Panama","value":"America/Panama"},{"label":"America/Puerto_Rico","value":"America/Puerto_Rico"},{"label":"America/Miquelon","value":"America/Miquelon"},{"label":"America/Grand_Turk","value":"America/Grand_Turk"},{"label":"America/Argentina/Buenos_Aires","value":"America/Argentina/Buenos_Aires"},{"label":"America/Argentina/Cordoba","value":"America/Argentina/Cordoba"},{"label":"America/Argentina/Salta","value":"America/Argentina/Salta"},{"label":"America/Argentina/Tucuman","value":"America/Argentina/Tucuman"},{"label":"America/Argentina/La_Rioja","value":"America/Argentina/La_Rioja"},{"label":"America/Argentina/San_Juan","value":"America/Argentina/San_Juan"},{"label":"America/Argentina/Jujuy","value":"America/Argentina/Jujuy"},{"label":"America/Argentina/Catamarca","value":"America/Argentina/Catamarca"},{"label":"America/Argentina/Mendoza","value":"America/Argentina/Mendoza"},{"label":"America/Argentina/San_Luis","value":"America/Argentina/San_Luis"},{"label":"America/Argentina/Rio_Gallegos","value":"America/Argentina/Rio_Gallegos"},{"label":"America/Argentina/Ushuaia","value":"America/Argentina/Ushuaia"},{"label":"America/La_Paz","value":"America/La_Paz"},{"label":"America/Noronha","value":"America/Noronha"},{"label":"America/Belem","value":"America/Belem"},{"label":"America/Santarem","value":"America/Santarem"},{"label":"America/Fortaleza","value":"America/Fortaleza"},{"label":"America/Recife","value":"America/Recife"},{"label":"America/Araguaina","value":"America/Araguaina"},{"label":"America/Maceio","value":"America/Maceio"},{"label":"America/Bahia","value":"America/Bahia"},{"label":"America/Sao_Paulo","value":"America/Sao_Paulo"},{"label":"America/Campo_Grande","value":"America/Campo_Grande"},{"label":"America/Cuiaba","value":"America/Cuiaba"},{"label":"America/Porto_Velho","value":"America/Porto_Velho"},{"label":"America/Boa_Vista","value":"America/Boa_Vista"},{"label":"America/Manaus","value":"America/Manaus"},{"label":"America/Eirunepe","value":"America/Eirunepe"},{"label":"America/Rio_Branco","value":"America/Rio_Branco"},{"label":"America/Santiago","value":"America/Santiago"},{"label":"America/Coyhaique","value":"America/Coyhaique"},{"label":"America/Punta_Arenas","value":"America/Punta_Arenas"},{"label":"Pacific/Easter","value":"Pacific/Easter"},{"label":"Antarctica/Palmer","value":"Antarctica/Palmer"},{"label":"America/Bogota","value":"America/Bogota"},{"label":"America/Guayaquil","value":"America/Guayaquil"},{"label":"Pacific/Galapagos","value":"Pacific/Galapagos"},{"label":"Atlantic/Stanley","value":"Atlantic/Stanley"},{"label":"America/Cayenne","value":"America/Cayenne"},{"label":"America/Guyana","value":"America/Guyana"},{"label":"America/Asuncion","value":"America/Asuncion"},{"label":"America/Lima","value":"America/Lima"},{"label":"Atlantic/South_Georgia","value":"Atlantic/South_Georgia"},{"label":"America/Paramaribo","value":"America/Paramaribo"},{"label":"America/Montevideo","value":"America/Montevideo"},{"label":"America/Caracas","value":"America/Caracas"}]}},"tools":{"id":"tools","label":"Tools","description":"Interact with the real world through API calls.","type":"json","required":false},"voicemail_message":{"id":"voicemail_message","label":"Voicemail message","description":"When the AI encounters a voicemail, it will leave this message after the beep and then immediately end the call.","type":"text","required":false},"voicemail_action":{"id":"voicemail_action","label":"Voicemail action","description":"This is processed separately from the AI’s decision making, and overrides it. If voicemail_message is set, then the AI will leave the message regardless of the voicemail_action.","type":"json","required":false},"retry":{"id":"retry","label":"Retry","description":"If the call goes to voicemail, you can set up the call to retry, after a configurable delay.","type":"json","required":false},"max_duration":{"id":"max_duration","label":"Max duration (minutes)","description":"When the call starts, a timer is set for the max_duration minutes. At the end of that timer, if the call is still active it will be automatically ended.","type":"numeric","required":false},"record":{"id":"record","label":"Record call","description":"When your call completes, you can access through the recording_url field in the call details or your webhook.","type":"string","required":false,"options":{"dropdownOptions":[{"value":"true","label":"Yes"},{"value":"false","label":"No"}]}},"metadata":{"id":"metadata","label":"Metadata","description":"Add any additional information you want to associate with the call. This data is accessible for all calls, regardless of if they are picked up or not. This can be used to track calls or add custom data to the call.","type":"json","required":false},"analysis_preset":{"id":"analysis_preset","label":"Analysis preset","description":"The analysis preset UUID used to analyze the call, must be created on the analysis presets page.","type":"string","required":false},"available_tags":{"id":"available_tags","label":"Available tags","description":"Comma-separated list of disposition tags. Upon call completion, the AI will evaluate the transcripts of the call and assign one of the tags to the “disposition_tag” field.","type":"string","required":false},"geospatial_dialing":{"id":"geospatial_dialing","label":"Geospatial dialing","description":"The geospatial dialing pool UUID.","type":"string","required":false},"precall_dtmf_sequence":{"id":"precall_dtmf_sequence","label":"Pre-call DTMF sequence","description":"A sequence of DTMF digits that will be played before the call starts.","type":"string","required":false},"requestData":{"id":"requestData","label":"Request data","description":"Any JSON you put in here will be visible to the AI agent during the call - and can also be referenced with Prompt Variables.","type":"json","required":false},"analysisSchema":{"id":"analysisSchema","label":"Analysis schema","description":"Define a JSON schema for how you want to get information about the call - information like email addresses, names, appointment times or any other type of custom data.","type":"json","required":false},"otherData":{"id":"otherData","label":"Other data","description":"Any fields you put in here will be sent in the request body of the call, but will be overridden by all other fields above if that field is also set.","type":"json","required":false},"completeExtensionActivityAsync":{"id":"completeExtensionActivityAsync","label":"Complete extension activity async","description":"Whether to complete the extension activity async. When true, the extension activity will be completed asynchronously via a webhook.","type":"boolean","required":false}},"previewable":true,"dataPoints":{"call_id":{"key":"call_id","valueType":"string"}},"supports_automated_retries":true},"getCallDetails":{"key":"getCallDetails","title":"Get call details","description":"Retrieve detailed information, metadata and transcripts for a call.","category":"Communication","fields":{"callId":{"id":"callId","label":"Call ID","description":"The identifier of the call for which you want to retrieve information.","type":"string","required":true}},"previewable":true,"dataPoints":{"callData":{"key":"callData","valueType":"json"},"callLength":{"key":"callLength","valueType":"number"},"to":{"key":"to","valueType":"telephone"},"from":{"key":"from","valueType":"telephone"},"completed":{"key":"completed","valueType":"boolean"},"metadata":{"key":"metadata","valueType":"json"},"summary":{"key":"summary","valueType":"string"},"startedAt":{"key":"startedAt","valueType":"date"},"endAt":{"key":"endAt","valueType":"date"},"analysisSchema":{"key":"analysisSchema","valueType":"json"},"analysis":{"key":"analysis","valueType":"json"},"concatenatedTranscript":{"key":"concatenatedTranscript","valueType":"string"},"transcripts":{"key":"transcripts","valueType":"json"},"status":{"key":"status","valueType":"string"}},"supports_automated_retries":true},"stopActiveCall":{"key":"stopActiveCall","title":"Stop active call","description":"End an active phone call by call ID.","category":"Communication","fields":{"callId":{"id":"callId","label":"Call ID","description":"The unique identifier for the call you want to end.","type":"string","required":true}},"previewable":false,"dataPoints":{"status":{"key":"status","valueType":"string"},"message":{"key":"message","valueType":"string"}},"supports_automated_retries":true}},"webhooks":[{"key":"callCompleted","dataPoints":{"callId":{"key":"callId","valueType":"string"},"completed":{"key":"completed","valueType":"boolean"},"status":{"key":"status","valueType":"string"},"answeredBy":{"key":"answeredBy","valueType":"string"},"errorMessage":{"key":"errorMessage","valueType":"string"},"callObject":{"key":"callObject","valueType":"json"}}}],"description":"Automate your phone calls with AI","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1731027387/Awell%20Extensions/Bland-AI.jpg","title":"Bland.ai","category":"Communication","author":{"authorType":"Awell"},"settings":{"apiKey":{"key":"apiKey","label":"Bland API key","obfuscated":true,"description":"","required":true}}},{"key":"braze","htmlDocs":"<hr />\n<p>title: Braze</p>\n<h2 id=\"descriptionbrazeisacustomerengagementplatformthathelpsyoucommunicatewithyourpatients\">description: Braze is a customer engagement platform that helps you communicate with your patients.</h2>\n<h1 id=\"braze\">Braze</h1>\n<p>Braze is a comprehensive customer engagement platform that specializes in helping businesses connect with their users through personalized messaging channels.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>An api key and the REST Endpoint URL are needed to be provided in order for the extension to authenticate with Braze's API. </p>\n<p>An app ID can also be specified via the extension settings or the action field. Actions requiring an app ID to be provided will throw an error if no app ID is provided via the extension settings or the action field. If both are provided, the app ID from the action field will be used.</p>\n<p>List of URLs can be found <a href=\"https://www.braze.com/docs/api/basics/#endpoints\">here</a> - make sure it's the REST Endpoint URL. Documentation on API keys can be found <a href=\"https://www.braze.com/docs/api/basics/#about-rest-api-keys\">here</a>.</p>\n<h2 id=\"supportedactins\">Supported Actins</h2>\n<h3 id=\"sendsms\">Send SMS</h3>\n<p>Send an immediate SMS message to a specified user</p>\n<p>Required permissions: <code>messages.send</code></p>\n<h3 id=\"schedulesms\">Schedule SMS</h3>\n<p>Schedule an SMS message to be sent at a specific time</p>\n<p>Required permissions: <code>messages.schedule.create</code></p>\n<h3 id=\"sendemail\">Send Email</h3>\n<p>Send an immediate email to a specified user</p>\n<p>Required permissions: <code>messages.send</code></p>\n<h3 id=\"scheduleemail\">Schedule Email</h3>\n<p>Schedule an email to be sent at a specific time</p>\n<p>Required permissions: <code>messages.schedule.create</code></p>\n<h3 id=\"sendemailusingtemplate\">Send Email Using Template</h3>\n<p>Send an email using a pre-defined Braze template</p>\n<p>Required permissions: <code>messages.send</code></p>\n<h3 id=\"sendcampaign\">Send campaign</h3>\n<p>Send a campaign message.</p>\n<p>Required permissions: <code>campaigns.trigger.send</code></p>","changelog":"<h1 id=\"brazechangelog\">Braze changelog</h1>","actions":{"sendSMS":{"key":"sendSMS","title":"Send SMS","description":"Send an SMS to a patient.","category":"Communication","fields":{"subscriptionGroupId":{"id":"subscriptionGroupId","label":"Subscription Group ID","type":"string","required":true,"description":"The ID of your subscription group."},"externalUserId":{"id":"externalUserId","label":"External User ID","type":"string","required":true,"description":"The ID of the user in your system that this message is being sent to."},"body":{"id":"body","label":"Body","type":"text","required":true,"description":"The body of the SMS."},"appId":{"id":"appId","label":"App ID","type":"string","required":false,"description":"Specifies the app within your Braze workspace the activity will be associated with. Can also be provided via the extension settings."},"linkShorteningEnabled":{"id":"linkShorteningEnabled","label":"Link Shortening Enabled","type":"boolean","required":false,"description":"Use this field to turn on link shortening and campaign-level click tracking"},"useClickTrackingEnabled":{"id":"useClickTrackingEnabled","label":"Use Click Tracking Enabled","type":"boolean","required":false,"description":"If `Link Shortening Enabled` is true, use this field to turn on link shortening, and campaign-level and user-level click tracking"},"campaignId":{"id":"campaignId","label":"Campaign ID","type":"string","required":false,"description":"Optional but required if you wish to track campaign stats"},"messageVariantionId":{"id":"messageVariantionId","label":"Message Variantion ID","type":"string","required":false,"description":"Used when providing a campaign_id to specify which message variation this message should be tracked under"}},"dataPoints":{"SMSDispatchId":{"key":"SMSDispatchId","valueType":"string"}},"previewable":true},"scheduleSMS":{"key":"scheduleSMS","title":"Schedule SMS","description":"Schedule an SMS to be sent immediateky to a patient.","category":"Communication","fields":{"subscriptionGroupId":{"id":"subscriptionGroupId","label":"Subscription Group ID","type":"string","required":true,"description":"The ID of your subscription group."},"externalUserId":{"id":"externalUserId","label":"External User ID","type":"string","required":true,"description":"The ID of the user in your system that this message is being sent to."},"body":{"id":"body","label":"Body","type":"text","required":true,"description":"The body of the SMS."},"appId":{"id":"appId","label":"App ID","type":"string","required":false,"description":"Specifies the app within your Braze workspace the activity will be associated with. Can also be provided via the extension settings."},"scheduleTime":{"id":"scheduleTime","label":"Schedule Time","type":"date","required":true,"description":"The time to schedule the SMS to be sent. Must be a datetime as ISO 8601 string and time to send the message in UTC"},"inPatientLocalTime":{"id":"inPatientLocalTime","label":"In Patient Local Time","type":"boolean","required":false,"description":"If true, the schedule time will be in the patient's local time."},"atOptimalTime":{"id":"atOptimalTime","label":"At Optimal Time","type":"boolean","required":false,"description":"If true, the schedule time will be at the optimal time."},"linkShorteningEnabled":{"id":"linkShorteningEnabled","label":"Link Shortening Enabled","type":"boolean","required":false,"description":"Use this field to turn on link shortening and campaign-level click tracking"},"useClickTrackingEnabled":{"id":"useClickTrackingEnabled","label":"Use Click Tracking Enabled","type":"boolean","required":false,"description":"If `Link Shortening Enabled` is true, use this field to turn on link shortening, and campaign-level and user-level click tracking"},"campaignId":{"id":"campaignId","label":"Campaign ID","type":"string","required":false,"description":"Optional but required if you wish to track campaign stats"},"messageVariantionId":{"id":"messageVariantionId","label":"Message Variantion ID","type":"string","required":false,"description":"Used when providing a campaign_id to specify which message variation this message should be tracked under"}},"dataPoints":{"SMSDispatchId":{"key":"SMSDispatchId","valueType":"string"},"SMSScheduleId":{"key":"SMSScheduleId","valueType":"string"}},"previewable":true},"sendEmail":{"key":"sendEmail","title":"Send Email","description":"Send an email to a patient.","category":"Communication","fields":{"externalUserId":{"id":"externalUserId","label":"External User ID","type":"string","required":true,"description":"The ID of the user in your system that this message is being sent to."},"appId":{"id":"appId","label":"App ID","type":"string","required":false,"description":"Specifies the app within your Braze workspace the activity will be associated with. Can also be provided via the extension settings."},"from":{"id":"from","label":"From","type":"string","required":true,"description":"valid email address in the format \"Display Name <email@address.com>\""},"replyTo":{"id":"replyTo","label":"Reply To","type":"string","required":false,"description":"Valid email address in the format \"email@address.com\" - defaults to your workspace`s default reply to if not set"},"subject":{"id":"subject","label":"Subject","type":"string","required":false,"description":"The subject of the email."},"body":{"id":"body","label":"Body","type":"html","required":true,"description":"The body of the email."},"preheader":{"id":"preheader","label":"Preheader","type":"string","required":false,"description":"The preheader of the email. Recommended length 50-100 characters"},"shouldInlineCss":{"id":"shouldInlineCss","label":"Should inline CSS","type":"boolean","required":false,"description":"Whether to inline the CSS of the body of the email. If not provided, falls back to the default CSS inlining value for the workspace "},"campaignId":{"id":"campaignId","label":"Campaign ID","type":"string","required":false,"description":"Optional but required if you wish to track campaign stats"},"messageVariantionId":{"id":"messageVariantionId","label":"Message Variantion ID","type":"string","required":false,"description":"Used when providing a campaign_id to specify which message variation this message should be tracked under"}},"dataPoints":{"EmailDispatchId":{"key":"EmailDispatchId","valueType":"string"}},"previewable":true},"scheduleEmail":{"key":"scheduleEmail","title":"Schedule Email","description":"Schedule an email to be sent to a patient.","category":"Communication","fields":{"externalUserId":{"id":"externalUserId","label":"External User ID","type":"string","required":true,"description":"The ID of the user in your system that this message is being sent to."},"appId":{"id":"appId","label":"App ID","type":"string","required":false,"description":"Specifies the app within your Braze workspace the activity will be associated with. Can also be provided via the extension settings."},"from":{"id":"from","label":"From","type":"string","required":true,"description":"valid email address in the format \"Display Name <email@address.com>\""},"replyTo":{"id":"replyTo","label":"Reply To","type":"string","required":false,"description":"Valid email address in the format \"email@address.com\" - defaults to your workspace`s default reply to if not set"},"subject":{"id":"subject","label":"Subject","type":"string","required":false,"description":"The subject of the email."},"body":{"id":"body","label":"Body","type":"html","required":true,"description":"The body of the email."},"preheader":{"id":"preheader","label":"Preheader","type":"string","required":false,"description":"The preheader of the email. Recommended length 50-100 characters"},"shouldInlineCss":{"id":"shouldInlineCss","label":"Should inline CSS","type":"boolean","required":false,"description":"Whether to inline the CSS of the body of the email. If not provided, falls back to the default CSS inlining value for the workspace "},"scheduleTime":{"id":"scheduleTime","label":"Schedule Time","type":"date","required":true,"description":"The time to schedule the SMS to be sent. Must be a datetime as ISO 8601 string and time to send the message in UTC"},"inPatientLocalTime":{"id":"inPatientLocalTime","label":"In Patient Local Time","type":"boolean","required":false,"description":"If true, the schedule time will be in the patient's local time."},"atOptimalTime":{"id":"atOptimalTime","label":"At Optimal Time","type":"boolean","required":false,"description":"If true, the schedule time will be at the optimal time."},"campaignId":{"id":"campaignId","label":"Campaign ID","type":"string","required":false,"description":"Optional but required if you wish to track campaign stats"},"messageVariantionId":{"id":"messageVariantionId","label":"Message Variantion ID","type":"string","required":false,"description":"Used when providing a campaign_id to specify which message variation this message should be tracked under"}},"dataPoints":{"EmailDispatchId":{"key":"EmailDispatchId","valueType":"string"}},"previewable":true},"sendEmailUsingTemplate":{"key":"sendEmailUsingTemplate","title":"Send Email Using Template","description":"Send an email to a patient using a template. You can schedule the email to be sent at a later time.","category":"Communication","fields":{"externalUserId":{"id":"externalUserId","label":"External User ID","type":"string","required":true,"description":"The ID of the user in your system that this message is being sent to."},"appId":{"id":"appId","label":"App ID","type":"string","required":false,"description":"Specifies the app within your Braze workspace the activity will be associated with. Can also be provided via the extension settings."},"from":{"id":"from","label":"From","type":"string","required":true,"description":"valid email address in the format \"Display Name <email@address.com>\""},"templateId":{"id":"templateId","label":"Template ID","type":"string","required":true,"description":"The ID of the template to use."},"replyTo":{"id":"replyTo","label":"Reply To","type":"string","required":false,"description":"Valid email address in the format \"email@address.com\" - defaults to your workspace`s default reply to if not set"},"preheader":{"id":"preheader","label":"Preheader","type":"string","required":false,"description":"The preheader of the email. Recommended length 50-100 characters"},"scheduleTime":{"id":"scheduleTime","label":"Schedule Time","type":"date","required":false,"description":"The time to schedule the SMS to be sent. Must be a datetime as ISO 8601 string and time to send the message in UTC"},"inPatientLocalTime":{"id":"inPatientLocalTime","label":"In Patient Local Time","type":"boolean","required":false,"description":"If true, the schedule time will be in the patient's local time."},"atOptimalTime":{"id":"atOptimalTime","label":"At Optimal Time","type":"boolean","required":false,"description":"If true, the schedule time will be at the optimal time."},"campaignId":{"id":"campaignId","label":"Campaign ID","type":"string","required":false,"description":"Optional but required if you wish to track campaign stats"},"messageVariantionId":{"id":"messageVariantionId","label":"Message Variantion ID","type":"string","required":false,"description":"Used when providing a campaign_id to specify which message variation this message should be tracked under"}},"dataPoints":{"EmailDispatchId":{"key":"EmailDispatchId","valueType":"string"}},"previewable":true},"sendCampaign":{"key":"sendCampaign","title":"Send campaign","description":"Send a campaign with Braze","category":"Communication","fields":{"campaignId":{"id":"campaignId","label":"Campaign ID","type":"string","required":true,"description":"The ID of the campaign to send the email with attributes to."},"sendId":{"id":"sendId","label":"Send ID","type":"string","required":false,"description":"Send identifier (optional)"},"externalUserId":{"id":"externalUserId","label":"External User ID","type":"string","required":false,"description":"The ID of the user in your system that this message is being sent to. Either external_user_id or email must be provided."},"email":{"id":"email","label":"Email","type":"string","required":false,"description":"The email address of the user to send the email to. Either External User ID or Email must be provided."},"triggerProperties":{"id":"triggerProperties","label":"Trigger Properties","type":"json","required":false,"description":"Key-value pairs that can be referenced in your message template to personalize it and insert dynamic content."},"attributes":{"id":"attributes","label":"Attributes","type":"json","required":false,"description":"Create or update user-specific profile attribute. Attributes can trigger campaigns, can be used for segmentation, and personalization of messages."}},"dataPoints":{"EmailDispatchId":{"key":"EmailDispatchId","valueType":"string"}},"previewable":true}},"webhooks":[],"description":"Braze is a customer engagement platform that helps you communicate with your patients.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/c_thumb,w_200,g_face/v1740686243/brazeLogo_laecb9.jpg","title":"Braze","category":"Communication","author":{"authorType":"Awell"},"settings":{"appId":{"key":"appId","label":"App ID","obfuscated":false,"required":false,"description":"Specifies the app within your workspace that extension activity should be associated with. Can also be provided via the action field."},"apiKey":{"key":"apiKey","label":"API Key","obfuscated":true,"required":true,"description":"Used to authenticate with Braze"},"baseUrl":{"key":"baseUrl","label":"Base URL","obfuscated":false,"required":true,"description":"The base URL of the Braze instance"}}},{"key":"athenahealth","htmlDocs":"<hr />\n<p>title: Athena</p>\n<h2 id=\"descriptionathenaoffersmedicalgroupshospitalsandhealthsystemscloudbasedehrpracticemanagementandpatientengagementservicesthatseamlesslyconnectcareanddriveresultsforeveryclient\">description: Athena offers medical groups, hospitals, and health systems cloud-based EHR, practice management, and patient engagement services that seamlessly connect care and drive results for every client. </h2>\n<h2 id=\"athenahealth\">Athenahealth</h2>\n<p>Athena offers medical groups, hospitals, and health systems cloud-based EHR, practice management, and patient engagement services that seamlessly connect care and drive results for every client.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>For the extension to function correctly, you must configure the following settings:</p>\n<ul>\n<li>Auth server URL (e.g. https://api.preview.platform.athenahealth.com/oauth2/v1/token)</li>\n<li>Client ID</li>\n<li>Client secret</li>\n<li>API URL (https://api.preview.platform.athenahealth.com)</li>\n<li>Scope</li>\n<li>Practice ID</li>\n</ul>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"createpatient\">Create patient</h3>\n<p>Creates a patient in athenahealth. First name, last name, date of birth, email, and department ID are required. If a patient with the same name, date of birth, and email already exists, a new patient record will not be created. Instead, the existing patient's ID will be returned.</p>\n<h3 id=\"getpatient\">Get patient</h3>\n<p>Retrieve the details of a given patient within a given practice.</p>\n<h3 id=\"getappointment\">Get appointment</h3>\n<p>Retrieve the details of an appointment.</p>\n<h3 id=\"createappointmentnote\">Create appointment note</h3>\n<p>Create a note which will be appended to an appointment</p>","changelog":"<h1 id=\"athenachangelog\">Athena changelog</h1>","actions":{"getPatient":{"key":"getPatient","title":"Get patient","description":"Retrieve patient details from Athena","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"Logical identifier of the patient in Athena","type":"string","required":true}},"previewable":true,"dataPoints":{"firstName":{"key":"firstName","valueType":"string"},"lastName":{"key":"lastName","valueType":"string"},"email":{"key":"email","valueType":"string"},"dob":{"key":"dob","valueType":"date"}}},"getAppointment":{"key":"getAppointment","title":"Get appointment","description":"Retrieve appointment details from Athena","category":"EHR Integrations","fields":{"appointmentId":{"id":"appointmentId","label":"Appointment ID","description":"","type":"string","required":true}},"previewable":true,"dataPoints":{"patientId":{"key":"patientId","valueType":"string"},"startTime":{"key":"startTime","valueType":"string"},"status":{"key":"status","valueType":"string"},"appointmentTypeName":{"key":"appointmentTypeName","valueType":"string"},"appointmentTypeId":{"key":"appointmentTypeId","valueType":"string"},"date":{"key":"date","valueType":"date"},"duration":{"key":"duration","valueType":"number"}}},"createPatient":{"key":"createPatient","title":"Create patient","description":"Create a patient in athena","category":"EHR Integrations","fields":{"departmentid":{"id":"departmentid","label":"Department ID","description":"","type":"string","required":true},"firstname":{"id":"firstname","label":"First name","description":"","type":"string","required":true},"lastname":{"id":"lastname","label":"Last name","description":"","type":"string","required":true},"dob":{"id":"dob","label":"Date of birth","description":"","type":"date","required":true},"email":{"id":"email","label":"Email","description":"","type":"string","required":true}},"previewable":true,"dataPoints":{"createdPatientId":{"key":"createdPatientId","valueType":"string"}}},"createAppointmentNote":{"key":"createAppointmentNote","title":"Create appointment note","description":"Creates a note for a specific appointment","category":"EHR Integrations","fields":{"appointmentid":{"id":"appointmentid","label":"Appointment ID","description":"","type":"string","required":true},"notetext":{"id":"notetext","label":"Note text","description":"","type":"text","required":true},"displayonschedule":{"id":"displayonschedule","label":"Add note to homepage","description":"Add appointment note to homepage display","type":"boolean","required":false}},"previewable":true,"dataPoints":{}},"addClinicalDocument":{"key":"addClinicalDocument","title":"Add clinical document to chart","description":"Add clinical document to patient chart","category":"EHR Integrations","fields":{"departmentid":{"id":"departmentid","label":"Department ID","description":"","type":"string","required":true},"patientid":{"id":"patientid","label":"Patient ID","description":"","type":"string","required":true},"attachmentcontents":{"id":"attachmentcontents","label":"Content","description":"","type":"html","required":false}},"previewable":true,"dataPoints":{"clinicalDocumentId":{"key":"clinicalDocumentId","valueType":"string"}}}},"webhooks":[],"description":"Athena offers medical groups, hospitals, and health systems cloud-based EHR, practice management, and patient engagement services that seamlessly connect care and drive results for every client.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1708088411/Awell%20Extensions/athenahealth.png","title":"athenahealth","category":"EHR Integrations","author":{"authorType":"Awell"},"settings":{"auth_url":{"key":"auth_url","label":"Auth server URL","obfuscated":false,"required":true,"description":"Used to perform the Client Credential grant to obtain an access token"},"client_id":{"key":"client_id","label":"Client ID","obfuscated":true,"required":true,"description":"Used to perform the Client Credential grant to obtain an access token"},"client_secret":{"key":"client_secret","label":"Client secret","obfuscated":true,"required":true,"description":"Used to perform the Client Credential grant to obtain an access token"},"api_url":{"key":"api_url","label":"API URL","obfuscated":false,"required":true,"description":"The base URL of the resource server/API"},"scope":{"key":"scope","label":"Scope","obfuscated":false,"required":true,"description":"The value is a space-delimited, case-sensitive string of requested scopes."},"practiceId":{"key":"practiceId","label":"Practice ID","obfuscated":false,"required":true,"description":"The ID of your practice within athenahealth"}}},{"key":"availity","htmlDocs":"<hr />\n<p>title: Availity\ndescription: Availity's two-sided network allows payers and providers to share accurate, up-to-date information earlier in the healthcare lifecycle.</p>\n<hr />\n<h1 id=\"availity\">Availity</h1>\n<p>Availity's two-sided network allows payers and providers to share accurate, up-to-date information earlier in the healthcare lifecycle.</p>","changelog":"<h1 id=\"changelog\">CHANGELOG</h1>","actions":{"getInsuranceVerificationDemo":{"key":"getInsuranceVerificationDemo","title":"Get insurance verification (demo)","description":"This is a dummy action that either returns a verified or unverified status.","category":"Billing","fields":{},"previewable":true,"dataPoints":{"verified":{"key":"verified","valueType":"boolean"}}}},"webhooks":[],"description":"Availity's two-sided network allows payers and providers to share accurate, up-to-date information earlier in the healthcare lifecycle.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1752487435/Awell%20Extensions/availity.png","title":"Availity","category":"Billing","author":{"authorType":"Awell"},"settings":{}},{"key":"airtop","htmlDocs":"<hr />\n<p>title: Airtop</p>\n<h2 id=\"descriptioneffortlesslyscrapeandcontrolanysitewithinexpensiveandscalableaipoweredcloudbrowsers\">description: Effortlessly scrape and control any site with inexpensive and scalable AI-powered cloud browsers</h2>\n<h1 id=\"airtop\">Airtop</h1>\n<p>Effortlessly scrape and control any site with inexpensive and scalable AI-powered cloud browsers</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>To set up this extension, you will need to provide your Airtop API key.</p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"smartscrape\">Smart scrape</h3>\n<p>Intelligently scrape the full content of a page.</p>\n<h3 id=\"queryingapage\">Querying a page</h3>\n<p>Interact with a page using LLMs. Useful if you want to scrape a page for specific information, or even ask a more general question about the page. You can define an optional JSON schema to guide the AI’s response and force it to return JSON. This can be useful if you want a structured response that is more suitable for automated processing.</p>","changelog":"<h1 id=\"changelog\">CHANGELOG</h1>","actions":{"smartScrape":{"key":"smartScrape","title":"Smart Scrape a web page","description":"Scrape a web page with Airtop.","category":"Data","fields":{"pageUrl":{"id":"pageUrl","label":"Page URL","description":"The URL of the page to scrape","type":"string","required":true}},"previewable":true,"dataPoints":{"result":{"key":"result","valueType":"string"},"mimeType":{"key":"mimeType","valueType":"string"}}},"queryPage":{"key":"queryPage","title":"Query web page with LLM","description":"Query a web page using LLMs with Airtop’s.","category":"Data","fields":{"pageUrl":{"id":"pageUrl","label":"Page URL","description":"The URL of the page to scrape","type":"string","required":true},"prompt":{"id":"prompt","label":"Prompt","description":"The prompt used to query the page","type":"text","required":true},"jsonSchema":{"id":"jsonSchema","label":"JSON Schema","description":"Optional JSON schema to guide the AI’s response and force it to return JSON. This can be useful if you want a structured response that is more suitable for automated processing.","type":"json","required":false}},"previewable":true,"dataPoints":{"result":{"key":"result","valueType":"string"},"resultJson":{"key":"resultJson","valueType":"json"}}}},"webhooks":[],"description":"Effortlessly scrape and control any site with inexpensive and scalable AI-powered cloud browsers","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1754294899/Awell%20Extensions/1797e9c62ed74a4d95e8b9955abb6259.png","title":"Airtop","category":"Data","author":{"authorType":"Awell"},"settings":{"apiKey":{"key":"apiKey","label":"API key","description":"Your Airtop API key","required":true,"obfuscated":true}}},{"key":"awell","htmlDocs":"<hr />\n<p>title: Awell Workflow</p>\n<h2 id=\"descriptionenrichyourcareflowswithpowerfulawellactions\">description: Enrich your care flows with powerful Awell actions.</h2>\n<h1 id=\"awellapiextension\">Awell API extension</h1>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>You will need to provide the <a href=\"https://developers.awellhealth.com/awell-orchestration/api-reference/overview/endpoints\">API URL</a> and an <a href=\"https://developers.awellhealth.com/awell-orchestration/api-reference/overview/authorization\">API key</a>.</p>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"startcareflow\">Start care flow</h3>\n<p>Starts a new care flow for the patient enrolled in your current care flow.</p>\n<p><strong>Passing baseline info:</strong>\nPlease read the documentation on <a href=\"https://developers.awellhealth.com/awell-orchestration/api-reference/mutations/start-pathway\">our developer hub</a> to learn more about how to pass baseline info.</p>\n<p><strong>Example of how to configure a value for the baseline info action field:</strong></p>\n<pre><code class=\"json language-json\">[\n  {\n    \"data_point_definition_id\": \"age\",\n    \"value\": \"29\"\n  },\n  {\n    \"data_point_definition_id\": \"dob\",\n    \"value\": \"1993-11-30\"\n  }\n]\n</code></pre>\n<h3 id=\"stopcareflow\">Stop care flow</h3>\n<p>Stops the care flow the patient is currently enrolled in. A reason is why you are stopping the care flow is mandatory.</p>\n<h3 id=\"updatepatient\">Update patient</h3>\n<p>Allows updating patient data for the patient currently enrolled in the care flow.</p>\n<h3 id=\"ispatientalreadyenrolledincareflow\">Is patient already enrolled in care flow</h3>\n<p>Checks whether the patient is already enrolled in a care flow definition. The care flow the patient is currently enrolled in does not count and is excluded from the results.</p>\n<p><strong>Action fields:</strong></p>\n<ul>\n<li>pathwayStatus: a comma-separated string of care flow statuses that will be used when looking for care flows the patient is already enrolled in. By default, we only look at active care flows. Options: \"active\", \"completed\", \"missing_baseline_info\", \"starting\", and \"stopped\".</li>\n<li>careFlowDefinitionIds: a comma-separated string of care flow definition ids that will be used when looking for care flows the patient is already enrolled in. By default, we only search for care flows that match the current care flow definition id (i.e. is the patient already included in the current care flow?).</li>\n</ul>\n<p><strong>Data points:</strong></p>\n<ul>\n<li>result: a boolean indicating whether the patient is already enrolled in another care flow that matches your criteria (status &amp; care flow definition id)</li>\n<li>nbrOfResults: the number of care flows found for the patient that match the criteria.</li>\n<li>careFlowIds: a comma-separated string of care flow ids that matched your search criteria. It will be empty when the result is <code>false</code> because then there are no other care flow ids that match your criteria.</li>\n</ul>\n<h3 id=\"searchpatientsbypatientcode\">Search patients by patient code</h3>\n<p>Note that this action is deprecated and we recommend using <a href=\"https://developers.awellhealth.com/awell-orchestration/docs/misc/patient-identifiers\">identifiers</a> instead.</p>\n<p>Search whether, apart from the patient currently enrolled in the care flow, another patient with the same <code>patient_code</code> already exists.</p>\n<p><strong>Data points:</strong></p>\n<ol>\n<li>patientAlreadyExists: a boolean which will be true if minimum one patient with the patient code already exists.</li>\n<li>numberOfPatientsFound: the number of patients found with the same patient code.</li>\n<li>awellPatientIds: a comma-separated string of all Awell patient ids (except the current patient) that have the same patient code as the patient currently enrolled in the care flow. Will return an empty string when there are no other patients with the same patient code.</li>\n</ol>\n<h3 id=\"getpatientbyidentifier\">Get patient by identifier</h3>\n<p>This action lets you check if a patient with a specific identifier already exists in Awell. It's particularly useful when a patient's identity is initially anonymous during the start of the care flow, but later becomes identifiable through the identifiers collected during the care flow. This check ensures whether a patient with that identifier is already present or not.</p>\n<h3 id=\"addidentifiertopatient\">Add identifier to patient</h3>\n<p>This action allows you to add a unique identifier to the current patient's profile. If the patient already has an identifier with the same system but a different value, this action will update the existing identifier with the new value provided. </p>\n<p>First, it checks if this identifier (system and value) is already associated with another patient. If it's safe to proceed, it will add or update the identifier as needed. However, if another patient already has this identifier, the action will stop and notify you, preventing duplicates. To avoid conflicts, we recommend first running the \"Get patient by identifier\" action to check for any existing matches.</p>\n<h3 id=\"getdatapointvalue\">Get data point value</h3>\n<p>This action allows you to read the most recent data point value of a given data point definition id from a care flow different from the current one. The action returns multiple data points, each with a different value type. Pick the one you need from the returned data points based on the value type of the data point you want to read the value from.</p>\n<p><strong>Example:</strong>\nIf the data point you want to read the value from is of type <code>number</code>, then you should use the <code>valueNumber</code> data point.</p>\n<h2 id=\"webhooks\">Webhooks</h2>\n<p>Webhooks in the Awell extension offer ways to trigger a care flow based on the end of another care flow, or from any event that happens in your system (via the pathwayStart webhook).</p>","changelog":"<h1 id=\"awellchangelog\">Awell changelog</h1>\n<h2 id=\"april2024\">April 2024</h2>\n<p>Two new action were added: \"Get patient by identifier\" and \"Add identifier to patient\".</p>\n<h2 id=\"october262023\">October 26, 2023</h2>\n<p>Generic webhook to start a care flow added</p>\n<h2 id=\"april192023\">April 19, 2023</h2>\n<p>Stop care flow action added.\nSearch patients by patient code action was added.\n\"Is patient enrolled in care flow\" action added.</p>","actions":{"addAdhocTrack":{"key":"addAdhocTrack","title":"Add ad hoc track","description":"Add a pre-configured ad hoc track to a patient care flow.","category":"Workflow","fields":{"trackId":{"id":"trackId","label":"Track ID","description":"The ID of the ad hoc track that you want to add to the patient care flow.","type":"string","required":true}},"previewable":false},"addIdentifierToPatient":{"key":"addIdentifierToPatient","title":"Add identifier to patient","description":"Add a new identifier to the patient's profile","category":"Workflow","fields":{"system":{"id":"system","label":"System","description":"The namespace for the identifier value","type":"string","required":true},"value":{"id":"value","label":"Identifier value","description":"The value of the identifier","type":"string","required":true}},"dataPoints":{},"previewable":false},"getPatientByIdentifier":{"key":"getPatientByIdentifier","title":"Get patient by identifier","description":"Retrieve a patient based on the provided identifier system and value","category":"Workflow","fields":{"system":{"id":"system","label":"System","description":"The namespace for the identifier value","type":"string","required":true},"value":{"id":"value","label":"Identifier value","description":"The value of the identifier","type":"string","required":true}},"dataPoints":{"patientAlreadyExists":{"key":"patientAlreadyExists","valueType":"boolean"},"patientId":{"key":"patientId","valueType":"string"}},"previewable":true},"startCareFlow":{"key":"startCareFlow","title":"Start care flow","description":"Start a new care flow for the patient currently enrolled in the care flow.","category":"Workflow","fields":{"pathwayDefinitionId":{"id":"pathwayDefinitionId","label":"Care flow definition ID","description":"The identifier of the care flow definition to start.","type":"string","required":true},"baselineInfo":{"id":"baselineInfo","label":"Baseline info","description":"Use baseline info to pass values for data points when starting a care flow. This needs to be an array of objects, please read the documentation for more info.","type":"json","required":false}},"dataPoints":{"careFlowId":{"key":"careFlowId","valueType":"string"}},"previewable":false},"updatePatient":{"key":"updatePatient","title":"Update patient","description":"Update the current patient with new data.","category":"Workflow","fields":{"patientCode":{"id":"patientCode","label":"Patient code","type":"string","required":false},"firstName":{"id":"firstName","label":"First name","type":"string","required":false},"lastName":{"id":"lastName","label":"Last name","type":"string","required":false},"email":{"id":"email","label":"Email","type":"string","required":false},"birthDate":{"id":"birthDate","label":"Birth date","type":"date","required":false},"mobilePhone":{"id":"mobilePhone","label":"Mobile phone","type":"string","stringType":"phone","required":false},"phone":{"id":"phone","label":"Phone","type":"string","stringType":"phone","required":false},"preferredLanguage":{"id":"preferredLanguage","label":"Preferred language","type":"string","required":false},"sex":{"id":"sex","label":"Sex","description":"Sex code as defined by ISO standard IEC_5218","type":"string","required":false,"options":{"dropdownOptions":[{"label":"FEMALE","value":"FEMALE"},{"label":"MALE","value":"MALE"},{"label":"NOT_KNOWN","value":"NOT_KNOWN"}]}},"city":{"id":"city","label":"City","type":"string","required":false},"country":{"id":"country","label":"Country","type":"string","required":false},"state":{"id":"state","label":"State","type":"string","required":false},"street":{"id":"street","label":"Street","type":"string","required":false},"zip":{"id":"zip","label":"ZIP","type":"string","required":false},"nationalRegistryNumber":{"id":"nationalRegistryNumber","label":"National registry number","type":"string","required":false},"patientTimzone":{"id":"patientTimzone","label":"Patient timezone","type":"string","required":false,"options":{"dropdownOptions":[{"label":"Africa/Algiers","value":"Africa/Algiers"},{"label":"Atlantic/Cape_Verde","value":"Atlantic/Cape_Verde"},{"label":"Africa/Ndjamena","value":"Africa/Ndjamena"},{"label":"Africa/Abidjan","value":"Africa/Abidjan"},{"label":"Africa/Cairo","value":"Africa/Cairo"},{"label":"Africa/Bissau","value":"Africa/Bissau"},{"label":"Africa/Nairobi","value":"Africa/Nairobi"},{"label":"Africa/Monrovia","value":"Africa/Monrovia"},{"label":"Africa/Tripoli","value":"Africa/Tripoli"},{"label":"Indian/Mauritius","value":"Indian/Mauritius"},{"label":"Africa/Casablanca","value":"Africa/Casablanca"},{"label":"Africa/El_Aaiun","value":"Africa/El_Aaiun"},{"label":"Africa/Maputo","value":"Africa/Maputo"},{"label":"Africa/Windhoek","value":"Africa/Windhoek"},{"label":"Africa/Lagos","value":"Africa/Lagos"},{"label":"Africa/Sao_Tome","value":"Africa/Sao_Tome"},{"label":"Africa/Johannesburg","value":"Africa/Johannesburg"},{"label":"Africa/Khartoum","value":"Africa/Khartoum"},{"label":"Africa/Juba","value":"Africa/Juba"},{"label":"Africa/Tunis","value":"Africa/Tunis"},{"label":"Antarctica/Casey","value":"Antarctica/Casey"},{"label":"Antarctica/Davis","value":"Antarctica/Davis"},{"label":"Antarctica/Mawson","value":"Antarctica/Mawson"},{"label":"Antarctica/Troll","value":"Antarctica/Troll"},{"label":"Antarctica/Vostok","value":"Antarctica/Vostok"},{"label":"Antarctica/Rothera","value":"Antarctica/Rothera"},{"label":"Asia/Kabul","value":"Asia/Kabul"},{"label":"Asia/Yerevan","value":"Asia/Yerevan"},{"label":"Asia/Baku","value":"Asia/Baku"},{"label":"Asia/Dhaka","value":"Asia/Dhaka"},{"label":"Asia/Thimphu","value":"Asia/Thimphu"},{"label":"Indian/Chagos","value":"Indian/Chagos"},{"label":"Asia/Yangon","value":"Asia/Yangon"},{"label":"Asia/Shanghai","value":"Asia/Shanghai"},{"label":"Asia/Urumqi","value":"Asia/Urumqi"},{"label":"Asia/Hong_Kong","value":"Asia/Hong_Kong"},{"label":"Asia/Taipei","value":"Asia/Taipei"},{"label":"Asia/Macau","value":"Asia/Macau"},{"label":"Asia/Nicosia","value":"Asia/Nicosia"},{"label":"Asia/Famagusta","value":"Asia/Famagusta"},{"label":"Asia/Tbilisi","value":"Asia/Tbilisi"},{"label":"Asia/Dili","value":"Asia/Dili"},{"label":"Asia/Kolkata","value":"Asia/Kolkata"},{"label":"Asia/Jakarta","value":"Asia/Jakarta"},{"label":"Asia/Pontianak","value":"Asia/Pontianak"},{"label":"Asia/Makassar","value":"Asia/Makassar"},{"label":"Asia/Jayapura","value":"Asia/Jayapura"},{"label":"Asia/Tehran","value":"Asia/Tehran"},{"label":"Asia/Baghdad","value":"Asia/Baghdad"},{"label":"Asia/Jerusalem","value":"Asia/Jerusalem"},{"label":"Asia/Tokyo","value":"Asia/Tokyo"},{"label":"Asia/Amman","value":"Asia/Amman"},{"label":"Asia/Almaty","value":"Asia/Almaty"},{"label":"Asia/Qyzylorda","value":"Asia/Qyzylorda"},{"label":"Asia/Qostanay","value":"Asia/Qostanay"},{"label":"Asia/Aqtobe","value":"Asia/Aqtobe"},{"label":"Asia/Aqtau","value":"Asia/Aqtau"},{"label":"Asia/Atyrau","value":"Asia/Atyrau"},{"label":"Asia/Oral","value":"Asia/Oral"},{"label":"Asia/Bishkek","value":"Asia/Bishkek"},{"label":"Asia/Seoul","value":"Asia/Seoul"},{"label":"Asia/Pyongyang","value":"Asia/Pyongyang"},{"label":"Asia/Beirut","value":"Asia/Beirut"},{"label":"Asia/Kuching","value":"Asia/Kuching"},{"label":"Indian/Maldives","value":"Indian/Maldives"},{"label":"Asia/Hovd","value":"Asia/Hovd"},{"label":"Asia/Ulaanbaatar","value":"Asia/Ulaanbaatar"},{"label":"Asia/Kathmandu","value":"Asia/Kathmandu"},{"label":"Asia/Karachi","value":"Asia/Karachi"},{"label":"Asia/Gaza","value":"Asia/Gaza"},{"label":"Asia/Hebron","value":"Asia/Hebron"},{"label":"Asia/Manila","value":"Asia/Manila"},{"label":"Asia/Qatar","value":"Asia/Qatar"},{"label":"Asia/Riyadh","value":"Asia/Riyadh"},{"label":"Asia/Singapore","value":"Asia/Singapore"},{"label":"Asia/Colombo","value":"Asia/Colombo"},{"label":"Asia/Damascus","value":"Asia/Damascus"},{"label":"Asia/Dushanbe","value":"Asia/Dushanbe"},{"label":"Asia/Bangkok","value":"Asia/Bangkok"},{"label":"Asia/Ashgabat","value":"Asia/Ashgabat"},{"label":"Asia/Dubai","value":"Asia/Dubai"},{"label":"Asia/Samarkand","value":"Asia/Samarkand"},{"label":"Asia/Tashkent","value":"Asia/Tashkent"},{"label":"Asia/Ho_Chi_Minh","value":"Asia/Ho_Chi_Minh"},{"label":"Australia/Darwin","value":"Australia/Darwin"},{"label":"Australia/Perth","value":"Australia/Perth"},{"label":"Australia/Eucla","value":"Australia/Eucla"},{"label":"Australia/Brisbane","value":"Australia/Brisbane"},{"label":"Australia/Lindeman","value":"Australia/Lindeman"},{"label":"Australia/Adelaide","value":"Australia/Adelaide"},{"label":"Australia/Hobart","value":"Australia/Hobart"},{"label":"Australia/Melbourne","value":"Australia/Melbourne"},{"label":"Australia/Sydney","value":"Australia/Sydney"},{"label":"Australia/Broken_Hill","value":"Australia/Broken_Hill"},{"label":"Australia/Lord_Howe","value":"Australia/Lord_Howe"},{"label":"Antarctica/Macquarie","value":"Antarctica/Macquarie"},{"label":"Pacific/Fiji","value":"Pacific/Fiji"},{"label":"Pacific/Gambier","value":"Pacific/Gambier"},{"label":"Pacific/Marquesas","value":"Pacific/Marquesas"},{"label":"Pacific/Tahiti","value":"Pacific/Tahiti"},{"label":"Pacific/Guam","value":"Pacific/Guam"},{"label":"Pacific/Tarawa","value":"Pacific/Tarawa"},{"label":"Pacific/Kanton","value":"Pacific/Kanton"},{"label":"Pacific/Kiritimati","value":"Pacific/Kiritimati"},{"label":"Pacific/Kwajalein","value":"Pacific/Kwajalein"},{"label":"Pacific/Kosrae","value":"Pacific/Kosrae"},{"label":"Pacific/Nauru","value":"Pacific/Nauru"},{"label":"Pacific/Noumea","value":"Pacific/Noumea"},{"label":"Pacific/Auckland","value":"Pacific/Auckland"},{"label":"Pacific/Chatham","value":"Pacific/Chatham"},{"label":"Pacific/Rarotonga","value":"Pacific/Rarotonga"},{"label":"Pacific/Niue","value":"Pacific/Niue"},{"label":"Pacific/Norfolk","value":"Pacific/Norfolk"},{"label":"Pacific/Palau","value":"Pacific/Palau"},{"label":"Pacific/Port_Moresby","value":"Pacific/Port_Moresby"},{"label":"Pacific/Bougainville","value":"Pacific/Bougainville"},{"label":"Pacific/Pitcairn","value":"Pacific/Pitcairn"},{"label":"Pacific/Pago_Pago","value":"Pacific/Pago_Pago"},{"label":"Pacific/Apia","value":"Pacific/Apia"},{"label":"Pacific/Guadalcanal","value":"Pacific/Guadalcanal"},{"label":"Pacific/Fakaofo","value":"Pacific/Fakaofo"},{"label":"Pacific/Tongatapu","value":"Pacific/Tongatapu"},{"label":"Pacific/Efate","value":"Pacific/Efate"},{"label":"Australia/ACT","value":"Australia/ACT"},{"label":"Australia/LHI","value":"Australia/LHI"},{"label":"Australia/NSW","value":"Australia/NSW"},{"label":"Australia/North","value":"Australia/North"},{"label":"Australia/Queensland","value":"Australia/Queensland"},{"label":"Australia/South","value":"Australia/South"},{"label":"Australia/Tasmania","value":"Australia/Tasmania"},{"label":"Australia/Victoria","value":"Australia/Victoria"},{"label":"Australia/West","value":"Australia/West"},{"label":"Australia/Yancowinna","value":"Australia/Yancowinna"},{"label":"Brazil/Acre","value":"Brazil/Acre"},{"label":"Brazil/DeNoronha","value":"Brazil/DeNoronha"},{"label":"Brazil/East","value":"Brazil/East"},{"label":"Brazil/West","value":"Brazil/West"},{"label":"CET","value":"CET"},{"label":"CST6CDT","value":"CST6CDT"},{"label":"Canada/Atlantic","value":"Canada/Atlantic"},{"label":"Canada/Central","value":"Canada/Central"},{"label":"Canada/Eastern","value":"Canada/Eastern"},{"label":"Canada/Mountain","value":"Canada/Mountain"},{"label":"Canada/Newfoundland","value":"Canada/Newfoundland"},{"label":"Canada/Pacific","value":"Canada/Pacific"},{"label":"Canada/Saskatchewan","value":"Canada/Saskatchewan"},{"label":"Canada/Yukon","value":"Canada/Yukon"},{"label":"Chile/Continental","value":"Chile/Continental"},{"label":"Chile/EasterIsland","value":"Chile/EasterIsland"},{"label":"Cuba","value":"Cuba"},{"label":"EET","value":"EET"},{"label":"EST","value":"EST"},{"label":"EST5EDT","value":"EST5EDT"},{"label":"Egypt","value":"Egypt"},{"label":"Eire","value":"Eire"},{"label":"Etc/GMT+0","value":"Etc/GMT+0"},{"label":"Etc/GMT-0","value":"Etc/GMT-0"},{"label":"Etc/GMT0","value":"Etc/GMT0"},{"label":"Etc/Greenwich","value":"Etc/Greenwich"},{"label":"Etc/UCT","value":"Etc/UCT"},{"label":"Etc/Universal","value":"Etc/Universal"},{"label":"Etc/Zulu","value":"Etc/Zulu"},{"label":"GB","value":"GB"},{"label":"GB-Eire","value":"GB-Eire"},{"label":"GMT+0","value":"GMT+0"},{"label":"GMT-0","value":"GMT-0"},{"label":"GMT0","value":"GMT0"},{"label":"Greenwich","value":"Greenwich"},{"label":"Hongkong","value":"Hongkong"},{"label":"Iceland","value":"Iceland"},{"label":"Iran","value":"Iran"},{"label":"Israel","value":"Israel"},{"label":"Jamaica","value":"Jamaica"},{"label":"Japan","value":"Japan"},{"label":"Kwajalein","value":"Kwajalein"},{"label":"Libya","value":"Libya"},{"label":"MET","value":"MET"},{"label":"MST","value":"MST"},{"label":"MST7MDT","value":"MST7MDT"},{"label":"Mexico/BajaNorte","value":"Mexico/BajaNorte"},{"label":"Mexico/BajaSur","value":"Mexico/BajaSur"},{"label":"Mexico/General","value":"Mexico/General"},{"label":"NZ","value":"NZ"},{"label":"NZ-CHAT","value":"NZ-CHAT"},{"label":"Navajo","value":"Navajo"},{"label":"PRC","value":"PRC"},{"label":"Poland","value":"Poland"},{"label":"Portugal","value":"Portugal"},{"label":"ROC","value":"ROC"},{"label":"ROK","value":"ROK"},{"label":"Singapore","value":"Singapore"},{"label":"Turkey","value":"Turkey"},{"label":"UCT","value":"UCT"},{"label":"US/Alaska","value":"US/Alaska"},{"label":"US/Aleutian","value":"US/Aleutian"},{"label":"US/Arizona","value":"US/Arizona"},{"label":"US/Central","value":"US/Central"},{"label":"US/East-Indiana","value":"US/East-Indiana"},{"label":"US/Eastern","value":"US/Eastern"},{"label":"US/Hawaii","value":"US/Hawaii"},{"label":"US/Indiana-Starke","value":"US/Indiana-Starke"},{"label":"US/Michigan","value":"US/Michigan"},{"label":"US/Mountain","value":"US/Mountain"},{"label":"US/Pacific","value":"US/Pacific"},{"label":"US/Samoa","value":"US/Samoa"},{"label":"UTC","value":"UTC"},{"label":"Universal","value":"Universal"},{"label":"W-SU","value":"W-SU"},{"label":"Zulu","value":"Zulu"},{"label":"America/Buenos_Aires","value":"America/Buenos_Aires"},{"label":"America/Catamarca","value":"America/Catamarca"},{"label":"America/Cordoba","value":"America/Cordoba"},{"label":"America/Indianapolis","value":"America/Indianapolis"},{"label":"America/Jujuy","value":"America/Jujuy"},{"label":"America/Knox_IN","value":"America/Knox_IN"},{"label":"America/Louisville","value":"America/Louisville"},{"label":"America/Mendoza","value":"America/Mendoza"},{"label":"America/Virgin","value":"America/Virgin"},{"label":"Pacific/Samoa","value":"Pacific/Samoa"},{"label":"Africa/Accra","value":"Africa/Accra"},{"label":"Africa/Addis_Ababa","value":"Africa/Addis_Ababa"},{"label":"Africa/Asmara","value":"Africa/Asmara"},{"label":"Africa/Bamako","value":"Africa/Bamako"},{"label":"Africa/Bangui","value":"Africa/Bangui"},{"label":"Africa/Banjul","value":"Africa/Banjul"},{"label":"Africa/Blantyre","value":"Africa/Blantyre"},{"label":"Africa/Brazzaville","value":"Africa/Brazzaville"},{"label":"Africa/Bujumbura","value":"Africa/Bujumbura"},{"label":"Africa/Conakry","value":"Africa/Conakry"},{"label":"Africa/Dakar","value":"Africa/Dakar"},{"label":"Africa/Dar_es_Salaam","value":"Africa/Dar_es_Salaam"},{"label":"Africa/Djibouti","value":"Africa/Djibouti"},{"label":"Africa/Douala","value":"Africa/Douala"},{"label":"Africa/Freetown","value":"Africa/Freetown"},{"label":"Africa/Gaborone","value":"Africa/Gaborone"},{"label":"Africa/Harare","value":"Africa/Harare"},{"label":"Africa/Kampala","value":"Africa/Kampala"},{"label":"Africa/Kigali","value":"Africa/Kigali"},{"label":"Africa/Kinshasa","value":"Africa/Kinshasa"},{"label":"Africa/Libreville","value":"Africa/Libreville"},{"label":"Africa/Lome","value":"Africa/Lome"},{"label":"Africa/Luanda","value":"Africa/Luanda"},{"label":"Africa/Lubumbashi","value":"Africa/Lubumbashi"},{"label":"Africa/Lusaka","value":"Africa/Lusaka"},{"label":"Africa/Malabo","value":"Africa/Malabo"},{"label":"Africa/Maseru","value":"Africa/Maseru"},{"label":"Africa/Mbabane","value":"Africa/Mbabane"},{"label":"Africa/Mogadishu","value":"Africa/Mogadishu"},{"label":"Africa/Niamey","value":"Africa/Niamey"},{"label":"Africa/Nouakchott","value":"Africa/Nouakchott"},{"label":"Africa/Ouagadougou","value":"Africa/Ouagadougou"},{"label":"Africa/Porto-Novo","value":"Africa/Porto-Novo"},{"label":"America/Anguilla","value":"America/Anguilla"},{"label":"America/Antigua","value":"America/Antigua"},{"label":"America/Aruba","value":"America/Aruba"},{"label":"America/Atikokan","value":"America/Atikokan"},{"label":"America/Blanc-Sablon","value":"America/Blanc-Sablon"},{"label":"America/Cayman","value":"America/Cayman"},{"label":"America/Creston","value":"America/Creston"},{"label":"America/Curacao","value":"America/Curacao"},{"label":"America/Dominica","value":"America/Dominica"},{"label":"America/Grenada","value":"America/Grenada"},{"label":"America/Guadeloupe","value":"America/Guadeloupe"},{"label":"America/Kralendijk","value":"America/Kralendijk"},{"label":"America/Lower_Princes","value":"America/Lower_Princes"},{"label":"America/Marigot","value":"America/Marigot"},{"label":"America/Montserrat","value":"America/Montserrat"},{"label":"America/Nassau","value":"America/Nassau"},{"label":"America/Port_of_Spain","value":"America/Port_of_Spain"},{"label":"America/St_Barthelemy","value":"America/St_Barthelemy"},{"label":"America/St_Kitts","value":"America/St_Kitts"},{"label":"America/St_Lucia","value":"America/St_Lucia"},{"label":"America/St_Thomas","value":"America/St_Thomas"},{"label":"America/St_Vincent","value":"America/St_Vincent"},{"label":"America/Tortola","value":"America/Tortola"},{"label":"Antarctica/DumontDUrville","value":"Antarctica/DumontDUrville"},{"label":"Antarctica/McMurdo","value":"Antarctica/McMurdo"},{"label":"Antarctica/Syowa","value":"Antarctica/Syowa"},{"label":"Arctic/Longyearbyen","value":"Arctic/Longyearbyen"},{"label":"Asia/Aden","value":"Asia/Aden"},{"label":"Asia/Bahrain","value":"Asia/Bahrain"},{"label":"Asia/Brunei","value":"Asia/Brunei"},{"label":"Asia/Kuala_Lumpur","value":"Asia/Kuala_Lumpur"},{"label":"Asia/Kuwait","value":"Asia/Kuwait"},{"label":"Asia/Muscat","value":"Asia/Muscat"},{"label":"Asia/Phnom_Penh","value":"Asia/Phnom_Penh"},{"label":"Asia/Vientiane","value":"Asia/Vientiane"},{"label":"Atlantic/Reykjavik","value":"Atlantic/Reykjavik"},{"label":"Atlantic/St_Helena","value":"Atlantic/St_Helena"},{"label":"Europe/Amsterdam","value":"Europe/Amsterdam"},{"label":"Europe/Bratislava","value":"Europe/Bratislava"},{"label":"Europe/Busingen","value":"Europe/Busingen"},{"label":"Europe/Copenhagen","value":"Europe/Copenhagen"},{"label":"Europe/Guernsey","value":"Europe/Guernsey"},{"label":"Europe/Isle_of_Man","value":"Europe/Isle_of_Man"},{"label":"Europe/Jersey","value":"Europe/Jersey"},{"label":"Europe/Ljubljana","value":"Europe/Ljubljana"},{"label":"Europe/Luxembourg","value":"Europe/Luxembourg"},{"label":"Europe/Mariehamn","value":"Europe/Mariehamn"},{"label":"Europe/Monaco","value":"Europe/Monaco"},{"label":"Europe/Oslo","value":"Europe/Oslo"},{"label":"Europe/Podgorica","value":"Europe/Podgorica"},{"label":"Europe/San_Marino","value":"Europe/San_Marino"},{"label":"Europe/Sarajevo","value":"Europe/Sarajevo"},{"label":"Europe/Skopje","value":"Europe/Skopje"},{"label":"Europe/Stockholm","value":"Europe/Stockholm"},{"label":"Europe/Vaduz","value":"Europe/Vaduz"},{"label":"Europe/Vatican","value":"Europe/Vatican"},{"label":"Europe/Zagreb","value":"Europe/Zagreb"},{"label":"Indian/Antananarivo","value":"Indian/Antananarivo"},{"label":"Indian/Christmas","value":"Indian/Christmas"},{"label":"Indian/Cocos","value":"Indian/Cocos"},{"label":"Indian/Comoro","value":"Indian/Comoro"},{"label":"Indian/Kerguelen","value":"Indian/Kerguelen"},{"label":"Indian/Mahe","value":"Indian/Mahe"},{"label":"Indian/Mayotte","value":"Indian/Mayotte"},{"label":"Indian/Reunion","value":"Indian/Reunion"},{"label":"Pacific/Chuuk","value":"Pacific/Chuuk"},{"label":"Pacific/Funafuti","value":"Pacific/Funafuti"},{"label":"Pacific/Majuro","value":"Pacific/Majuro"},{"label":"Pacific/Midway","value":"Pacific/Midway"},{"label":"Pacific/Pohnpei","value":"Pacific/Pohnpei"},{"label":"Pacific/Saipan","value":"Pacific/Saipan"},{"label":"Pacific/Wake","value":"Pacific/Wake"},{"label":"Pacific/Wallis","value":"Pacific/Wallis"},{"label":"Africa/Timbuktu","value":"Africa/Timbuktu"},{"label":"America/Argentina/ComodRivadavia","value":"America/Argentina/ComodRivadavia"},{"label":"America/Atka","value":"America/Atka"},{"label":"America/Coral_Harbour","value":"America/Coral_Harbour"},{"label":"America/Ensenada","value":"America/Ensenada"},{"label":"America/Fort_Wayne","value":"America/Fort_Wayne"},{"label":"America/Montreal","value":"America/Montreal"},{"label":"America/Nipigon","value":"America/Nipigon"},{"label":"America/Pangnirtung","value":"America/Pangnirtung"},{"label":"America/Porto_Acre","value":"America/Porto_Acre"},{"label":"America/Rainy_River","value":"America/Rainy_River"},{"label":"America/Rosario","value":"America/Rosario"},{"label":"America/Santa_Isabel","value":"America/Santa_Isabel"},{"label":"America/Shiprock","value":"America/Shiprock"},{"label":"America/Thunder_Bay","value":"America/Thunder_Bay"},{"label":"America/Yellowknife","value":"America/Yellowknife"},{"label":"Antarctica/South_Pole","value":"Antarctica/South_Pole"},{"label":"Asia/Choibalsan","value":"Asia/Choibalsan"},{"label":"Asia/Chongqing","value":"Asia/Chongqing"},{"label":"Asia/Harbin","value":"Asia/Harbin"},{"label":"Asia/Kashgar","value":"Asia/Kashgar"},{"label":"Asia/Tel_Aviv","value":"Asia/Tel_Aviv"},{"label":"Atlantic/Jan_Mayen","value":"Atlantic/Jan_Mayen"},{"label":"Australia/Canberra","value":"Australia/Canberra"},{"label":"Australia/Currie","value":"Australia/Currie"},{"label":"Europe/Belfast","value":"Europe/Belfast"},{"label":"Europe/Tiraspol","value":"Europe/Tiraspol"},{"label":"Europe/Uzhgorod","value":"Europe/Uzhgorod"},{"label":"Europe/Zaporozhye","value":"Europe/Zaporozhye"},{"label":"Pacific/Enderbury","value":"Pacific/Enderbury"},{"label":"Pacific/Johnston","value":"Pacific/Johnston"},{"label":"Pacific/Yap","value":"Pacific/Yap"},{"label":"WET","value":"WET"},{"label":"Africa/Asmera","value":"Africa/Asmera"},{"label":"America/Godthab","value":"America/Godthab"},{"label":"Asia/Ashkhabad","value":"Asia/Ashkhabad"},{"label":"Asia/Calcutta","value":"Asia/Calcutta"},{"label":"Asia/Chungking","value":"Asia/Chungking"},{"label":"Asia/Dacca","value":"Asia/Dacca"},{"label":"Asia/Istanbul","value":"Asia/Istanbul"},{"label":"Asia/Katmandu","value":"Asia/Katmandu"},{"label":"Asia/Macao","value":"Asia/Macao"},{"label":"Asia/Rangoon","value":"Asia/Rangoon"},{"label":"Asia/Saigon","value":"Asia/Saigon"},{"label":"Asia/Thimbu","value":"Asia/Thimbu"},{"label":"Asia/Ujung_Pandang","value":"Asia/Ujung_Pandang"},{"label":"Asia/Ulan_Bator","value":"Asia/Ulan_Bator"},{"label":"Atlantic/Faeroe","value":"Atlantic/Faeroe"},{"label":"Europe/Kiev","value":"Europe/Kiev"},{"label":"Europe/Nicosia","value":"Europe/Nicosia"},{"label":"HST","value":"HST"},{"label":"PST8PDT","value":"PST8PDT"},{"label":"Pacific/Ponape","value":"Pacific/Ponape"},{"label":"Pacific/Truk","value":"Pacific/Truk"},{"label":"Etc/UTC","value":"Etc/UTC"},{"label":"Etc/GMT","value":"Etc/GMT"},{"label":"GMT","value":"GMT"},{"label":"Etc/GMT-14","value":"Etc/GMT-14"},{"label":"Etc/GMT-13","value":"Etc/GMT-13"},{"label":"Etc/GMT-12","value":"Etc/GMT-12"},{"label":"Etc/GMT-11","value":"Etc/GMT-11"},{"label":"Etc/GMT-10","value":"Etc/GMT-10"},{"label":"Etc/GMT-9","value":"Etc/GMT-9"},{"label":"Etc/GMT-8","value":"Etc/GMT-8"},{"label":"Etc/GMT-7","value":"Etc/GMT-7"},{"label":"Etc/GMT-6","value":"Etc/GMT-6"},{"label":"Etc/GMT-5","value":"Etc/GMT-5"},{"label":"Etc/GMT-4","value":"Etc/GMT-4"},{"label":"Etc/GMT-3","value":"Etc/GMT-3"},{"label":"Etc/GMT-2","value":"Etc/GMT-2"},{"label":"Etc/GMT-1","value":"Etc/GMT-1"},{"label":"Etc/GMT+1","value":"Etc/GMT+1"},{"label":"Etc/GMT+2","value":"Etc/GMT+2"},{"label":"Etc/GMT+3","value":"Etc/GMT+3"},{"label":"Etc/GMT+4","value":"Etc/GMT+4"},{"label":"Etc/GMT+5","value":"Etc/GMT+5"},{"label":"Etc/GMT+6","value":"Etc/GMT+6"},{"label":"Etc/GMT+7","value":"Etc/GMT+7"},{"label":"Etc/GMT+8","value":"Etc/GMT+8"},{"label":"Etc/GMT+9","value":"Etc/GMT+9"},{"label":"Etc/GMT+10","value":"Etc/GMT+10"},{"label":"Etc/GMT+11","value":"Etc/GMT+11"},{"label":"Etc/GMT+12","value":"Etc/GMT+12"},{"label":"Europe/London","value":"Europe/London"},{"label":"Europe/Dublin","value":"Europe/Dublin"},{"label":"Europe/Tirane","value":"Europe/Tirane"},{"label":"Europe/Andorra","value":"Europe/Andorra"},{"label":"Europe/Vienna","value":"Europe/Vienna"},{"label":"Europe/Minsk","value":"Europe/Minsk"},{"label":"Europe/Brussels","value":"Europe/Brussels"},{"label":"Europe/Sofia","value":"Europe/Sofia"},{"label":"Europe/Prague","value":"Europe/Prague"},{"label":"Atlantic/Faroe","value":"Atlantic/Faroe"},{"label":"America/Danmarkshavn","value":"America/Danmarkshavn"},{"label":"America/Scoresbysund","value":"America/Scoresbysund"},{"label":"America/Nuuk","value":"America/Nuuk"},{"label":"America/Thule","value":"America/Thule"},{"label":"Europe/Tallinn","value":"Europe/Tallinn"},{"label":"Europe/Helsinki","value":"Europe/Helsinki"},{"label":"Europe/Paris","value":"Europe/Paris"},{"label":"Europe/Berlin","value":"Europe/Berlin"},{"label":"Europe/Gibraltar","value":"Europe/Gibraltar"},{"label":"Europe/Athens","value":"Europe/Athens"},{"label":"Europe/Budapest","value":"Europe/Budapest"},{"label":"Europe/Rome","value":"Europe/Rome"},{"label":"Europe/Riga","value":"Europe/Riga"},{"label":"Europe/Vilnius","value":"Europe/Vilnius"},{"label":"Europe/Malta","value":"Europe/Malta"},{"label":"Europe/Chisinau","value":"Europe/Chisinau"},{"label":"Europe/Warsaw","value":"Europe/Warsaw"},{"label":"Europe/Lisbon","value":"Europe/Lisbon"},{"label":"Atlantic/Azores","value":"Atlantic/Azores"},{"label":"Atlantic/Madeira","value":"Atlantic/Madeira"},{"label":"Europe/Bucharest","value":"Europe/Bucharest"},{"label":"Europe/Kaliningrad","value":"Europe/Kaliningrad"},{"label":"Europe/Moscow","value":"Europe/Moscow"},{"label":"Europe/Simferopol","value":"Europe/Simferopol"},{"label":"Europe/Astrakhan","value":"Europe/Astrakhan"},{"label":"Europe/Volgograd","value":"Europe/Volgograd"},{"label":"Europe/Saratov","value":"Europe/Saratov"},{"label":"Europe/Kirov","value":"Europe/Kirov"},{"label":"Europe/Samara","value":"Europe/Samara"},{"label":"Europe/Ulyanovsk","value":"Europe/Ulyanovsk"},{"label":"Asia/Yekaterinburg","value":"Asia/Yekaterinburg"},{"label":"Asia/Omsk","value":"Asia/Omsk"},{"label":"Asia/Barnaul","value":"Asia/Barnaul"},{"label":"Asia/Novosibirsk","value":"Asia/Novosibirsk"},{"label":"Asia/Tomsk","value":"Asia/Tomsk"},{"label":"Asia/Novokuznetsk","value":"Asia/Novokuznetsk"},{"label":"Asia/Krasnoyarsk","value":"Asia/Krasnoyarsk"},{"label":"Asia/Irkutsk","value":"Asia/Irkutsk"},{"label":"Asia/Chita","value":"Asia/Chita"},{"label":"Asia/Yakutsk","value":"Asia/Yakutsk"},{"label":"Asia/Vladivostok","value":"Asia/Vladivostok"},{"label":"Asia/Khandyga","value":"Asia/Khandyga"},{"label":"Asia/Sakhalin","value":"Asia/Sakhalin"},{"label":"Asia/Magadan","value":"Asia/Magadan"},{"label":"Asia/Srednekolymsk","value":"Asia/Srednekolymsk"},{"label":"Asia/Ust-Nera","value":"Asia/Ust-Nera"},{"label":"Asia/Kamchatka","value":"Asia/Kamchatka"},{"label":"Asia/Anadyr","value":"Asia/Anadyr"},{"label":"Europe/Belgrade","value":"Europe/Belgrade"},{"label":"Europe/Madrid","value":"Europe/Madrid"},{"label":"Africa/Ceuta","value":"Africa/Ceuta"},{"label":"Atlantic/Canary","value":"Atlantic/Canary"},{"label":"Europe/Zurich","value":"Europe/Zurich"},{"label":"Europe/Istanbul","value":"Europe/Istanbul"},{"label":"Europe/Kyiv","value":"Europe/Kyiv"},{"label":"Factory","value":"Factory"},{"label":"America/New_York","value":"America/New_York"},{"label":"America/Chicago","value":"America/Chicago"},{"label":"America/North_Dakota/Center","value":"America/North_Dakota/Center"},{"label":"America/North_Dakota/New_Salem","value":"America/North_Dakota/New_Salem"},{"label":"America/North_Dakota/Beulah","value":"America/North_Dakota/Beulah"},{"label":"America/Denver","value":"America/Denver"},{"label":"America/Los_Angeles","value":"America/Los_Angeles"},{"label":"America/Juneau","value":"America/Juneau"},{"label":"America/Sitka","value":"America/Sitka"},{"label":"America/Metlakatla","value":"America/Metlakatla"},{"label":"America/Yakutat","value":"America/Yakutat"},{"label":"America/Anchorage","value":"America/Anchorage"},{"label":"America/Nome","value":"America/Nome"},{"label":"America/Adak","value":"America/Adak"},{"label":"Pacific/Honolulu","value":"Pacific/Honolulu"},{"label":"America/Phoenix","value":"America/Phoenix"},{"label":"America/Boise","value":"America/Boise"},{"label":"America/Indiana/Indianapolis","value":"America/Indiana/Indianapolis"},{"label":"America/Indiana/Marengo","value":"America/Indiana/Marengo"},{"label":"America/Indiana/Vincennes","value":"America/Indiana/Vincennes"},{"label":"America/Indiana/Tell_City","value":"America/Indiana/Tell_City"},{"label":"America/Indiana/Petersburg","value":"America/Indiana/Petersburg"},{"label":"America/Indiana/Knox","value":"America/Indiana/Knox"},{"label":"America/Indiana/Winamac","value":"America/Indiana/Winamac"},{"label":"America/Indiana/Vevay","value":"America/Indiana/Vevay"},{"label":"America/Kentucky/Louisville","value":"America/Kentucky/Louisville"},{"label":"America/Kentucky/Monticello","value":"America/Kentucky/Monticello"},{"label":"America/Detroit","value":"America/Detroit"},{"label":"America/Menominee","value":"America/Menominee"},{"label":"America/St_Johns","value":"America/St_Johns"},{"label":"America/Goose_Bay","value":"America/Goose_Bay"},{"label":"America/Halifax","value":"America/Halifax"},{"label":"America/Glace_Bay","value":"America/Glace_Bay"},{"label":"America/Moncton","value":"America/Moncton"},{"label":"America/Toronto","value":"America/Toronto"},{"label":"America/Winnipeg","value":"America/Winnipeg"},{"label":"America/Regina","value":"America/Regina"},{"label":"America/Swift_Current","value":"America/Swift_Current"},{"label":"America/Edmonton","value":"America/Edmonton"},{"label":"America/Vancouver","value":"America/Vancouver"},{"label":"America/Dawson_Creek","value":"America/Dawson_Creek"},{"label":"America/Fort_Nelson","value":"America/Fort_Nelson"},{"label":"America/Iqaluit","value":"America/Iqaluit"},{"label":"America/Resolute","value":"America/Resolute"},{"label":"America/Rankin_Inlet","value":"America/Rankin_Inlet"},{"label":"America/Cambridge_Bay","value":"America/Cambridge_Bay"},{"label":"America/Inuvik","value":"America/Inuvik"},{"label":"America/Whitehorse","value":"America/Whitehorse"},{"label":"America/Dawson","value":"America/Dawson"},{"label":"America/Cancun","value":"America/Cancun"},{"label":"America/Merida","value":"America/Merida"},{"label":"America/Matamoros","value":"America/Matamoros"},{"label":"America/Monterrey","value":"America/Monterrey"},{"label":"America/Mexico_City","value":"America/Mexico_City"},{"label":"America/Ciudad_Juarez","value":"America/Ciudad_Juarez"},{"label":"America/Ojinaga","value":"America/Ojinaga"},{"label":"America/Chihuahua","value":"America/Chihuahua"},{"label":"America/Hermosillo","value":"America/Hermosillo"},{"label":"America/Mazatlan","value":"America/Mazatlan"},{"label":"America/Bahia_Banderas","value":"America/Bahia_Banderas"},{"label":"America/Tijuana","value":"America/Tijuana"},{"label":"America/Barbados","value":"America/Barbados"},{"label":"America/Belize","value":"America/Belize"},{"label":"Atlantic/Bermuda","value":"Atlantic/Bermuda"},{"label":"America/Costa_Rica","value":"America/Costa_Rica"},{"label":"America/Havana","value":"America/Havana"},{"label":"America/Santo_Domingo","value":"America/Santo_Domingo"},{"label":"America/El_Salvador","value":"America/El_Salvador"},{"label":"America/Guatemala","value":"America/Guatemala"},{"label":"America/Port-au-Prince","value":"America/Port-au-Prince"},{"label":"America/Tegucigalpa","value":"America/Tegucigalpa"},{"label":"America/Jamaica","value":"America/Jamaica"},{"label":"America/Martinique","value":"America/Martinique"},{"label":"America/Managua","value":"America/Managua"},{"label":"America/Panama","value":"America/Panama"},{"label":"America/Puerto_Rico","value":"America/Puerto_Rico"},{"label":"America/Miquelon","value":"America/Miquelon"},{"label":"America/Grand_Turk","value":"America/Grand_Turk"},{"label":"America/Argentina/Buenos_Aires","value":"America/Argentina/Buenos_Aires"},{"label":"America/Argentina/Cordoba","value":"America/Argentina/Cordoba"},{"label":"America/Argentina/Salta","value":"America/Argentina/Salta"},{"label":"America/Argentina/Tucuman","value":"America/Argentina/Tucuman"},{"label":"America/Argentina/La_Rioja","value":"America/Argentina/La_Rioja"},{"label":"America/Argentina/San_Juan","value":"America/Argentina/San_Juan"},{"label":"America/Argentina/Jujuy","value":"America/Argentina/Jujuy"},{"label":"America/Argentina/Catamarca","value":"America/Argentina/Catamarca"},{"label":"America/Argentina/Mendoza","value":"America/Argentina/Mendoza"},{"label":"America/Argentina/San_Luis","value":"America/Argentina/San_Luis"},{"label":"America/Argentina/Rio_Gallegos","value":"America/Argentina/Rio_Gallegos"},{"label":"America/Argentina/Ushuaia","value":"America/Argentina/Ushuaia"},{"label":"America/La_Paz","value":"America/La_Paz"},{"label":"America/Noronha","value":"America/Noronha"},{"label":"America/Belem","value":"America/Belem"},{"label":"America/Santarem","value":"America/Santarem"},{"label":"America/Fortaleza","value":"America/Fortaleza"},{"label":"America/Recife","value":"America/Recife"},{"label":"America/Araguaina","value":"America/Araguaina"},{"label":"America/Maceio","value":"America/Maceio"},{"label":"America/Bahia","value":"America/Bahia"},{"label":"America/Sao_Paulo","value":"America/Sao_Paulo"},{"label":"America/Campo_Grande","value":"America/Campo_Grande"},{"label":"America/Cuiaba","value":"America/Cuiaba"},{"label":"America/Porto_Velho","value":"America/Porto_Velho"},{"label":"America/Boa_Vista","value":"America/Boa_Vista"},{"label":"America/Manaus","value":"America/Manaus"},{"label":"America/Eirunepe","value":"America/Eirunepe"},{"label":"America/Rio_Branco","value":"America/Rio_Branco"},{"label":"America/Santiago","value":"America/Santiago"},{"label":"America/Coyhaique","value":"America/Coyhaique"},{"label":"America/Punta_Arenas","value":"America/Punta_Arenas"},{"label":"Pacific/Easter","value":"Pacific/Easter"},{"label":"Antarctica/Palmer","value":"Antarctica/Palmer"},{"label":"America/Bogota","value":"America/Bogota"},{"label":"America/Guayaquil","value":"America/Guayaquil"},{"label":"Pacific/Galapagos","value":"Pacific/Galapagos"},{"label":"Atlantic/Stanley","value":"Atlantic/Stanley"},{"label":"America/Cayenne","value":"America/Cayenne"},{"label":"America/Guyana","value":"America/Guyana"},{"label":"America/Asuncion","value":"America/Asuncion"},{"label":"America/Lima","value":"America/Lima"},{"label":"Atlantic/South_Georgia","value":"Atlantic/South_Georgia"},{"label":"America/Paramaribo","value":"America/Paramaribo"},{"label":"America/Montevideo","value":"America/Montevideo"},{"label":"America/Caracas","value":"America/Caracas"}]}}},"previewable":false},"stopCareFlow":{"key":"stopCareFlow","title":"Stop care flow","description":"Stop the care flow the patient is currently enrolled.","category":"Workflow","fields":{"careFlowIds":{"id":"careFlowIds","label":"Care flow ID(s)","description":"The care flow ID(s) to stop. You can stop multiple care flows at once by separating the IDs with a comma. If not provided, the current care flow will be stopped.","type":"string","required":false},"reason":{"id":"reason","label":"Reason","description":"The reason why you want to stop the care flow.","type":"string","required":true}},"previewable":false},"stopTrack":{"key":"stopTrack","title":"Stop track","description":"Stop a track in a patient care flow (pathway).","category":"Workflow","fields":{"trackDefinitionId":{"id":"trackDefinitionId","label":"Track definition ID","description":"The definitionID of the track that you want to stop.","type":"string","required":true}},"previewable":false},"searchPatientsByPatientCode":{"key":"searchPatientsByPatientCode","title":"Search patient by patient code (DEPRECATED, USE IDENTIFIERS)","description":"Search whether the current patient already exists. Search happens based on the `patient_code` field which is taken from the patient's profile.","category":"Demo","fields":{},"dataPoints":{"patientAlreadyExists":{"key":"patientAlreadyExists","valueType":"boolean"},"numberOfPatientsFound":{"key":"numberOfPatientsFound","valueType":"number"},"awellPatientIds":{"key":"awellPatientIds","valueType":"string"}},"previewable":true},"isPatientEnrolledInCareFlow":{"key":"isPatientEnrolledInCareFlow","title":"Is patient already enrolled in care flow","description":"Checks whether the patient is already enrolled in the current care flow definition.","category":"Workflow","fields":{"pathwayStatus":{"id":"pathwayStatus","label":"Pathway status","description":"A comma-separated string of care flow statuses that will be used when looking for care flows the patient is already enrolled in. By default, we only look at active care flows. Possible values are: starting, active, stopped, completed, missing_baseline_info.","type":"string","required":false},"careFlowDefinitionIds":{"id":"careFlowDefinitionIds","label":"Care flow definition IDs","description":"A comma-separated string of care flow definition ids that will be used when looking for care flows the patient is already enrolled in. By default, we only search for care flows that match the current care flow definition id (i.e. is the patient already included in the current care flow?).","type":"string","required":false},"dayRange":{"id":"dayRange","label":"Past day range","description":"The number of days to look back for care flows that were started in the past, e.g last 30 days.","type":"numeric","required":false}},"dataPoints":{"result":{"key":"result","valueType":"boolean"},"nbrOfResults":{"key":"nbrOfResults","valueType":"number"},"careFlowIds":{"key":"careFlowIds","valueType":"string"}},"previewable":false},"isPatientEnrolledInTrack":{"key":"isPatientEnrolledInTrack","title":"Check patient track enrollment status","description":"Checks whether the patient is enrolled, has been enrolled, or is scheduled to be enrolled in a specific track. This is time-based and will return the status of the track at the time of the check.","category":"Workflow","fields":{"trackDefinitionId":{"id":"trackDefinitionId","label":"Track definition ID","description":"The definition ID of the track to check enrollment status for.","type":"string","required":true}},"dataPoints":{"has_been_enrolled_in_track":{"key":"has_been_enrolled_in_track","valueType":"boolean"},"is_enrolled_in_track":{"key":"is_enrolled_in_track","valueType":"boolean"},"track_is_scheduled":{"key":"track_is_scheduled","valueType":"boolean"},"next_track_scheduled_date":{"key":"next_track_scheduled_date","valueType":"date"}},"previewable":false},"updateBaselineInfo":{"key":"updateBaselineInfo","title":"Update Baseline Datapoints","description":"Update some (or all) of the baseline datapoints for the patient currently enrolled in the care flow.","category":"Workflow","fields":{"careflowId":{"id":"careflowId","label":"Care flow ID","description":"The ID of the care flow to update the baseline info for. When not provided, the baseline info will be updated for the current care flow.","type":"string","required":false},"baselineInfo":{"id":"baselineInfo","label":"Baseline info","description":"Use baseline data points often used to start a care flow. Example: \n      [\n        {\n          \"data_point_definition_id\": \"age\",\n          \"value\": \"29\"\n        },\n        {\n          \"data_point_definition_id\": \"dob\",\n          \"value\": \"1993-11-30\"\n        }\n      ]","type":"json","required":false}},"dataPoints":{"success":{"key":"success","valueType":"boolean"}},"previewable":false},"startHostedPagesSession":{"key":"startHostedPagesSession","title":"Start Hosted Pages Session","description":"Start a new Hosted Pages session for a given stakeholder","category":"Workflow","fields":{"careFlowId":{"id":"careFlowId","label":"Care flow ID","description":"The instance ID of the care flow to start a session for","type":"string","required":true},"stakeholder":{"id":"stakeholder","label":"Stakeholder","description":"The name of the stakeholder to start the session for","type":"string","required":true}},"dataPoints":{"sessionUrl":{"key":"sessionUrl","valueType":"string"}},"previewable":false},"startCareFlowAndSession":{"key":"startCareFlowAndSession","title":"Start Care flow and session","description":"Start a new care flow and immediately create a session","category":"Workflow","fields":{"careFlowDefinitionId":{"id":"careFlowDefinitionId","label":"Care flow definition ID","description":"The definition ID of the care flow to start","type":"string","required":true},"stakeholderDefinitionId":{"id":"stakeholderDefinitionId","label":"Stakeholder ","description":"The stakeholder to start the session for","type":"string","options":{"dropdownOptions":[{"value":"LGH3v741vUqm","label":"Physician"},{"value":"patient","label":"Patient"}]},"required":true},"baselineInfo":{"id":"baselineInfo","label":"Baseline info","description":"Use baseline info to pass values for data points when starting a care flow. This needs to be an array of objects, please read the documentation for more info.","type":"json","required":false}},"dataPoints":{"careFlowId":{"key":"careFlowId","valueType":"string"},"sessionUrl":{"key":"sessionUrl","valueType":"string"}},"previewable":false},"getDataPointValue":{"key":"getDataPointValue","title":"Get data point value","description":"Get the value of a data point","category":"Workflow","fields":{"careFlowId":{"id":"careFlowId","label":"Care flow ID","description":"The care flow to get the data point value from. Can be a different care flow than the current one.","type":"string","required":true},"dataPointDefinitionId":{"id":"dataPointDefinitionId","label":"Data point definition ID","description":"The data point definition ID to get the value from.","type":"string","required":true}},"dataPoints":{"valueString":{"key":"valueString","valueType":"string"},"valueNumber":{"key":"valueNumber","valueType":"number"},"valueDate":{"key":"valueDate","valueType":"date"},"valueJson":{"key":"valueJson","valueType":"json"},"valueBoolean":{"key":"valueBoolean","valueType":"boolean"},"valueTelephone":{"key":"valueTelephone","valueType":"telephone"},"valueStringsArray":{"key":"valueStringsArray","valueType":"strings_array"},"valueNumbersArray":{"key":"valueStringsArray","valueType":"strings_array"}},"previewable":false},"listFormAnswers":{"key":"listFormAnswers","title":"List form answers","description":"List form answers","category":"Workflow","fields":{"scope":{"id":"scope","label":"Scope","description":"The scope in which to look for forms. Default is \"Step\" (current step only).","type":"string","required":false,"options":{"dropdownOptions":[{"label":"Step","value":"Step"},{"label":"Track","value":"Track"}]}},"formSelection":{"id":"formSelection","label":"Form selection","description":"Whether to capture the most recent form or all forms in the scope. Default is \"Latest\". Form headers will be included if \"All\" is selected.","type":"string","required":false,"options":{"dropdownOptions":[{"label":"Latest","value":"Latest"},{"label":"All","value":"All"}]}},"language":{"id":"language","label":"Language","description":"The language the output should be in. Default is English.","type":"string","required":false,"options":{"dropdownOptions":[{"label":"English","value":"English"},{"label":"Dutch","value":"Dutch"},{"label":"French","value":"French"}]}},"includeDescriptions":{"id":"includeDescriptions","label":"Include descriptions","description":"Should descriptions be included in the output? Default is \"Yes\".","type":"boolean","required":false},"includeMissingAnswers":{"id":"includeMissingAnswers","label":"Include missing answers","description":"Should missing or unanswered questions be included in the output? Default is \"Yes\".","type":"boolean","required":false},"separator":{"id":"separator","label":"Separator","description":"The separator to use between questions. If not provided, questions will be separated by a blank line.","type":"string","required":false}},"dataPoints":{"output":{"key":"output","valueType":"string"},"numberOfFormsCaptured":{"key":"numberOfFormsCaptured","valueType":"number"}},"previewable":false},"createNaviSession":{"key":"createNaviSession","title":"Create Navi Session","description":"Create a Navi portal session for a stakeholder","category":"Workflow","fields":{"stakeholderId":{"id":"stakeholderId","label":"Stakeholder","description":"The stakeholder to create the session for. Leave empty to default to the patient.","type":"string","required":false},"exp":{"id":"exp","label":"Expiration (epoch seconds)","description":"When the session should expire, as a Unix timestamp in seconds. If left empty, we default to 30 days.","type":"string","required":false}},"dataPoints":{"sessionId":{"key":"sessionId","valueType":"string"},"naviSessionUrl":{"key":"naviSessionUrl","valueType":"string"},"statusCode":{"key":"statusCode","valueType":"string"}},"previewable":false},"getCurrentCareflowId":{"key":"getCurrentCareflowId","title":"Get current care flow ID","description":"Get the current care flow ID","category":"Workflow","fields":{},"dataPoints":{"careFlowId":{"key":"careFlowId","valueType":"string"},"careFlowDefinitionId":{"key":"careFlowDefinitionId","valueType":"string"}},"previewable":false}},"webhooks":[{"key":"pathwayCompleted","dataPoints":{"pathway_definition_id":{"key":"pathway_definition_id","valueType":"string"},"complete_date":{"key":"complete_date","valueType":"date"}}},{"key":"pathwayStart","description":"Start a pathway via webhook. No data points are expected nor required.","dataPoints":{}}],"description":"Enrich your care flows with powerful Awell actions.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1678870116/Awell%20Extensions/Awell_Logo.png","title":"Awell Workflow","category":"Workflow","author":{"authorType":"Awell"},"settings":{}},{"key":"awellTasks","htmlDocs":"<hr />\n<p>title: Awell Tasks</p>\n<h2 id=\"descriptionawelltasksisanextensionthatallowscommunicationwiththetaskservicemodule\">description: Awell Tasks is an extension that allows communication with the Task Service module.</h2>\n<h1 id=\"awelltasks\">Awell Tasks</h1>\n<p>Awell Tasks is an extension that allows communication with the Task Service module.</p>","changelog":"<h1 id=\"changelog\">CHANGELOG</h1>","actions":{"getComments":{"key":"getComments","title":"Get comments","description":"Retrieves all comments in a care flow.","category":"Communication","fields":{},"previewable":false,"dataPoints":{"comments":{"key":"comments","valueType":"string"}},"supports_automated_retries":true},"getLastTaskPerformer":{"key":"getLastTaskPerformer","title":"Get last task performer","description":"Retrieves the performer of the last task.","category":"Communication","fields":{},"previewable":false,"dataPoints":{"stytchUserId":{"key":"stytchUserId","valueType":"string"},"email":{"key":"email","valueType":"string"}},"supports_automated_retries":true}},"webhooks":[],"description":"Connect to Awell Tasks","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1736765692/Awell%20Extensions/AwellTasks.png","title":"Awell Tasks","category":"Workflow","author":{"authorType":"Awell"},"settings":{"baseUrl":{"key":"baseUrl","label":"Base URL","obfuscated":false,"description":"The base URL of the Task ServiceAPI","required":true},"apiKey":{"key":"apiKey","label":"API key","obfuscated":true,"description":"The API key for the Task Service API","required":true}}},{"key":"calDotCom","htmlDocs":"<hr />\n<p>title: Cal.com</p>\n<h2 id=\"descriptioncalcomisamodernandopensourceschedulingplatformwithhipaagdprandsoc2complianceyoucanensurethatdataiswellprotectedandthatmakescalcomagreatfitforhealthcareusecases\">description: Cal.com is a modern and open source scheduling platform. With HIPAA, GDPR and SOC2 compliance, you can ensure that data is well-protected and that makes Cal.com a great fit for healthcare use cases.</h2>\n<h1 id=\"calcom\">Cal.com</h1>\n<p><a href=\"https://cal.com/\">Cal.com</a> is a modern and <strong>open source</strong> scheduling platform. With HIPAA, GDPR and SOC2 compliance, you can ensure that data is well-protected and that makes Cal.com a great fit for healthcare use cases.</p>\n<h2 id=\"calcomxawell\">Cal.com x Awell</h2>\n<p>This extension allows you to let a stakeholder (eg: a patient) book an appointment as part of a care flow and to retrieve the booking details of an appointment.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, <strong>you will need to provide a Cal.com API key</strong>. You can obtain an API key via the Cal.com portal (<code>Settings &gt; Developer &gt; API keys</code>).</p>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"bookappointmentaction\">Book appointment action</h3>\n<p>You can add this action to your care flow to enable a stakeholder (eg: a patient) to book an appointment in a predefined calendar. This is a <strong>stakeholder-actionable action</strong> which means it requires an actual user to book an appointment. Also note that this is a blocking action and that the care flow will not progress - unless there are parallel tracks or transitions - until the action/activity is completed (i.e. an appointment was booked).</p>\n<p><strong>The actual booking of the appointment can happen in two ways:</strong></p>\n<ol>\n<li>With Awell Hosted Pages: when the \"Book appointment\" action is activated, we serve the booking widget to the stakeholder so they can book an appointment directly from within Awell Hosted Pages.</li>\n<li>If you are not leveraging Awell Hosted Pages but have built a custom integration then we expose you all the details via our API so you can either create a Cal.com booking widget yourself or redirect the user to the Cal.com platform. Additionally, we expose a mutation that allows you to complete the activity and pass in the required data.</li>\n</ol>\n<p>Below you can find an overview of all Awell Apps and whether they support rendering of the booking widget.</p>\n<table>\n<thead>\n<tr>\n<th>App</th>\n<th>Supported</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Awell Hosted Pages</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>Your app (custom integration)</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>Awell Care</td>\n<td>No</td>\n</tr>\n<tr>\n<td>Awell MyCare</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"datapoints\">Data points</h4>\n<p>Adding this action to your care flow will expose a new data point you can use in your care flow, the <code>bookingId</code>. When the care flow is orchestrated and the book appointment activity is completed, the id of the actual booking will be ingested as the value of that <code>bookingId</code> data point.</p>\n<h3 id=\"getbookingaction\">Get booking action</h3>\n<p>This action allows you to fetch the details of a booking based on the provided <code>bookingId</code>. This action will make the following data points available for you to use in your care flow:</p>\n<ol>\n<li>Event type ID</li>\n<li>Title</li>\n<li>Description</li>\n<li>Start time</li>\n<li>End time</li>\n<li>Status</li>\n<li>Cancel URL</li>\n<li>Reschedule URL</li>\n<li>Video call URL (if available)</li>\n<li>First Attendee's name</li>\n<li>First Attendee's timezone</li>\n<li>First Attendee's email</li>\n<li>Organizer's email</li>\n</ol>\n<h3 id=\"updatebooking\">Update booking</h3>\n<p>Updates a booking and saves new <code>bookingId</code> and <code>bookingUid</code> as Data Points. Values possible to update:</p>\n<ul>\n<li>Title - Title of Booking event</li>\n<li>Description - Description of the meeting</li>\n<li>Status - Status of the meeting to be set. Possible values: \"ACCEPTED\", \"PENDING\", \"CANCELLED\", \"REJECTED\".</li>\n<li>Start - Start time of the Event in ISO 8601 format, e.g. 2023-05-24T13:00:00.000Z. Please note that start/end time must be within user's availability hours.</li>\n<li>End - End time of the Event in ISO 8601 format, e.g. 2023-05-24T13:00:00.000Z. Please note that start/end time must be within user's availability hours.</li>\n</ul>\n<h3 id=\"createbooking\">Create booking</h3>\n<p>Creates a booking and saves new <code>bookingId</code> as Data Points. Available fields:</p>\n<ul>\n<li>Event Type ID - ID of the event type to book</li>\n<li>Responses - Object containing email, name, location</li>\n<li><code>json\n    \"responses\": {\n        \"name\": \"John Doe\",\n        \"email\": \"john.doe@example.com\",\n        \"location\": \"Calcom HQ\"\n    },\n</code></li>\n<li>Metadata - Any metadata associated with the booking</li>\n<li>Timezone - Timezone of the Attendee</li>\n<li>Language - Language of the Attendee</li>\n<li>Recurring Event ID - Recurring Event ID if the event is recurring</li>\n<li>Title - Title of Booking event</li>\n<li>Description - Description of the meeting</li>\n<li>Status - Status of the meeting to be set. Possible values: \"ACCEPTED\", \"PENDING\", \"CANCELLED\", \"REJECTED\".</li>\n<li>Start - Start time of the Event in ISO 8601 format, e.g. 2023-05-24T13:00:00.000Z. Please note that start/end time must be within user's availability hours.</li>\n<li>End - End time of the Event in ISO 8601 format, e.g. 2023-05-24T13:00:00.000Z. Please note that start/end time must be within user's availability hours.</li>\n</ul>\n<h3 id=\"deleteboooking\">Delete Boooking</h3>\n<p>Deletes a Booking with a given ID.</p>\n<h2 id=\"pricing\">Pricing</h2>\n<p><strong>This extension is free</strong> but keep in mind that you might need a paid plan for Cal.com depending on your needs.</p>\n<h2 id=\"limitations\">Limitations</h2>\n<h3 id=\"rescheduling\">Rescheduling</h3>\n<p>When a previously made booking is rescheduled, there is no way yet to get the new/updated booking details into the care flow or have the care flow react on the updated booking.</p>\n<p>Also note that when a booking is rescheduled, Cal.com doesn't update the original booking resource but creates a new one instead. As far as we know, there is no reference from the old booking to the new (rescheduled) booking.</p>\n<h4 id=\"example\">Example</h4>\n<p>An appointment has been booked with Cal.com and we have the below booking resource:</p>\n<pre><code class=\"json language-json\">{\n    ...,\n    \"bookingId\": \"1\",\n    \"date\": \"Jan 1, 2023\"\n}\n</code></pre>\n<p>However, the patient reschedules the booking to Jan 10, 2023. When querying Cal.com's API (<code>GET v1/bookings/{bookingId}</code>), it will still return the old booking date instead of the new/rescheduled date.</p>\n<pre><code class=\"json language-json\">{\n    ...,\n    \"bookingId\": \"1\",\n    \"date\": \"Jan 1, 2023\"\n}\n</code></pre>\n<h2 id=\"webhooks\">Webhooks</h2>\n<p>Webhooks offer a great way to automate the flow with Awell when invitees schedule, cancel, or reschedule events, or when the meeting ends.</p>\n<p><strong>Important notes:</strong></p>\n<ol>\n<li>An Awell webhook endpoint can only listen to one event type. So make sure that when you create a webhook in Cal.com, the subscriber URL and the event trigger match the Awell webhook endpoint. This also means there can only be one event type per subscriber URL.</li>\n<li>Using a secret to verify the authenticity of the received payload is not yet supported.</li>\n<li>Custom payload templates are not supported, please use the default ones.</li>\n</ol>","changelog":"<h1 id=\"calcomchangelog\">Cal.com changelog</h1>\n<h2 id=\"september152023\">September 15, 2023</h2>\n<ul>\n<li>add createBooking action</li>\n<li>add first attendee name and timezone to getBooking data points</li>\n</ul>\n<h2 id=\"september42023\">September 4, 2023</h2>\n<ul>\n<li>add updateBooking and deleteBooking actions</li>\n<li>update and refactor structure of getBooking and bookAppointment actions</li>\n</ul>\n<h2 id=\"july42023\">July 4, 2023</h2>\n<ul>\n<li>Get booking action: add validation that bookingId and apiKey are not empty</li>\n<li>Get booking action: add validation of response data to make sure we have data points</li>\n</ul>\n<h2 id=\"april272023\">April 27, 2023</h2>\n<ul>\n<li>Get booking action: <code>startTime</code> and <code>endTime</code> data points are now of value type <code>date</code> instead of <code>string</code>.</li>\n</ul>","actions":{"bookAppointment":{"key":"bookAppointment","title":"Book appointment","description":"Enable a stakeholder to book an appointment via Cal.com.","category":"Scheduling","fields":{"calLink":{"id":"calLink","label":"Cal Link","description":"The Cal Link that you want to embed e.g. \"john\". Just give the username. No need to give the full URL https://cal.com/john.","type":"string","required":true}},"dataPoints":{"bookingId":{"key":"bookingId","valueType":"string"}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}},"previewable":false},"getBooking":{"key":"getBooking","title":"Get booking (v1)","description":"Get Booking and save data in Data Points","category":"Scheduling","fields":{"bookingId":{"id":"bookingId","label":"Booking ID","type":"string","required":true}},"dataPoints":{"eventTypeId":{"key":"eventTypeId","valueType":"string"},"title":{"key":"title","valueType":"string"},"description":{"key":"description","valueType":"string"},"startTime":{"key":"startTime","valueType":"date"},"endTime":{"key":"endTime","valueType":"date"},"status":{"key":"status","valueType":"string"},"cancelUrl":{"key":"cancelUrl","valueType":"string"},"rescheduleUrl":{"key":"rescheduleUrl","valueType":"string"},"firstAttendeeEmail":{"key":"firstAttendeeEmail","valueType":"string"},"firstAttendeeTimezone":{"key":"firstAttendeeTimezone","valueType":"string"},"firstAttendeeName":{"key":"firstAttendeeName","valueType":"string"},"userEmail":{"key":"userEmail","valueType":"string"},"location":{"key":"location","valueType":"string"},"videoCallUrl":{"key":"videoCallUrl","valueType":"string"}},"previewable":true},"updateBooking":{"key":"updateBooking","title":"Update booking (v1)","description":"Updates Booking","category":"Scheduling","fields":{"bookingId":{"label":"Booking ID","id":"bookingId","type":"string","required":true,"description":"The ID of a Booking in Cal.com"},"title":{"label":"Title","id":"title","type":"string","required":false,"description":"Title of Booking event"},"description":{"label":"Description","id":"description","type":"string","required":false,"description":"Description of the meeting"},"start":{"label":"Start","id":"start","type":"string","required":false,"description":"Start time of the Event in ISO 8601 format, e.g. 2023-05-24T13:00:00.000Z. Please note that start/end time must be within user's availability hours."},"end":{"label":"End","id":"end","type":"string","required":false,"description":"End time of the Event in ISO 8601 format, e.g. 2023-05-24T13:00:00.000Z. Please note that start/end time must be within user's availability hours."},"status":{"label":"Status","id":"status","type":"string","required":false,"description":"Status of the meeting to be set. Possible values: \"ACCEPTED\", \"PENDING\", \"CANCELLED\", \"REJECTED\"."}},"dataPoints":{"bookingId":{"key":"bookingId","valueType":"string"},"bookingUid":{"key":"bookingUid","valueType":"string"}},"previewable":true},"deleteBooking":{"key":"deleteBooking","title":"Delete booking (v1)","description":"Deletes Booking in Cal.com","category":"Scheduling","fields":{"bookingId":{"label":"Booking ID","id":"bookingId","type":"string","required":true,"description":"The ID of a Booking in Cal.com"},"allRemainingBookings":{"label":"All remaining bookings","id":"allRemainingBookings","type":"boolean","required":false,"description":"Delete all remaining bookings"},"reason":{"label":"Reason","id":"reason","type":"text","required":false,"description":"The reason for cancellation of the booking"}},"previewable":true},"createBooking":{"key":"createBooking","title":"Create booking (v1)","description":"Creates a new booking via the Cal.com API","category":"Scheduling","fields":{"eventTypeId":{"label":"Event Type ID","id":"eventTypeId","type":"numeric","required":true,"description":"ID of the event type to book"},"start":{"label":"Start","id":"start","type":"string","required":true,"description":"Start time of the Event in ISO 8601 format, e.g. 2023-05-24T13:00:00.000Z. Please note that start/end time must be within user's availability hours."},"end":{"label":"End","id":"end","type":"string","required":false,"description":"End time of the Event in ISO 8601 format, e.g. 2023-05-24T13:00:00.000Z. Please note that start/end time must be within user's availability hours."},"responses":{"label":"Responses","id":"responses","type":"json","required":true,"description":"Object containing email, name, location"},"metadata":{"label":"Metadata","id":"metadata","type":"json","required":false,"description":"Any metadata associated with the booking"},"timeZone":{"label":"Timezone","id":"timeZone","type":"string","required":true,"description":"Timezone of the Attendee"},"language":{"label":"Language","id":"language","type":"string","required":true,"description":"Language of the Attendee"},"title":{"label":"Title","id":"title","type":"string","required":false,"description":"Title of Booking event"},"recurringEventId":{"label":"Recurring Event Type ID","id":"recurringEventId","type":"numeric","required":false,"description":"Recurring event ID if the event is recurring"},"description":{"label":"Description","id":"description","type":"string","required":false,"description":"Description of the meeting"},"status":{"label":"Status","id":"status","type":"string","required":false,"description":"Status of the meeting to be set. Possible values: \"ACCEPTED\", \"PENDING\", \"CANCELLED\", \"REJECTED\".","options":{"dropdownOptions":[{"label":"ACCEPTED","value":"ACCEPTED"},{"label":"PENDING","value":"PENDING"},{"label":"CANCELLED","value":"CANCELLED"},{"label":"REJECTED","value":"REJECTED"}]}}},"dataPoints":{"bookingId":{"key":"bookingId","valueType":"string"}},"previewable":true},"getBookingv2":{"key":"getBookingv2","title":"Get booking (v2)","description":"Retrieve booking details from Cal.com using the v2 api","category":"Scheduling","fields":{"bookingUid":{"id":"bookingUid","label":"Booking UID","type":"string","required":true}},"dataPoints":{"bookingData":{"key":"bookingData","valueType":"json"},"eventTypeId":{"key":"eventTypeId","valueType":"string"},"title":{"key":"title","valueType":"string"},"description":{"key":"description","valueType":"string"},"startTime":{"key":"startTime","valueType":"date"},"endTime":{"key":"endTime","valueType":"date"},"status":{"key":"status","valueType":"string"},"cancelUrl":{"key":"cancelUrl","valueType":"string"},"rescheduleUrl":{"key":"rescheduleUrl","valueType":"string"},"firstAttendeeEmail":{"key":"firstAttendeeEmail","valueType":"string"},"firstAttendeeTimezone":{"key":"firstAttendeeTimezone","valueType":"string"},"firstAttendeeName":{"key":"firstAttendeeName","valueType":"string"},"hostEmail":{"key":"hostEmail","valueType":"string"},"location":{"key":"location","valueType":"string"},"bookingFieldsResponses":{"key":"bookingFieldsResponses","valueType":"json"},"metadata":{"key":"metadata","valueType":"json"}},"previewable":true}},"webhooks":[{"key":"bookingCreated","dataPoints":{"bookingId":{"key":"bookingId","valueType":"string"},"bookingUid":{"key":"bookingUid","valueType":"string"}}},{"key":"bookingCancelled","dataPoints":{"bookingId":{"key":"bookingId","valueType":"string"},"bookingUid":{"key":"bookingUid","valueType":"string"}}},{"key":"bookingRescheduled","dataPoints":{"bookingId":{"key":"bookingId","valueType":"string"},"bookingUid":{"key":"bookingUid","valueType":"string"}}}],"description":"Enable scheduling in your care flows with Cal.com.","icon_url":"https://cal.com/logo.svg","title":"Cal.com","category":"Scheduling","author":{"authorType":"HTD"},"settings":{"apiKey":{"label":"API Key","key":"apiKey","obfuscated":true,"required":true,"description":"Enter an API key so Awell can communicate with Cal.com."},"customDomain":{"label":"Custom Domain","key":"customDomain","obfuscated":false,"required":false,"description":"Custom domain for your Cal.com deployment. Defaults to https://cal.com but can be overridden for enterprise Cal.com accounts with custom domains (e.g., https://myorg.cal.com)."}}},{"key":"calendly","htmlDocs":"<hr />\n<p>title: Calendly</p>\n<h2 id=\"descriptioncalendlyisyourschedulingautomationplatformforeliminatingthebackandforthemailstofindtheperfecttime\">description: Calendly is your scheduling automation platform for eliminating the back-and-forth emails to find the perfect time</h2>\n<h1 id=\"calendly\">Calendly</h1>\n<p><a href=\"https://calendly.com/\">Calendly</a> is the scheduling automation platform with team-based scheduling, solutions and integrations for every department, and advanced security features. Note that Calendly is not HIPAA-compliant, so is not endorsed by Awell. If you wish to use a HIPAA-compliant scheduling solution, we recommend using our Cal.com extension instead.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, <strong>you will need to provide a Calendly API key</strong>. You can obtain an API key via the Calendly portal (<code>Settings &gt; Developer &gt; API keys</code>).</p>\n<h2 id=\"pricing\">Pricing</h2>\n<p><strong>This extension is free</strong> but keep in mind that you might need a paid plan for Calendly depending on your needs.</p>\n<h2 id=\"webhooks\">Webhooks</h2>\n<p>Webhooks offer a great way to automate the flow with Awell when invitees schedule, cancel, or reschedule events, or when the meeting ends.</p>\n<p><strong>Important notes:</strong></p>\n<ol>\n<li>An Awell webhook endpoint can only listen to one event type. So make sure that when you create a webhook in Calendly, the subscriber URL and the event trigger match the Awell webhook endpoint. This also means there can only be one event type per subscriber URL.</li>\n<li>Using a secret to verify the authenticity of the received payload is not yet supported.</li>\n<li>Custom payload templates are not supported, please use the default ones.</li>\n</ol>\n<h2 id=\"notesaboutrescheduledappointments\">Notes about rescheduled appointments</h2>\n<p>Apparently, Calendly doesn't make it completely clear when an <code>invitee.created</code> event is created and sent via a webhook. Instead, the <code>rescheduled</code> field is part of the <code>invitee.cancelled</code> webhook, and the <code>old_invitee</code> field is populated in the new <code>invitee.created</code> event. So, this extension uses a <code>is_rescheduled_event</code> field in the <code>invitee.created</code> listener to reflect an <code>old_invitee</code> being present. So:</p>\n<p>In order to check to see if an <strong>event was rescheduled</strong> (rather than a new event):</p>\n<ul>\n<li>validate <code>is_rescheduled_event</code> is true</li>\n</ul>\n<p>In order to understand if a <strong>cancellation was actually a rescheduling</strong>:</p>\n<ul>\n<li>validate <code>rescheduled</code> is true</li>\n</ul>","changelog":"<h1 id=\"calendlychangelog\">Calendly changelog</h1>\n<h2 id=\"november32023\">November 3, 2023</h2>\n<ul>\n<li>Calendly webhooks for event created, canceled and rescheduled are now supported.</li>\n</ul>\n<h2 id=\"november202023\">November 20, 2023</h2>\n<ul>\n<li>Removed rescheduled event; expectation is that the rescheduling should be handled on the client side, given Calendly does not direcly support a rescheduled webhook</li>\n</ul>","actions":{},"webhooks":[{"key":"eventCreated","dataPoints":{"eventId":{"key":"eventId","valueType":"string"},"eventTypeId":{"key":"eventTypeId","valueType":"string"},"inviteeEmail":{"key":"inviteeEmail","valueType":"string"},"inviteeFirstName":{"key":"inviteeFirstName","valueType":"string"},"inviteeLastName":{"key":"inviteeLastName","valueType":"string"},"inviteeName":{"key":"inviteeName","valueType":"string"},"inviteeStatus":{"key":"inviteeStatus","valueType":"string"},"inviteeTimezone":{"key":"inviteeTimezone","valueType":"string"},"hostEmail":{"key":"hostEmail","valueType":"string"},"startTime":{"key":"startTime","valueType":"date"},"endTime":{"key":"endTime","valueType":"date"},"cancelUrl":{"key":"cancelUrl","valueType":"string"},"rescheduleUrl":{"key":"rescheduleUrl","valueType":"string"},"videoCallUrl":{"key":"videoCallUrl","valueType":"string"},"eventName":{"key":"eventName","valueType":"string"},"inviteePhoneNumber":{"key":"inviteePhoneNumber","valueType":"string"},"rescheduled":{"key":"rescheduled","valueType":"boolean"},"is_rescheduled_event":{"key":"is_rescheduled_event","valueType":"boolean"}}},{"key":"eventCanceled","dataPoints":{"eventId":{"key":"eventId","valueType":"string"},"eventTypeId":{"key":"eventTypeId","valueType":"string"},"inviteeEmail":{"key":"inviteeEmail","valueType":"string"},"inviteeFirstName":{"key":"inviteeFirstName","valueType":"string"},"inviteeLastName":{"key":"inviteeLastName","valueType":"string"},"inviteeName":{"key":"inviteeName","valueType":"string"},"inviteeStatus":{"key":"inviteeStatus","valueType":"string"},"inviteeTimezone":{"key":"inviteeTimezone","valueType":"string"},"hostEmail":{"key":"hostEmail","valueType":"string"},"startTime":{"key":"startTime","valueType":"date"},"endTime":{"key":"endTime","valueType":"date"},"cancelUrl":{"key":"cancelUrl","valueType":"string"},"rescheduleUrl":{"key":"rescheduleUrl","valueType":"string"},"videoCallUrl":{"key":"videoCallUrl","valueType":"string"},"eventName":{"key":"eventName","valueType":"string"},"inviteePhoneNumber":{"key":"inviteePhoneNumber","valueType":"string"},"rescheduled":{"key":"rescheduled","valueType":"boolean"},"cancellation_reason":{"key":"cancellation_reason","valueType":"string"}}}],"description":"** In beta ** Enable scheduling in your care flows with Calendly.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1773330172/calendly-logo_mtaoa1.png","title":"Calendly","category":"Scheduling","author":{"authorType":"External","authorName":"Rajeev Gade"},"settings":{}},{"key":"canvasMedical","htmlDocs":"<hr />\n<p>title: Canvas Medical</p>\n<h2 id=\"descriptioncanvasmedicalisahealthcareplatformthatempowerscaredeliverycompaniestorevolutionizedigitalhealthexperiencesfortheirpatientsandusers\">description: Canvas Medical is a healthcare platform that empowers care delivery companies to revolutionize digital health experiences for their patients and users.</h2>\n<h1 id=\"canvasmedical\">Canvas Medical</h1>\n<p>Canvas Medical is a healthcare platform that empowers care delivery companies to revolutionize digital health experiences for their patients and users. Leveraging certified EHR as a foundation, Canvas Medical offers a comprehensive suite of APIs, enabling customers to swiftly launch innovative patient experiences and cost-effective business models.</p>\n<p>Canvas Medical provides appointment management, patient data creation and updates, task management, questionnaire creation, and much more.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>For the extension to function correctly, you must include the following elements in your settings:</p>\n<p><code>client_id</code> and <code>client_secret</code>: These values are generated on the Canvas Medical platform.\n<code>base_url</code>: This determines the base URL for your FHIR endpoint.\n<code>auth_url</code>: This determines the base URL for your authorization endpoint.</p>\n<h3 id=\"createappointment\">Create appointment</h3>\n<p>Easily schedule appointments with providers using the Canvas API. This action allows you to reserve a meeting with a healthcare provider by submitting <code>appointmentData</code> in JSON format. Upon successful execution, the data points returns the unique <code>appointmentId</code>, serving as the key within the Canvas API object.</p>\n<h3 id=\"createpatient\">Create patient</h3>\n<p>Effortlessly create patients using the Canvas API. This action allows you to generate a new patient record by submitting <code>patientData</code> in JSON format. Upon successful execution, the data points returns the unique <code>patientId</code>, serving as the key within the Canvas API object.</p>\n<h3 id=\"createtask\">Create task</h3>\n<p>Efficiently create tasks associated with a specific patient using the Canvas API. This action allows you to generate a new task linked to a designated patient by submitting <code>taskData</code> in JSON format. Upon successful execution, the data points returns the unique <code>taskId</code>, serving as the key within the Canvas API object.</p>\n<h3 id=\"createquestionnaireresponses\">Create questionnaire responses</h3>\n<p>Create questionnaire responses using the Canvas API to effortlessly record answers within an existing questionnaire. This action requires several parameters:</p>\n<ul>\n<li><code>Questionnaire ID</code>: Reference to the Canvas Questionnaire using the questionnaire id.</li>\n<li><code>Subject ID</code>: Reference to the Canvas Patient using the patient id.</li>\n<li><code>Authored</code>: Timestamp when the Questionnaire response was filled out (If omitted, the current timestamp at data ingestion will be used).</li>\n<li><code>Author ID</code>: Reference to the patient or practitioner filling out the questionnaire. If omitted, it defaults to Canvas Bot.</li>\n<li><code>Item</code>: List of answers to questions in the questionnaire.</li>\n</ul>\n<p>Upon successful execution, the data points returns <code>questionnaireResponseId</code>, which serves as the key within the Canvas API object.</p>\n<h3 id=\"updateappointment\">Update appointment</h3>\n<p>Effortlessly cancel or modify a reserved appointment using the Canvas API. This action allows you to update appointment details by submitting <code>appointmentData</code> in JSON format. Upon successful execution, the data points returns the <code>appointmentId</code>, serving as the key within the Canvas API object.</p>\n<h3 id=\"updatepatient\">Update patient</h3>\n<p>Efficiently update existing patient information within the system using the Canvas API. This action allows you to modify data by submitting <code>patientData</code> in JSON format. Upon successful execution, the data points returns the <code>patientId</code>, which serves as the key within the Canvas API object</p>\n<h3 id=\"updatetask\">Update task</h3>\n<p>Efficiently update existing task information within the system using the Canvas API. This action allows you to modify data by submitting <code>taskData</code> in JSON format. Upon successful execution, the action returns the <code>taskId</code>, which serves as the key within the Canvas API object.</p>\n<h3 id=\"createcoverage\">Create coverage</h3>\n<p>Efficiently create a coverage using the Canvas API. This action requires several parameters:</p>\n<ul>\n<li><code>Order</code>: Specifies the order in which insurance coverages should be utilized when processing claims.</li>\n<li><code>Status</code>: Refers to the statuses represented within the Canvas Medical system.</li>\n<li><code>Type</code>: Pertains to the Insurance Coverage Code Category, such as medical or accident, using values from http://hl7.org/fhir/ValueSet/coverage-type.</li>\n<li><code>Subscriber</code>: Refers to the Canvas Patient using the patient ID, serving as the resource for the coverage's subscriber.</li>\n<li><code>Subscriber ID</code>: Refers to the Canvas Patient using the patient ID.</li>\n<li><code>Beneficiary</code>: Specifies the intended patient for the coverage.</li>\n<li><code>Relationship</code>: Relates to the beneficiary's relationship to the subscriber, as defined in the http://hl7.org/fhir/ValueSet/.</li>\n<li><code>Period start</code>: Indicates when the coverage became active for the patient.</li>\n<li><code>Period end</code>: Indicates when the coverage ceased to be active for the patient.</li>\n<li><code>Payor</code>: Relates to the entity responsible for payment.</li>\n<li><code>Class</code>: Utilized to define the plan, subplan, group, and subgroup.</li>\n</ul>\n<h3 id=\"updatecoverage\">Update coverage</h3>\n<p>Efficiently update existin coverage using the Canvas API. This action requires several parameters:</p>\n<ul>\n<li><code>Id</code>: Reference to the Canvas Coverage using the coverage id.</li>\n<li><code>Order</code>: Specifies the order in which insurance coverages should be utilized when processing claims.</li>\n<li><code>Status</code>: Refers to the statuses represented within the Canvas Medical system.</li>\n<li><code>Type</code>: Pertains to the Insurance Coverage Code Category, such as medical or accident, using values from http://hl7.org/fhir/ValueSet/coverage-type.</li>\n<li><code>Subscriber</code>: Refers to the Canvas Patient using the patient ID, serving as the resource for the coverage's subscriber.</li>\n<li><code>Subscriber ID</code>: Refers to the Canvas Patient using the patient ID.</li>\n<li><code>Beneficiary</code>: Specifies the intended patient for the coverage.</li>\n<li><code>Relationship</code>: Relates to the beneficiary's relationship to the subscriber, as defined in the http://hl7.org/fhir/ValueSet/.</li>\n<li><code>Period start</code>: Indicates when the coverage became active for the patient.</li>\n<li><code>Period end</code>: Indicates when the coverage ceased to be active for the patient.</li>\n<li><code>Payor</code>: Relates to the entity responsible for payment.</li>\n<li><code>Class</code>: Utilized to define the plan, subplan, group, and subgroup.</li>\n</ul>\n<h3 id=\"createclaim\">Create claim</h3>\n<p>Create claim using the Canvas API. This action requires several parameters:</p>\n<ul>\n<li><code>status</code>: Status compliant with Canvas Medical.</li>\n<li><code>type</code>: Type compliant with Canvas Medical.</li>\n<li><code>patientId</code>: Reference to the Canvas Patient using the patient id.</li>\n<li><code>created</code>: The field indicating when this claim resource was created</li>\n<li><code>provider</code>: The field related to determining personnel resources for services in the statement</li>\n<li><code>supportingInfo</code>: Supporting info compliant with Canvas Medical.</li>\n<li><code>diagnosis</code>: The field represents the list will create the Assessments in Canvas for this claim.</li>\n<li><code>insurance</code>: The field represents the list of elements that defines what coverages are to be used when adjudicating the claim.</li>\n<li><code>item</code>: The field represents the list of service charges to be used in the claim.</li>\n</ul>\n<p>Upon successful execution, the data points returns <code>claimId</code>, which serves as the key within the Canvas API object.</p>","changelog":"<h1 id=\"canvasmedicalchangelog\">Canvas Medical changelog</h1>\n<h2 id=\"20230901\">2023-09-01</h2>\n<ul>\n<li>Add new actions: <code>createAppointment</code>, <code>createPatient</code>, <code>createQuestionnaireResponses</code>, <code>createTask</code>, <code>updateAppointment</code>, <code>updatePatient</code>, and <code>updateTask</code> for enhanced functionality.</li>\n</ul>","actions":{"createAppointment":{"key":"createAppointment","title":"Create Appointment","description":"Create an appointment","category":"EHR Integrations","fields":{"appointmentData":{"id":"appointmentData","label":"Appointment data","description":"Appointment data","type":"json","required":true}},"dataPoints":{"appointmentId":{"key":"appointmentId","valueType":"string"}},"previewable":true},"updateAppointment":{"key":"updateAppointment","title":"Update Appointment","description":"Update an appointment","category":"EHR Integrations","fields":{"appointmentData":{"id":"appointmentData","label":"Appointment data","description":"Appointment data","type":"json","required":true}},"dataPoints":{"appointmentId":{"key":"appointmentId","valueType":"string"}},"previewable":true},"createTask":{"key":"createTask","title":"Create Task","description":"Create a task","category":"EHR Integrations","fields":{"taskData":{"id":"taskData","label":"Task data","description":"Task data","type":"json","required":true}},"dataPoints":{"taskId":{"key":"taskId","valueType":"string"}},"previewable":true},"updateTask":{"key":"updateTask","title":"Update Task","description":"Update a task","category":"EHR Integrations","fields":{"taskData":{"id":"taskData","label":"Task data","description":"Task data","type":"json","required":true}},"dataPoints":{"taskId":{"key":"taskId","valueType":"string"}},"previewable":true},"createPatient":{"key":"createPatient","title":"Create Patient","description":"Create a patient","category":"EHR Integrations","fields":{"patientData":{"id":"patientData","label":"Patient data","description":"Patient data","type":"json","required":true}},"dataPoints":{"patientId":{"key":"patientId","valueType":"string"}},"previewable":true},"updatePatient":{"key":"updatePatient","title":"Update Patient","description":"Update a patient","category":"EHR Integrations","fields":{"patientData":{"id":"patientData","label":"Patient data","description":"Patient data","type":"json","required":true}},"dataPoints":{"patientId":{"key":"patientId","valueType":"string"}},"previewable":true},"createQuestionnaireResponses":{"key":"createQuestionnaireResponses","title":"Create a response to a questionnaire","description":"Create a response to a questionnaire","category":"EHR Integrations","fields":{"questionnaireId":{"id":"questionnaireId","label":"QuestionnaireId","description":"Reference to the Canvas Questionnaire using the questionnaire id","type":"string","required":true},"subjectId":{"id":"subjectId","label":"SubjectId","description":"Reference to the Canvas Patient using the patient id","type":"string","required":true},"authored":{"id":"authored","label":"Authored","description":"Timestamp the Questionnaire response was filled out (If omitted the current timestamp at data ingestion will be used)","type":"string","required":false},"authorId":{"id":"authorId","label":"AuthorId","description":"Reference to the patient or practitioner filling out the questionnaire. If omitted it will default to Canvas Bot","type":"string","required":false},"item":{"id":"item","label":"Item","description":"List of answers to questions in the questionnaire","type":"json","required":true}},"dataPoints":{"questionnaireResponseId":{"key":"questionnaireResponseId","valueType":"string"}},"previewable":true},"createClaim":{"key":"createClaim","title":"Create claim","description":"Create a claim for a specific patient.","category":"EHR Integrations","fields":{"status":{"id":"status","label":"Status","description":"Accepts a value representing the status compliant with Canvas Medical.","type":"string","required":true},"type":{"id":"type","label":"Type","description":"Accepts a JSON object representing the type compliant with Canvas Medical.","type":"json","required":true},"patientId":{"id":"patientId","label":"Patient ID","description":"The patient's unique resource ID (e.g. 865058f6654149bd921264d91519af9e).","type":"string","required":true},"created":{"id":"created","label":"Created","description":"The field indicating when this claim resource was created.","type":"date","required":true},"provider":{"id":"provider","label":"Provider","description":"The field related to determining personnel resources for services in the statement accepts a JSON object in accordance with the Canvas Medical format.","type":"json","required":true},"supportingInfo":{"id":"supportingInfo","label":"Supporting Info","description":"Accepts a value representing the supporting info compliant with Canvas Medical.","type":"json","required":false},"diagnosis":{"id":"diagnosis","label":"Diagnosis","description":"The field represents the list will create the Assessments in Canvas for this claim and accepts an array of JSON objects.","type":"json","required":true},"insurance":{"id":"insurance","label":"Insurance","description":"The field represents the list of elements that defines what coverages are to be used when adjudicating the claim and accepts an array of JSON objects.","type":"json","required":true},"item":{"id":"item","label":"Item","description":"The field represents the list of service charges to be used in the claim and accepts an array of JSON objects.","type":"json","required":true}},"dataPoints":{"claimId":{"key":"claimId","valueType":"string"}},"previewable":true},"createCoverage":{"key":"createCoverage","title":"Create coverage","description":"Create a coverage","category":"EHR Integrations","fields":{"order":{"id":"order","label":"Order","description":"A numerical value from 1 to 5, representing the order in which insurance coverages should be used when processing claims.","type":"numeric","required":true},"status":{"id":"status","label":"Status","description":"The status of the coverage.","type":"string","required":true},"type":{"id":"type","label":"Type","description":"The Insurance Coverage Code Category, such as medical or accident, using values from http://hl7.org/fhir/ValueSet/coverage-type.","type":"json","required":false},"subscriber":{"id":"subscriber","label":"Subscriber","description":"The resource for the subscriber of the coverage, formatted as a standard identifier \"Patient/5350cd20de8a470aa570a852859ac87e\".","type":"string","required":true},"subscriberId":{"id":"subscriberId","label":"Subscriber ID","description":"The patient's unique ID.","type":"string","required":false},"beneficiary":{"id":"beneficiary","label":"Beneficiary","description":"The patient the coverage is intended for, formatted as a standard identifier \"Patient/5350cd20de8a470aa570a852859ac87e\".","type":"string","required":true},"relationship":{"id":"relationship","label":"Relationship","description":"The beneficiary's relationship to the subscriber, as defined in http://hl7.org/fhir/ValueSet/subscriber-relationship.","type":"json","required":true},"periodStart":{"id":"periodStart","label":"periodStart","description":"When the coverage became active for the patient, expressed in FHIR Date format (YYYY-MM-DD).","type":"string","required":true},"periodEnd":{"id":"periodEnd","label":"periodEnd","description":"When the coverage was no longer active for the patient, expressed in FHIR Date format (YYYY-MM-DD).","type":"string","required":false},"payor":{"id":"payor","label":"Payor","description":"Details of the payor, as definded in https://docs.canvasmedical.com/reference/coverage-create","type":"json","required":true},"classCoverage":{"id":"classCoverage","label":"Class","description":"Definition of the plan, subplan, group, and subgroup, as definded in https://docs.canvasmedical.com/reference/coverage-create","type":"json","required":false}},"dataPoints":{"coverageId":{"key":"coverageId","valueType":"string"}},"previewable":true},"updateCoverage":{"key":"updateCoverage","title":"Update coverage","description":"Update a coverage","category":"EHR Integrations","fields":{"id":{"id":"id","label":"Coverage ID","description":"The coverage's unique ID.","type":"string","required":true},"order":{"id":"order","label":"Order","description":"A numerical value from 1 to 5, representing the order in which insurance coverages should be used when processing claims.","type":"numeric","required":true},"status":{"id":"status","label":"Status","description":"The status of the coverage.","type":"string","required":true},"type":{"id":"type","label":"Type","description":"The Insurance Coverage Code Category, such as medical or accident, using values from http://hl7.org/fhir/ValueSet/coverage-type.","type":"json","required":false},"subscriber":{"id":"subscriber","label":"Subscriber","description":"The resource for the subscriber of the coverage, formatted as a standard identifier \"Patient/5350cd20de8a470aa570a852859ac87e\".","type":"string","required":true},"subscriberId":{"id":"subscriberId","label":"Subscriber ID","description":"The patient's unique ID.","type":"string","required":false},"beneficiary":{"id":"beneficiary","label":"Beneficiary","description":"The patient the coverage is intended for, formatted as a standard identifier \"Patient/5350cd20de8a470aa570a852859ac87e\".","type":"string","required":true},"relationship":{"id":"relationship","label":"Relationship","description":"The beneficiary's relationship to the subscriber, as defined in http://hl7.org/fhir/ValueSet/subscriber-relationship.","type":"json","required":true},"periodStart":{"id":"periodStart","label":"periodStart","description":"When the coverage became active for the patient, expressed in FHIR Date format (YYYY-MM-DD).","type":"string","required":true},"periodEnd":{"id":"periodEnd","label":"periodEnd","description":"When the coverage was no longer active for the patient, expressed in FHIR Date format (YYYY-MM-DD).","type":"string","required":false},"payor":{"id":"payor","label":"Payor","description":"Details of the payor, as definded in https://docs.canvasmedical.com/reference/coverage-create","type":"json","required":true},"classCoverage":{"id":"classCoverage","label":"Class","description":"Definition of the plan, subplan, group, and subgroup, as definded in https://docs.canvasmedical.com/reference/coverage-create","type":"json","required":false}},"dataPoints":{"coverageId":{"key":"coverageId","valueType":"string"}},"previewable":true}},"webhooks":[],"description":"Canvas Medical allows the collection and manage data through a digital device that contains all of the patient's medical history","icon_url":"https://assets-global.website-files.com/614e28d74fd62995e2f1948a/614e28d74fd6291bbef195a6_256.png","title":"Canvas Medical (BETA)","category":"EHR Integrations","author":{"authorType":"Awell"},"settings":{"base_url":{"key":"base_url","label":"Base URL","obfuscated":false,"description":"The base URL of Canvas Medical API.","required":true},"auth_url":{"key":"auth_url","label":"Authorization URL","obfuscated":false,"description":"The complete URL of OAuth2 authentication endpoint.","required":true},"client_id":{"key":"client_id","label":"Client ID","obfuscated":false,"description":"The client ID for OAuth2 authentication.","required":true},"client_secret":{"key":"client_secret","label":"Client Secret","obfuscated":true,"description":"The client secret for OAuth2 client credentials authentication.","required":true},"audience":{"key":"audience","label":"Audience","obfuscated":false,"description":"The audience for OAuth2 client credentials authentication.","required":false}}},{"key":"cerner","htmlDocs":"<hr />\n<p>title: Cerner</p>\n<h2 id=\"descriptioncerneremrisanelectronicmedicalrecordssystemthathelpshealthcareorganizationsimprovepatientcareandincreaseefficiency\">description: Cerner EMR is an electronic medical records system that helps healthcare organizations improve patient care and increase efficiency.</h2>\n<h1 id=\"cerner\">Cerner</h1>\n<p>Cerner EMR is an electronic medical records system that helps healthcare organizations improve patient care and increase efficiency.</p>\n<h2 id=\"thecernerextension\">The Cerner extension</h2>\n<p>The <strong>Cerner Extension</strong> is designed to support <strong>Read</strong> and <strong>Write</strong> integrations via <a href=\"https://docs.oracle.com/en/industries/health/millennium-platform-apis/fhir-authorization-framework/#requesting-authorization-on-behalf-of-a-system\">SMART Backend Services</a>. These integrations are server-to-server (backend) and do not require direct user interaction—whether from patients or practitioners. The extension connects to <strong>Cerner's FHIR R4 API</strong>.</p>\n<p>In addition to REST interfaces, customers using Cerner usually also have healthcare-specific interfaces, like HL7, enabling tasks such as querying patient demographics (ADR A19) or creating documents (ORU messages). <strong>Awell supports these interfaces as well.</strong></p>\n<h2 id=\"setup\">Setup</h2>\n<p>To set up the Cerner Extension in Awell, you’ll need to configure the following:</p>\n<ul>\n<li><strong>Tenant ID</strong>: the tenant ID associated to the organization you are connecting to (<a href=\"https://docs.oracle.com/en/industries/health/millennium-platform-apis/fhir-app-provisioning/\">more info</a>)</li>\n<li><strong>Client ID</strong>: the client ID of the Cerner app used to authenticate. (<a href=\"https://docs.oracle.com/en/industries/health/millennium-platform-apis/fhir-authorization-framework/#registering-an-application\">more info</a>) </li>\n<li><strong>Client secret</strong>: the client secret of the Cerner app used to authenticate (<a href=\"https://docs.oracle.com/en/industries/health/millennium-platform-apis/fhir-authorization-framework/#registering-a-system-account\">more info</a>)</li>\n</ul>\n<p><strong>Important:</strong> The actions below list what scopes are required to be added to the Cerner app. Without the scopes, the actions will not work as the app will not have the necessary permissions to access the data.</p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"getpatientr4\">Get patient (R4)</h3>\n<p>Retrieve a patient’s details using their FHIR resource ID. This action returns the full FHIR Patient resource.</p>\n<p>Required application scopes: <code>system/Patient.read</code></p>\n<h3 id=\"createpatientr4\">Create patient (R4)</h3>\n<p>Add a new patient to Cerner using demographic information. Required fields include:  </p>\n<ul>\n<li>Assigning Organization ID</li>\n<li>Given name</li>\n<li>Family name</li>\n</ul>\n<p>While optional, including additional demographic information such as email address, data of birth, etc is highly recommended to improve accuracy when matching patients in the future.  </p>\n<p>The action will return the FHIR resource ID of the created patient.</p>\n<p>Required application scopes: <code>system/Patient.write</code></p>\n<h3 id=\"findpatientbymrnr4\">Find patient by MRN (R4)</h3>\n<p>Leverages the <code>Patient.search</code> (R4) operation to find a patient by their MRN. The action will return the FHIR resource ID of the patient.</p>\n<p>Note: the default identifier system used to look up the patient based on MRN is <code>urn:oid:2.16.840.1.113883.6.1000</code>.</p>\n<p>Required application scopes: <code>system/Patient.read</code></p>\n<h3 id=\"getappointmentr4\">Get appointment (R4)</h3>\n<p>Retrieve details of a specific appointment using its FHIR resource ID. The action returns the full FHIR Appointment resource.</p>\n<p>Required application scopes: <code>system/Appointment.read</code></p>\n<h3 id=\"getpatientencountersr4\">Get patient encounters (R4)</h3>\n<p>Retrieve all encounters for a patient using their FHIR resource ID. The action returns all FHIR Encounter resources for the patient.</p>\n<p>Required application scopes: <code>system/Encounter.read</code></p>\n<h3 id=\"createdocumentr4\">Create document (R4)</h3>\n<p>Create a new document reference (clinical note) in Cerner. The action returns the FHIR resource ID of the created document reference.</p>\n<p>Required application scopes: <code>system/DocumentReference.write</code></p>\n<h3 id=\"getencounterr4\">Get encounter (R4)</h3>\n<p>Retrieve details of a specific encounter using its FHIR resource ID. The action returns the full FHIR Encounter resource.</p>\n<p>Required application scopes: <code>system/Encounter.read</code></p>","changelog":"<h1 id=\"cernerchangelog\">Cerner changelog</h1>","actions":{"getPatient":{"key":"getPatient","title":"Get patient","description":"Retrieve patient details from Cerner","category":"EHR Integrations","fields":{"resourceId":{"id":"resourceId","label":"Patient resource ID","description":"The resource ID of the patient","type":"string","required":true}},"previewable":true,"dataPoints":{"patient":{"key":"patient","valueType":"json"}}},"createPatient":{"key":"createPatient","title":"Create patient","description":"Create a patient in Cerner","category":"EHR Integrations","fields":{"assigningOrganizationId":{"id":"assigningOrganizationId","label":"Assigning organization ID","type":"string","description":"The ID of the organization that is creating the patient.","required":true},"ssn":{"id":"ssn","label":"SSN","type":"string","description":"The patient’s Social Security Number.","required":false},"familyName":{"id":"familyName","label":"Family name","type":"string","description":"The patient’s family (last) name.","required":true},"givenName":{"id":"givenName","label":"Given name","type":"string","description":"The patient's given name. May include first and middle names.","required":true},"birthDate":{"id":"birthDate","label":"Birth date","type":"date","required":false},"gender":{"id":"gender","label":"Gender","type":"string","required":false,"options":{"dropdownOptions":[{"value":"male","label":"Male"},{"value":"female","label":"Female"},{"value":"other","label":"Other"},{"value":"unknown","label":"Unknown"}]}},"email":{"id":"email","label":"Email","type":"string","required":false}},"previewable":true,"dataPoints":{"resourceId":{"key":"resourceId","valueType":"string"}}},"findPatientByMRN":{"key":"findPatientByMRN","title":"Find patient by MRN","description":"Find patient by MRN in Cerner","category":"EHR Integrations","fields":{"MRN":{"id":"MRN","label":"Medical Record Number (MRN)","type":"string","description":"","required":true}},"previewable":true,"dataPoints":{"resourceId":{"key":"resourceId","valueType":"string"}}},"getAppointment":{"key":"getAppointment","title":"Get appointment","description":"Retrieve appointment details from Cerner","category":"EHR Integrations","fields":{"resourceId":{"id":"resourceId","label":"Appointment resource ID","description":"The resource ID of the appointment.","type":"string","required":true}},"previewable":true,"dataPoints":{"appointment":{"key":"appointment","valueType":"json"},"patientId":{"key":"patientId","valueType":"string"},"appointmentStatus":{"key":"appointmentStatus","valueType":"string"},"appointmentStartDateTime":{"key":"appointmentStartDateTime","valueType":"date"},"appointmentTypeCode":{"key":"appointmentTypeCode","valueType":"string"}}},"createDocument":{"key":"createDocument","title":"Create document","description":"Create a document in Cerner","category":"EHR Integrations","fields":{"patientResourceId":{"id":"patientResourceId","label":"Patient resource ID","type":"string","description":"The patient’s FHIR resource ID.","required":true},"encounterResourceId":{"id":"encounterResourceId","label":"Encounter resource ID","description":"The FHIR resource ID of the related encounter.","type":"string","required":true},"type":{"id":"type","label":"Document type","type":"string","required":true,"options":{"dropdownOptions":[{"value":"Progress Note","label":"Progress Note"}]}},"note":{"id":"note","label":"Note","type":"text","required":true}},"previewable":true,"dataPoints":{"resourceId":{"key":"resourceId","valueType":"string"}}},"getPatientEncounters":{"key":"getPatientEncounters","title":"Get patient encounters","description":"Retrieve all encounters for a patient","category":"EHR Integrations","fields":{"patientResourceId":{"id":"patientResourceId","label":"Patient resource ID","description":"The resource ID of the patient","type":"string","required":true}},"previewable":true,"dataPoints":{"encounters":{"key":"encounters","valueType":"json"}}},"getEncounter":{"key":"getEncounter","title":"Get encounter","description":"Retrieve encounter details from Cerner","category":"EHR Integrations","fields":{"resourceId":{"id":"resourceId","label":"Encounter resource ID","description":"The resource ID of the encounter","type":"string","required":true}},"previewable":true,"dataPoints":{"encounter":{"key":"encounter","valueType":"json"}}}},"webhooks":[],"description":"Cerner EMR is an electronic medical records system that helps healthcare organizations improve patient care and increase efficiency.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1736327719/Awell%20Extensions/CERN-4c75d8aa.png","title":"Cerner","category":"EHR Integrations","author":{"authorType":"Awell"},"settings":{"tenantId":{"key":"tenantId","label":"Tenant ID","required":true,"obfuscated":false,"description":"The tenant ID associated to the organization you are connecting to."},"clientId":{"key":"clientId","label":"Client ID","required":true,"obfuscated":false,"description":"The client ID of the Cerner app used to authenticate."},"clientSecret":{"key":"clientSecret","label":"Client Secret","required":true,"obfuscated":true,"description":"The client secret of the Cerner app used to authenticate."}}},{"key":"cloudinary","htmlDocs":"<hr />\n<p>title: Cloudinary</p>\n<h2 id=\"descriptioncloudinaryisacloudbasedimageandvideomanagementplatformthatprovidesacomprehensivesetoftoolsforstoringmanaginganddeliveringdigitalmediaassets\">description: Cloudinary is a cloud-based image and video management platform that provides a comprehensive set of tools for storing, managing, and delivering digital media assets. </h2>\n<h1 id=\"cloudinary\">Cloudinary</h1>\n<p>Cloudinary is a cloud-based image and video management platform that provides a comprehensive set of tools for storing, managing, and delivering digital media assets. It enables users to upload, manipulate, optimize, and deliver media files to any device or website quickly and easily.</p>\n<p>The platform offers features such as image and video transformation, automatic image optimization, and responsive image delivery. Cloudinary also provides tools for organizing media assets, including tags, folders, and metadata.</p>\n<h2 id=\"setup\">Set up</h2>\n<p>To set up this extension and allow image upload you will need to:</p>\n<ol>\n<li>Have a Cloudinary account and know your cloud name</li>\n<li>Created an upload preset that allows for <strong>unsigned uploads</strong></li>\n</ol>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"uploadsinglefile\">Upload single file</h3>\n<p>Allows a user to upload a single file using Awell Hosted Pages (all file types allowed). The URL of the uploaded file is returned as a data point.</p>\n<h3 id=\"uploadfiles\">Upload files</h3>\n<p>This action allows a given stakeholder to upload one or many files using Awell Hosted Pages (all file types allowed). This action currently doesn't return the URLs of the uploaded files. If you need this functionality, please use the \"Upload single file\" action for now.</p>","changelog":"<h1 id=\"cloudinarychangelog\">Cloudinary changelog</h1>\n<h2 id=\"october2023\">October 2023</h2>\n<ul>\n<li>Action added: Upload a single file</li>\n</ul>","actions":{"uploadFiles":{"key":"uploadFiles","title":"Upload files","description":"Allow a stakeholder to upload one or multiple files.","category":"Content & Files","fields":{"uploadPreset":{"id":"uploadPreset","label":"Upload preset","description":"The name of an upload preset defined for your product environment. If left empty, the preset defined in the extension settings will be used.","type":"string","required":false},"folder":{"id":"folder","label":"Folder","description":"Upload files to the specified folder. If left empty, the folder defined in the extension settings will be used.","type":"string","required":false},"tags":{"id":"tags","label":"Tags","description":"A comma-separated string of tags to assign to the uploaded assets.","type":"string","required":false}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}},"previewable":false},"uploadSingleFile":{"key":"uploadSingleFile","title":"Upload single file","description":"Allow a stakeholder to upload one file","category":"Content & Files","fields":{"uploadPreset":{"id":"uploadPreset","label":"Upload preset","description":"The name of an upload preset defined for your product environment. If left empty, the preset defined in the extension settings will be used.","type":"string","required":false},"folder":{"id":"folder","label":"Folder","description":"Upload the file to the specified folder. If left empty, the folder defined in the extension settings will be used.","type":"string","required":false},"tags":{"id":"tags","label":"Tags","description":"A comma-separated string of tags to assign to the uploaded asset","type":"string","required":false}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}},"dataPoints":{"fileUrl":{"key":"fileUrl","valueType":"string"}},"previewable":false}},"webhooks":[],"description":"Cloudinary is a cloud-based image and video management platform for storing, managing, and delivering digital media assets.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1684740031/Awell%20Extensions/cloudinary_web_favicon.png","title":"Cloudinary","category":"Content & Files","author":{"authorType":"Awell"},"settings":{"cloudName":{"key":"cloudName","label":"Cloud name","description":"Your Cloudinary product environment cloud name. This can be found in the Cloudinary console.","obfuscated":false,"required":true},"uploadPreset":{"key":"uploadPreset","label":"Upload preset","description":"The name of an upload preset defined for your product environment. You can always overwrite the preset on the action level.","obfuscated":false,"required":true},"folder":{"key":"folder","label":"Folder","description":"Upload files to the specified folder. You can always overwrite the folder on the action level.","obfuscated":false,"required":false}}},{"key":"cmDotCom","htmlDocs":"<hr />\n<p>title: cm.com</p>\n<h2 id=\"descriptioncmcomisaglobalcommunicationanddigitalservicesproviderbasedinthenetherlands\">description: CM.com is a global communication and digital services provider based in the Netherlands.</h2>\n<h1 id=\"cmcom\">CM.com</h1>\n<p>CM.com is a global communication and digital services provider based in the Netherlands. It offers a wide range of services and solutions in the areas of messaging, payments, voice, and customer experience.</p>\n<p>CM.com enables businesses to communicate with their customers through various channels such as SMS, email, push notifications, social media messaging, and more.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will need:</p>\n<ol>\n<li>A <strong>Product Token</strong> - visit https://gateway.cmtelecom.com/ to retrieve your product token.</li>\n<li>A <strong>From/sender name</strong> - the maximum length is 11 alphanumerical characters or 16 digit</li>\n</ol>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"sendsms\">Send SMS</h3>\n<p>Send an SMS with CM.com to a recipient of your liking.</p>","changelog":"<h1 id=\"cmcomchangelog\">CM.com changelog</h1>","actions":{"sendSms":{"key":"sendSms","title":"Send SMS","description":"Send a text message to a recipient of your choice.","category":"Communication","fields":{"fromName":{"label":"From name","id":"fromName","type":"string","required":false,"description":"This is the sender's name. The maximum length is 11 alphanumerical characters or 16 digits. When left blank, the \"From name\" from the extension settings will be used."},"recipient":{"id":"recipient","label":"\"To\" phone number","type":"string","stringType":"phone","description":"The phone number you would like to send the text message to.","required":true},"message":{"id":"message","label":"Message","description":"The message you would like to send.","type":"text","required":true}},"previewable":true}},"webhooks":[],"description":"cm.com is a communications Platform for Messaging & Voice","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1687860653/Awell%20Extensions/cm-f4ffa018.png","title":"cm.com","category":"Communication","author":{"authorType":"Awell"},"settings":{"productToken":{"label":"Product Token","key":"productToken","obfuscated":true,"required":true,"description":"This is the product token for authentication. Visit https://gateway.cmtelecom.com/ to retrieve your product token."},"fromName":{"label":"From/sender name","key":"fromName","obfuscated":false,"required":false,"description":"This is the sender's name. The maximum length is 11 alphanumerical characters or 16 digits"}}},{"key":"collectData","htmlDocs":"<hr />\n<p>title: Advanced data collection</p>\n<h2 id=\"descriptioncollectdatafromyourusersusingavarietyofinputtypesanddatasources\">description: Collect data from your users using a variety of input types and data sources</h2>\n<p>This extension allows you to collect data from your users using a variety of more advanced input types and data sources.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, no settings are required.</p>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"dynamicchoiceselector\">Dynamic choice selector</h3>\n<p>Standard select questions in Awell forms have a discrete set of choices to select from that are defined at the time that the form is created. If the list of choices to present to your responders isn't known at the time the form is being built, or changes often, this action allows you to load choices dynamically from a remote data source.</p>\n<p>Dynamically-loaded choices must minimally adhere to the following format in a list form (i.e. an array):</p>\n<pre><code class=\"json language-json\">[\n  {\n    \"id\": \"unique-id-1\",\n    \"label\": \"Choice label 1\",\n    \"value\": \"Choice value 1\"\n  },\n  {\n    \"id\": \"unique-id-2\",\n    \"label\": \"Choice label 2\",\n    \"value\": \"Choice value 2\"\n  }\n]\n</code></pre>\n<p>The <code>id</code>, <code>label</code>, and <code>value</code> fields are required. However, additional fields can be added to the object. Besides the <code>label</code> and <code>value</code>, which are available as distinct data points, the additional data of the selected choice will also be returned as a data point.</p>\n<p>Example:</p>\n<pre><code class=\"json language-json\">[\n  {\n    \"id\": \"unique-id-1\",\n    \"label\": \"Choice label 1\",\n    \"value\": \"Choice value 1\",\n    \"additionalData\": \"Additional data\",\n    \"nestedData\": {\n      \"nested\": \"value\"\n    }\n  }\n]\n</code></pre>\n<p>Additionally, you can specify a free text search field (<code>Options - Search query param</code> field) to allow users to search through the choices. This is optional but highly recommended. If not specified, the choices will be fetched on question load and presented in a static list that cannot be filtered.</p>\n<p>As an example, using the endpoint <code>https://example.com/choices</code> with a query parameter <code>search</code> (e.g. <code>https://example.com/choices?search=QUERY</code> where <code>QUERY</code> is whatever the user typed into the input), then the API is expected to return the choices based on that match the search term.</p>\n<p>We recommend that your search logic returns an _alphabetically-sorted_ list of all options where the _lowercase_ label names _contain_ the _lowercase_ search term.</p>\n<pre><code class=\"js language-js\">// Example search logic\nconst searchTerm = req.query.search\nconst results = []\n\noptions.forEach((option) =&gt; {\n  if (option.label.toLowerCase().includes(searchTerm.toLowerCase())) {\n    results.push({\n      label: option.label,\n      value: option.value,\n      id: option.id,\n    })\n  }\n})\n\nconst sortedResults = results.sort((a, b) =&gt; a.label.localeCompare(b.label))\nres.json(results)\n</code></pre>\n<h3 id=\"collectmedication\">Collect medication</h3>\n<p>This action enables patients to list their medications. They can add multiple medications, providing the name, dosage, and any specific instructions for each one.</p>","changelog":"<h1 id=\"collectdatachangelog\">Collect Data changelog</h1>","actions":{"collectMedication":{"key":"collectMedication","title":"Collect medication","description":"Collect medication from the user","category":"Forms","fields":{"label":{"id":"label","label":"Label","type":"string","required":false,"description":"A label or description that will be shown above the question"}},"dataPoints":{"medicationData":{"key":"medicationData","valueType":"json"},"medicationDataString":{"key":"medicationDataString","valueType":"string"},"prettyMedicationData":{"key":"prettyMedicationData","valueType":"string"}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}},"previewable":false},"remoteSingleSelect":{"key":"remoteSingleSelect","title":"Dynamic choice selector","description":"The dynamic choice selector allow you to set up a select question where the available choices are dynamically populated through an API lookup","category":"Forms","fields":{"label":{"id":"label","label":"Select - Label","description":"Enter the label text that will be displayed before the selector.","type":"string","required":true},"mandatory":{"id":"mandatory","label":"Select - Response required?","description":"The user must select an option before continuing.","type":"boolean","required":true},"url":{"id":"url","label":"Options - Endpoint URL","description":"Enter the URL (starting with `https://`) where the options to display can be fetched. The endpoint must return an array of objects with the following properties: `id`, `label` and `value`.","type":"string","required":true},"headers":{"id":"headers","label":"Options - Headers","description":"Enter the headers to send to the options source URL. The headers must be in JSON format.","type":"json","required":false},"queryParam":{"id":"queryParam","label":"Options - Search query param","description":"Enter the key of the free text search query param if the endpoint supports this e.g. `search` for `https://example.com/options?search=foo`.","type":"string","required":false}},"dataPoints":{"value":{"key":"value","valueType":"string"},"label":{"key":"label","valueType":"string"},"selectedOption":{"key":"selectedOption","valueType":"json"}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}},"previewable":false},"arrayTest":{"key":"arrayTest","title":"Array fields test","description":"Just to show string and numeric array fields","category":"Demo","fields":{"stringArray":{"id":"stringArray","label":"String Array","description":"Select a data point or enter comma separated strings.","type":"string_array","required":true,"options":{"dropdownOptions":[{"value":"one","label":"One"},{"value":"two","label":"Two"},{"value":"three","label":"Three"}]}},"numericArray":{"id":"numericArray","label":"Numeric Array","description":"Select a data point or enter comma separated numbers.","type":"numeric_array","required":true,"options":{"dropdownOptions":[{"label":"One","value":1},{"label":"Two","value":2},{"label":"Three","value":3}]}},"anotherStringArray":{"id":"anotherStringArray","label":"String Array","description":"Select a data point or enter comma separated strings.","type":"string_array","required":true,"options":{"dropdownOptions":[{"label":"Option 1","value":"option1"},{"label":"Option 2","value":"option2"}]}},"anotherNumericArray":{"id":"anotherNumericArray","label":"Numeric Array","description":"Select a data point or enter comma separated numbers.","type":"numeric_array","required":true,"options":{"dropdownOptions":[{"label":"Option 1","value":50},{"label":"Option 2","value":51}]}}},"dataPoints":{"allStrings":{"key":"allStrings","valueType":"strings_array"},"allNumbers":{"key":"allNumbers","valueType":"numbers_array"}},"previewable":true}},"webhooks":[],"description":"This extension allows you to collect data from your users using a variety of advanced input types and data sources.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1678870116/Awell%20Extensions/Awell_Logo.png","title":"Advanced data collection","category":"Forms","author":{"authorType":"Awell"},"settings":{}},{"key":"customerIo","htmlDocs":"<hr />\n<p>title: Customer.io</p>\n<h2 id=\"descriptioncustomerioisacustomerengagementplatformdesignedtocreatepersonalizedcustomerjourneysthatengageconvertandscale\">description: Customer.io is a customer engagement platform designed to create personalized customer journeys that engage, convert, and scale.</h2>\n<h2 id=\"customerio\">Customer.io</h2>\n<p>Customer.io is a customer engagement platform designed to create personalized customer journeys that engage, convert, and scale.</p>\n<h2 id=\"settingsandsetup\">Settings and setup</h2>\n<p>To start using the Customer.io extension, you need to create an account and get your API key and site ID.</p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"trackpersonevent\">Track person event</h3>\n<p>Tracks an event for a person in Customer.io. You can identify a person using <code>email</code>, <code>cio_id</code> or <code>id</code>, give your event a name and optional attributes.</p>\n<p>By default, Awell adds the following attributes to the event:</p>\n<ul>\n<li><code>_awell_careflow_id</code>: The ID of the careflow.</li>\n<li><code>_awell_careflow_definition_id</code>: The ID of the careflow definition.</li>\n<li><code>_awell_patient_id</code>: The ID of the patient.</li>\n<li><code>_awell_activity_id</code>: The ID of the activity.</li>\n<li><code>_awell_identifier_{system_namespace}</code>: For every identifier the patient has in Awell, an attribute is added with the system namespace as the key and the identifier value as the value.</li>\n</ul>","changelog":"<h1 id=\"customeriochangelog\">Customer.io changelog</h1>","actions":{"trackPersonEvent":{"key":"trackPersonEvent","title":"Track person event","description":"Track a person event in Customer.io","category":"Customer Support","fields":{"personIdentifierType":{"id":"personIdentifierType","label":"Person identifier type","description":"The identifier type used to identify the person. Defaults to email.","type":"string","required":true,"options":{"dropdownOptions":[{"label":"id","value":"id"},{"label":"email","value":"email"},{"label":"cio_id","value":"cio_id"}]}},"identifierValue":{"id":"identifierValue","label":"Identifier value","description":"The value of the identifier used to identify the person.","type":"string","required":true},"eventName":{"id":"eventName","label":"Event name","description":"The name of the event. This is how you'll find your event in Customer.io or select it when using events as campaign triggers.","type":"string","required":true},"attributes":{"id":"attributes","label":"Attributes","description":"Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.","type":"json","required":false}},"previewable":false,"dataPoints":{}}},"webhooks":[],"description":"Customer.io is a customer engagement platform designed to create personalized customer journeys that engage, convert, and scale.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1746447967/Awell%20Extensions/favicon.svg","title":"Customer.io","category":"Customer Support","author":{"authorType":"Awell"},"settings":{"siteId":{"key":"siteId","label":"Site ID","description":"This ID references the workspace you are working in.","obfuscated":false,"required":true},"apiKey":{"key":"apiKey","label":"API Key","description":"The API key needed to authenticate requests to the Customer.io API.","obfuscated":true,"required":true}}},{"key":"dateHelpers","htmlDocs":"<hr />\n<p>title: Date helpers</p>\n<h2 id=\"descriptionasetofutilityactionstohelpwithcommonandusefuldateandtimeoperations\">description: A set of utility actions to help with common and useful date and time operations.</h2>\n<h1 id=\"datehelpers\">Date helpers</h1>\n<p>A set of utility actions to help with common and useful date and time operations.</p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"getnextworkday\">Get next workday</h3>\n<p>Returns the next workday (Monday to Friday) based on a reference date.</p>\n<p>If the reference date is a weekday and \"Include reference date\" is enabled, the reference date is returned. If it's a weekend or \"Include reference date\" is disabled, the next weekday is returned instead.</p>\n<p><strong>Examples:</strong></p>\n<ul>\n<li>Reference date: Thursday, April 17<ul>\n<li>Include reference date enabled → returns Thursday, April 17</li>\n<li>Include reference date disabled → returns Friday, April 18</li></ul></li>\n<li>Reference date: Sunday, April 20<ul>\n<li>Include reference date enabled → returns Monday, April 21</li>\n<li>Include reference date disabled → returns Monday, April 21</li></ul></li>\n</ul>\n<p>✅ Include reference date enabled or disabled → returns Monday, April 21</p>\n<p>This action does not account for holidays.</p>","changelog":"<h1 id=\"datehelopers\">Date helopers</h1>","actions":{"getNextWorkday":{"key":"getNextWorkday","title":"Get Next Workday","description":"Get the next US Federal workday (Defaults to America/Chicago time zone)","category":"Workflow","fields":{"referenceDate":{"id":"referenceDate","label":"Reference date","description":"Set the reference date to calculate the next workday from. If not specified, the current date (today) will be used.","type":"date","required":false},"includeReferenceDate":{"id":"includeReferenceDate","label":"Include reference date","description":"If this option is enabled and the reference date is a work day, that date will be returned. If it is disabled, the next work day after the reference date will be returned.","type":"boolean","required":false},"timezone":{"id":"timezone","label":"Timezone","description":"The IANA timezone identifier to use for the next workday calculation (e.g., \"America/New_York\", \"Europe/London\", \"America/Chicago\", \"UTC\"). If not specified, America/Chicago will be used.","type":"string","required":false}},"dataPoints":{"nextWorkday":{"key":"nextWorkday","valueType":"date"},"referenceDateIsWeekday":{"key":"referenceDateIsWeekday","valueType":"boolean"}},"previewable":true},"checkWorkingHours":{"key":"checkWorkingHours","title":"Check Working Hours","description":"Check if the current time is within working hours and calculate minutes to next working hours as well as the datetime of the next working hours if not","category":"Workflow","fields":{"workingHoursStart":{"id":"workingHoursStart","label":"Working hours start","description":"The start time of working hours in HH:MM format (e.g., \"09:00\"). Uses 24-hour format.","type":"string","required":true},"workingHoursEnd":{"id":"workingHoursEnd","label":"Working hours end","description":"The end time of working hours in HH:MM format (e.g., \"17:00\"). Uses 24-hour format.","type":"string","required":true},"timezone":{"id":"timezone","label":"Timezone","description":"The IANA timezone identifier to use for the working hours check (e.g., \"America/New_York\", \"Europe/London\", \"Asia/Tokyo\", \"UTC\"). If not specified, UTC will be used.","type":"string","required":false}},"dataPoints":{"isWithinWorkingHours":{"key":"isWithinWorkingHours","valueType":"boolean"},"minutesToNextWorkingHours":{"key":"minutesToNextWorkingHours","valueType":"number"},"nextWorkingHoursDatetime":{"key":"nextWorkingHoursDatetime","valueType":"date"}},"previewable":true},"getNextDateOccurrence":{"key":"getNextDateOccurrence","title":"Get next date occurrence","description":"Get the next occurrence of a given date.","category":"Workflow","fields":{"referenceDate":{"id":"referenceDate","label":"Reference date","description":"The date for which to calculate the next occurrence. If the year in the provided date is in the past, the next occurrence is computed in the upcoming year. If omitted, today’s date is used.","type":"date","required":false}},"dataPoints":{"nextDateOccurrence":{"key":"nextDateOccurrence","valueType":"date"}},"previewable":true}},"webhooks":[],"description":"A set of utility actions to help with common and useful date and time operations.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1744914452/Awell%20Extensions/date_helpers.png","title":"Date Helpers","category":"Workflow","author":{"authorType":"Awell"},"settings":{}},{"key":"dockHealth","htmlDocs":"<hr />\n<p>title: Dock Health</p>\n<h2 id=\"descriptionhipaacomplianttaskmanagementandworkflowautomationforhealthcareassigntrackautomateandcompleteadministrativetodolists\">description: HIPAA-compliant task management and workflow automation for healthcare. Assign, track, automate, and complete administrative to-do lists.</h2>\n<h2 id=\"dockhealth\">Dock Health</h2>\n<p>HIPAA-compliant task management and workflow automation for healthcare. Assign, track, automate, and complete administrative to-do lists.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>For the extension to function correctly, you must configure the following settings. You can read more about these settings <a href=\"https://github.com/DockHealth/dockhealth-api\">here</a>.</p>\n<ul>\n<li>Environment (production or development)</li>\n<li>Client ID</li>\n<li>Client secret</li>\n<li>API key</li>\n<li>Organiation identifier</li>\n<li>User identifier</li>\n</ul>","changelog":"<h1 id=\"dockhealthchangelog\">Dock Health changelog</h1>","actions":{"getPatient":{"key":"getPatient","title":"Get patient","description":"Retrieve patient details from Dock","category":"Workflow","fields":{"dockPatientId":{"id":"dockPatientId","label":"Dock patient ID","description":"Identifier of the patient in Dock Health","type":"string","required":true}},"previewable":true,"dataPoints":{"firstName":{"key":"firstName","valueType":"string"},"lastName":{"key":"lastName","valueType":"string"}}},"createTask":{"key":"createTask","title":"Create task","description":"Create a Task in Dock Health","category":"Workflow","fields":{"description":{"id":"description","label":"Description","description":"Description of the task","type":"string","required":true},"taskListId":{"id":"taskListId","label":"Task list ID","description":"The task list identifier.","type":"string","required":true},"patientId":{"id":"patientId","label":"Patient ID","description":"The patient the task is associated with","type":"string","required":false},"taskGroupId":{"id":"taskGroupId","label":"Task group ID","description":"The group to assign the task to","type":"string","required":false}},"previewable":true,"dataPoints":{"taskId":{"key":"taskId","valueType":"string"}}}},"webhooks":[],"description":"HIPAA-compliant task management and workflow automation for healthcare. Assign, track, automate, and complete administrative to-do lists.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1714717332/Awell%20Extensions/images.png","title":"Dock Health","category":"Workflow","author":{"authorType":"Awell"},"settings":{"environment":{"key":"environment","label":"Environment","obfuscated":false,"required":false,"description":"Dock Health supports two environments. Use the \"DEVELOPMENT\" environment to test your code and the \"PRODUCTION\" environment for your live application"},"clientId":{"key":"clientId","label":"Client ID","obfuscated":false,"required":true,"description":"Used to perform the Client Credential grant to obtain an access token"},"clientSecret":{"key":"clientSecret","label":"Client secret","obfuscated":true,"required":true,"description":"Used to perform the Client Credential grant to obtain an access token"},"apiKey":{"key":"apiKey","label":"API key","obfuscated":true,"required":true,"description":"The API key you received from Dock Health."},"organizationId":{"key":"organizationId","label":"Organization ID","obfuscated":false,"required":true,"description":"Identifier of the organization making the request."},"userId":{"key":"userId","label":"User ID","obfuscated":false,"required":true,"description":"Identifier of the user on whose behalf the request is made."}}},{"key":"docuSign","htmlDocs":"<hr />\n<p>title: DocuSign</p>\n<h2 id=\"descriptionmakeyourbusinessfastersimplerandmorecostefficientwithelectronicagreementsagreewithconfidencewithintuitivesigningexperiencesacrossvirtuallyanydevice\">description: Make your business faster, simpler and more cost-efficient with electronic agreements. Agree with confidence, with intuitive signing experiences across virtually any device.</h2>\n<h1 id=\"docusign\">DocuSign</h1>\n<p>Make your business faster, simpler and more cost-efficient with electronic agreements. Agree with confidence, with intuitive signing experiences across virtually any device.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will need to provide the following settings:</p>\n<ol>\n<li><strong>Integration key (client ID)</strong> - An integration key identifies your integration and links to its configuration values. This can be obtained in your developer account from the <strong>Apps and Keys</strong> page</li>\n<li><strong>API Account ID</strong> - A GUID value that identifies your account. This can be obtained in your developer account from the <strong>Apps and Keys</strong> page</li>\n<li><strong>Impersonated User ID (UserID)</strong> - This is a GUID identifying the DocuSign user that you will be impersonating with the access token. Your own User ID can be found at the top of the <strong>Apps and Keys</strong> page.</li>\n<li><strong>RSA private key (in Base64 format)</strong> - This is for the integration key you obtained above and can also be created on the <strong>Apps and Keys</strong> page (DocuSign also allows uploading your own keys). You only need the private key, and it can only be copied once. Make sure to retain it for your records. Provide it in Base64 format - if you copy the key as is, it will not be valid as newlines and formatting won't be persisted.</li>\n<li><strong>Base API URL</strong> - Base API URL for API calls matching your environment on DocuSign. Defaults to: https://demo.docusign.net. Can be obtained from <strong>Account Base URI</strong> section of the <strong>Apps and Keys</strong> page or the <code>base_uri</code> property in the response of a call to the <code>/oauth/userinfo</code>.</li>\n<li><code>DEV</code> environment: https://demo.docusign.net (default)</li>\n<li><code>PRODUCTION</code> environment: <strong>https://<code>{server}</code>.docusign.net</strong>, where <code>{server}</code> is the data center location of your production account (for example, <strong>CA</strong>, <strong>NA2</strong>, or <strong>EU</strong>)</li>\n<li><strong>Return URL template</strong> - Return URL for your application to which DocuSign will redirect the user after signing the document. Set when you self host your application. You can use {sessionId}, {pathwayId}, {activityId} and {stakeholderId} variables to construct the URL, where variables will be replaced with actual values. Defaults to: \"https://goto.development.awell.health/?sessionId={sessionId}\". Remember that this URL MUST match the one you registered for your app in DocuSign settings. <a href=\"https://developers.docusign.com/platform/configure-app/#redirect-uri\">See docs</a> for more details.</li>\n</ol>\n<p>Also, before working with <strong>DocuSign</strong> you should receive consent of the user to impersonate them with the API calls (even for your own account). Check the details on how to do that <a href=\"https://developers.docusign.com/platform/auth/consent/obtaining-individual-consent/\">on DocuSign docs</a>. It's a ONE TIME operation and is required for API calls to work for specific client-scope-uri combination. Required params explained below:</p>\n<ul>\n<li><code>YOUR_REQUESTED_SCOPES</code>: This extension uses JWT Grant, so in place of <code>YOUR_REQUESTED_SCOPES</code> you MUST put at least <code>signature%20impersonation</code>.</li>\n<li>sample consent URL: https://account-d.docusign.com/oauth/auth?response_type=code&amp;scope=signature%20impersonation%20click.manage%20click.send&amp;client_id=XYZ-123&amp;redirect_uri=https://test.com</li>\n</ul>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"embeddedsigning\">Embedded signing</h3>\n<p>Embedded Signing gives users the ability to sign documents directly from Awell Hosted Pages using DocuSign's embedded signing feature. First an embedded signature request with a template is created and then a signing URL is generated for the signature request. Via the signing URL, we can let the user sign the request from within Awell.</p>\n<p>Embedded signing behaves as a blocking action where the action is only completed when the signature request is effectively signed.</p>\n<p><strong>In order to add embedded signing, you need to add 2 actions to you care flow:</strong></p>\n<ol>\n<li>First, add the \"Create embedded signature request with template\" action. This action will create an embedded signature request based on a template and return a <strong>sign URL</strong>.</li>\n<li>Second, add the \"Embedded signing\" action. In this action you will have to configure the <strong>sign URL</strong> you got from the first action.</li>\n</ol>\n<p><strong>Please note that the signing URL generated in the first step is only valid for 5 minutes and is one-time only.</strong> This means that from as soon as the first action is activated, the user has 5 minutes to complete the signing request. Loading a session by the user also means that sign url is loaded and refreshing the page will cause the link to expire. When the sign URL has expired, the document cannot be signed anymore and and the process would have to be repeated.</p>","changelog":"<h1 id=\"docusignchangelog\">DocuSign changelog</h1>","actions":{"createEmbeddedSignatureRequestWithTemplate":{"key":"createEmbeddedSignatureRequestWithTemplate","title":"Create embedded signature request with template","description":"Let a stakeholder sign a request within Awell based off a template. The care flow will not progress until the request is signed.","category":"Document Management","fields":{"signerRole":{"id":"signerRole","label":"Signer role","description":"Must match an existing role in chosen template. It's case-sensitive.","type":"string","required":true},"signerName":{"id":"signerName","label":"Signer name","description":"The name of the signer.","type":"string","required":true},"signerEmailAddress":{"id":"signerEmailAddress","label":"Signer email address","description":"The email address of the signer.","type":"string","required":true},"templateId":{"id":"templateId","label":"Template ID","description":"Use the template id to create a SignatureRequest from a template.","type":"string","required":true},"subject":{"id":"subject","label":"Subject","description":"The subject in the email that will be sent to the signer.","type":"string","required":false},"message":{"id":"message","label":"Message","description":"The custom message in the email that will be sent to the signer.","type":"string","required":false}},"dataPoints":{"envelopeId":{"key":"envelopeId","valueType":"string"},"signUrl":{"key":"signUrl","valueType":"string"}},"previewable":false},"embeddedSigning":{"key":"embeddedSigning","title":"Embedded signing","description":"Let a stakeholder sign an embedded signature request with Awell Hosted Pages.","category":"Document Management","fields":{"signUrl":{"id":"signUrl","label":"Sign URL","description":"Enter the sign URL generated via the \"Create embedded signature request with template\" action","type":"string","required":true}},"dataPoints":{"signed":{"key":"signed","valueType":"boolean"}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}},"previewable":false},"createSequentialEmbeddedSignatureRequest":{"key":"createSequentialEmbeddedSignatureRequest","title":"Create sequential embedded signature request","description":"Create an embedded signature request with sequential signing. Adds both Recipient 1 (routing order 1) and Recipient 2 (routing order 2) to the envelope, but only generates the Recipient 1 sign URL. Use \"Generate sign URL for existing envelope\" action after Recipient 1 signs to get the Recipient 2 URL.","category":"Document Management","fields":{"templateId":{"id":"templateId","label":"Template ID","description":"Use the template id to create a SignatureRequest from a template.","type":"string","required":true},"subject":{"id":"subject","label":"Subject","description":"The subject in the email that will be sent to the signers.","type":"string","required":false},"message":{"id":"message","label":"Message","description":"The custom message in the email that will be sent to the signers.","type":"string","required":false},"patientSignerRole":{"id":"patientSignerRole","label":"Recipient 1 signer role","description":"Must match an existing role in chosen template. It's case-sensitive. Recipient 1 will sign first.","type":"string","required":true},"patientSignerName":{"id":"patientSignerName","label":"Recipient 1 signer name","description":"The name of the first signer.","type":"string","required":true},"patientSignerEmail":{"id":"patientSignerEmail","label":"Recipient 1 signer email","description":"The email address of the first signer.","type":"string","required":true},"providerSignerRole":{"id":"providerSignerRole","label":"Recipient 2 signer role","description":"Must match an existing role in chosen template. It's case-sensitive. Recipient 2 will sign second, after Recipient 1.","type":"string","required":true},"providerSignerName":{"id":"providerSignerName","label":"Recipient 2 signer name","description":"The name of the second signer.","type":"string","required":true},"providerSignerEmail":{"id":"providerSignerEmail","label":"Recipient 2 signer email","description":"The email address of the second signer.","type":"string","required":true},"providerClientUserId":{"id":"providerClientUserId","label":"Recipient 2 client user ID","description":"Unique identifier for the second signer used for embedded signing. This should match the stakeholder ID in your care flow.","type":"string","required":true}},"dataPoints":{"envelopeId":{"key":"envelopeId","valueType":"string"},"recipient1SignUrl":{"key":"recipient1SignUrl","valueType":"string"}},"previewable":false},"generateSignUrlForExistingEnvelope":{"key":"generateSignUrlForExistingEnvelope","title":"Generate sign URL for existing envelope","description":"Generate a signing URL for a recipient that already exists in a DocuSign envelope. Use this after the previous signer completes in a sequential signing workflow.","category":"Document Management","fields":{"envelopeId":{"id":"envelopeId","label":"Envelope ID","description":"The ID of the existing DocuSign envelope. This is returned from the \"Create sequential embedded signature request\" action.","type":"string","required":true},"signerName":{"id":"signerName","label":"Signer name","description":"The name of the person who will sign the document. Must match the name of a recipient already in the envelope.","type":"string","required":true},"signerEmail":{"id":"signerEmail","label":"Signer email","description":"The email address of the person who will sign the document. Must match the email of a recipient already in the envelope.","type":"string","required":true},"clientUserId":{"id":"clientUserId","label":"Client user ID","description":"Unique identifier for the signer used for embedded signing. Must match the client user ID of a recipient already in the envelope.","type":"string","required":true}},"dataPoints":{"signUrl":{"key":"signUrl","valueType":"string"}},"previewable":false}},"webhooks":[],"description":"DocuSign makes your business faster, simpler and more cost-efficient with electronic agreements. Agree with confidence, with intuitive signing experiences across virtually any device.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1690539849/Awell%20Extensions/6345a42c2a73234ee04669dd_sig-icon.svg","title":"DocuSign","category":"Document Management","author":{"authorType":"Awell"},"settings":{"integrationKey":{"label":"Integration key (client ID)","key":"integrationKey","obfuscated":true,"required":true,"description":"An integration key identifies your integration and links to its configuration values. This can be obtained in your developer account from the Apps and Keys page"},"accountId":{"label":"API Account ID","key":"accountId","obfuscated":false,"required":true,"description":"A GUID value that identifies your account. This can be obtained in your developer account from the Apps and Keys page"},"userId":{"label":"Impersonated User ID (UserID)","key":"userId","obfuscated":false,"required":true,"description":"This is a GUID identifying the DocuSign user that you will be impersonating with the access token. Your own User ID can be found at the top of the Apps and Keys page."},"rsaKey":{"label":"RSA private key (in Base64 format)","key":"rsaKey","obfuscated":true,"required":true,"description":"This is for the integration key you obtained above and can also be created on the Apps and Keys page. You only need the private key, and it can only be copied once. Make sure to retain it for your records. Provide it in Base64 format - if you copy the key as is, it will not be valid as newlines and formatting won't be persisted."},"baseApiUrl":{"label":"Base API URL (DocuSign)","key":"baseApiUrl","obfuscated":false,"required":false,"description":"Base API URL for API calls matching your environment on DocuSign. Defaults to: https://demo.docusign.net. Remember that this URL MUST match the one you registered for your app in DocuSign settings. Can be obtained from Account Base URI section of the Apps and Keys page or the \"base_uri\" property in the response of a call to the \"/oauth/userinfo\""},"returnUrlTemplate":{"label":"Return URL template","key":"returnUrlTemplate","obfuscated":false,"required":false,"description":"Return URL for your application to which DocuSign will redirect the user after signing the document. Set when you self host your application. You can use {sessionId}, {pathwayId}, {activityId} and {stakeholderId} variables to construct the URL, where variables will be replaced with actual values. Defaults to: \"https://goto.development.awell.health/?sessionId={sessionId}\"."}}},{"key":"documo","htmlDocs":"<hr />\n<p>title: Documo</p>\n<h2 id=\"descriptiondocumoextensionforawell\">description: Documo extension for Awell</h2>\n<h1 id=\"documoextension\">Documo extension</h1>\n<p>Documo extension for Awell that integrates with Documo's intelligent document processing platform.</p>\n<h2 id=\"webhooks\">Webhooks</h2>\n<h3 id=\"ocrdocumentcompleted\">OCR Document Completed</h3>\n<p>Triggered when OCR processing completes on a document. Uses an LLM to extract patient information from the OCR text.</p>\n<p><strong>Data Points:</strong></p>\n<ul>\n<li><code>webhookData</code> - Full webhook payload (JSON)</li>\n<li><code>extractedInfo</code> - Extracted patient information (JSON)</li>\n</ul>\n<h3 id=\"documentfieldvalueassigned\">Document Field Value Assigned</h3>\n<p>Triggered when a field value is assigned to a document. Extracts patient and provider information from the document field assignments.</p>\n<p><strong>Data Points:</strong></p>\n<table>\n<thead>\n<tr>\n<th>Data Point</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>webhookData</code></td>\n<td>json</td>\n<td>Full webhook payload</td>\n</tr>\n<tr>\n<td><code>patientFirstName</code></td>\n<td>string</td>\n<td>Patient's first name</td>\n</tr>\n<tr>\n<td><code>patientLastName</code></td>\n<td>string</td>\n<td>Patient's last name</td>\n</tr>\n<tr>\n<td><code>patientZipCode</code></td>\n<td>string</td>\n<td>Patient's zip code</td>\n</tr>\n<tr>\n<td><code>patientIdentifiers</code></td>\n<td>json</td>\n<td>Array of patient identifiers (e.g., MRN, insurance ID)</td>\n</tr>\n<tr>\n<td><code>patientMobilePhone</code></td>\n<td>string</td>\n<td>Patient's phone number</td>\n</tr>\n<tr>\n<td><code>receivingProviderFullName</code></td>\n<td>string</td>\n<td>Name of the receiving provider</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Field Mappings:</strong></p>\n<p>The webhook maps Documo field names to data points:</p>\n<table>\n<thead>\n<tr>\n<th>Documo Field Name</th>\n<th>Data Point</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Patient First Name</td>\n<td><code>patientFirstName</code></td>\n</tr>\n<tr>\n<td>Patient Last Name</td>\n<td><code>patientLastName</code></td>\n</tr>\n<tr>\n<td>Patient Zip Code</td>\n<td><code>patientZipCode</code></td>\n</tr>\n<tr>\n<td>Patient Identifiers</td>\n<td><code>patientIdentifiers</code></td>\n</tr>\n<tr>\n<td>Patient Phone Number</td>\n<td><code>patientMobilePhone</code></td>\n</tr>\n<tr>\n<td>Receiving Provider Full Name</td>\n<td><code>receivingProviderFullName</code></td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"settings\">Settings</h2>\n<ul>\n<li><strong>Api Key</strong>: Documo API Key</li>\n</ul>\n<h2 id=\"development\">Development</h2>\n<h3 id=\"runningtests\">Running Tests</h3>\n<p>To run tests for a specific file:</p>\n<pre><code class=\"bash language-bash\">yarn run test -- &lt;file name&gt;\n</code></pre>\n<p>Or run all Documo tests:</p>\n<pre><code class=\"bash language-bash\">yarn run test -- --testPathPattern='extensions/documo' --runInBand\n</code></pre>","changelog":"<h1 id=\"documochangelog\">Documo changelog</h1>\n<h2 id=\"unreleased\">[Unreleased]</h2>\n<ul>\n<li>Initial release</li>\n</ul>","actions":{"getDocumentInfo":{"key":"getDocumentInfo","title":"Get Document Info","description":"Retrieve metadata about a specific document in a Documo workspace.","category":"Document Management","fields":{"workspaceId":{"id":"workspaceId","label":"Workspace ID","type":"string","required":true,"description":"Unique identifier (UUID) of the workspace the document belongs to."},"documentId":{"id":"documentId","label":"Document ID","type":"string","required":true,"description":"Unique identifier (UUID) of the document to retrieve."}},"dataPoints":{"id":{"key":"id","valueType":"string"},"name":{"key":"name","valueType":"string"},"workspaceId":{"key":"workspaceId","valueType":"string"},"createdAt":{"key":"createdAt","valueType":"date"},"addedAt":{"key":"addedAt","valueType":"date"},"isUploading":{"key":"isUploading","valueType":"boolean"},"pagesCount":{"key":"pagesCount","valueType":"number"},"from":{"key":"from","valueType":"string"},"to":{"key":"to","valueType":"string"},"sourceType":{"key":"sourceType","valueType":"string"},"sourceId":{"key":"sourceId","valueType":"string"},"statusName":{"key":"statusName","valueType":"string"},"typeName":{"key":"typeName","valueType":"string"},"workspaceName":{"key":"workspaceName","valueType":"string"},"documentResponse":{"key":"documentResponse","valueType":"json"}},"previewable":true}},"webhooks":[{"key":"ocrDocumentCompleted","dataPoints":{"webhookData":{"key":"webhookData","valueType":"json"},"extractedInfo":{"key":"extractedInfo","valueType":"json"}}},{"key":"documentFieldValueAssigned","description":"This webhook is triggered when a field value is assigned to a document.","dataPoints":{"webhookData":{"key":"webhookData","valueType":"json"},"patientFirstName":{"key":"patientFirstName","valueType":"string"},"patientLastName":{"key":"patientLastName","valueType":"string"},"patientZipCode":{"key":"patientZipCode","valueType":"string"},"patientIdentifiers":{"key":"patientIdentifiers","valueType":"json"},"patientMobilePhone":{"key":"patientMobilePhone","valueType":"string"},"receivingProviderFullName":{"key":"receivingProviderFullName","valueType":"string"}}}],"description":"Documo extension for Awell","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1766186926/Awell%20Extensions/documo_logo.png","title":"Documo","category":"Demo","author":{"authorType":"Awell"},"settings":{"apiKey":{"key":"apiKey","label":"Api Key","obfuscated":true,"description":"API Key"}}},{"key":"dropboxSign","htmlDocs":"<hr />\n<p>title: Dropbox Sign</p>\n<h2 id=\"descriptiondropboxsignformerlyhellosignistheeasiestwaytosendreceiveandmanagelegallybindingelectronicsignatures\">description: Dropbox Sign (formerly HelloSign) is the easiest way to send, receive and manage legally binding electronic signatures.</h2>\n<h1 id=\"dropboxsign\">Dropbox Sign</h1>\n<p>Dropbox Sign (formerly HelloSign) is the easiest way to send, receive and manage legally binding electronic signatures.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will need to provide the following settings:</p>\n<ol>\n<li>API Key</li>\n<li>Client ID - the id of the API app created in Dropbox Sign. Only required if want to use embedded signature requests.</li>\n<li>Test mode - whether you want to execute all API calls to DropboxSign in test mode. When test mode is enabled, signature requests will not be legally binding. When disabled, keep in mind that you must upgrade to a paid DropboxSign API plan to create signature requests via the extension.</li>\n</ol>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"embeddedsigning\">Embedded signing</h3>\n<p>Embedded Signing gives users the ability to sign documents directly from Awell Hosted Pages using Dropbox Sign's embedded signing feature. First an embedded signature request with a template is created and then a signing URL is generated for the signature request. Via the signing URL, we can let the user sign the request from within Awell.</p>\n<p>Embedded signing behaves as a blocking action where the action is only completed when the signature request is effectively signed.</p>\n<p><strong>In order to add embedded signing, you need to add 2 actions to you care flow:</strong></p>\n<ol>\n<li>First, add the \"Create embedded signature request with template\" action. This action will create an embedded signature request based on a template and return a <strong>sign URL</strong>.</li>\n<li>Second, add the \"Embedded signing\" action. In this action you will have to configure the <strong>sign URL</strong> you got from the first action.</li>\n</ol>\n<p><strong>Please note that the signing URL generated in the first step is only valid for 1 hour.</strong> This means that from as soon as the first action is activated, the user has 1 hour to complete the signing request. When the sign URL has expired, the document cannot be signed anymore and and the process would have to be repeated.</p>\n<h3 id=\"sendsignaturerequestwithtemplate\">Send signature request with template</h3>\n<p>Creates and sends a new SignatureRequest based off of a template specified with the template id parameter. The request will be send to specified signer via email. Please note that is a non-blocking action and that the care flow will automatically continue once the request is sent. It won't wait for the actual signing of the request.</p>\n<p>To send signature requests via the DropboxSign API you must upgrade to a <a href=\"https://app.hellosign.com/api/pricing\">paid API plan</a>.</p>\n<h3 id=\"getsignaturerequest\">Get signature request</h3>\n<p>Returns the SignatureRequest specified by the signature request id parameter.</p>\n<h3 id=\"sendrequestreminder\">Send request reminder</h3>\n<p>Sends an email to the signer reminding them to sign the signature request. You cannot send a reminder within 1 hour of the last reminder that was sent. This includes manual AND automatic reminders.</p>\n<p><strong>Important:</strong></p>\n<ul>\n<li>The email address specified to send the reminder to needs to be an email address of an actual signer linked to the signature request. If not, the action will fail.</li>\n<li>This action can not be used with embedded signature requests.</li>\n</ul>\n<h3 id=\"cancelsignaturerequest\">Cancel signature request</h3>\n<p>Cancels an incomplete signature request. This action is not reversible.</p>","changelog":"<h1 id=\"dropboxsignchangelog\">Dropbox Sign changelog</h1>","actions":{"sendSignatureRequestWithTemplate":{"key":"sendSignatureRequestWithTemplate","title":"Send signature request with template","description":"Send a signature request based off a template.","category":"Document Management","fields":{"signerRole":{"id":"signerRole","label":"Signer role","description":"Must match an existing role in chosen template. It's case-sensitive.","type":"string","required":true},"signerName":{"id":"signerName","label":"Signer name","description":"The name of the signer.","type":"string","required":true},"signerEmailAddress":{"id":"signerEmailAddress","label":"Signer email address","description":"The email address of the signer.","type":"string","required":true},"templateId":{"id":"templateId","label":"Template ID","description":"Use the template id to create a SignatureRequest from a template.","type":"string","required":true},"title":{"id":"title","label":"Title","description":"The title you want to assign to the SignatureRequest.","type":"string","required":false},"subject":{"id":"subject","label":"Subject","description":"The subject in the email that will be sent to the signer.","type":"string","required":false},"message":{"id":"message","label":"Message","description":"The custom message in the email that will be sent to the signer.","type":"string","required":false},"signingRedirectUrl":{"id":"signingRedirectUrl","label":"Signer redirect URL","description":"The URL you want signer redirected to after they successfully sign.","type":"string","required":false}},"dataPoints":{"signatureRequestId":{"key":"signatureRequestId","valueType":"string"}},"previewable":false},"sendRequestReminder":{"key":"sendRequestReminder","title":"Send request reminder","description":"Sends an email to the signer reminding them to sign the signature request.","category":"Document Management","fields":{"signatureRequestId":{"id":"signatureRequestId","label":"Signature request ID","description":"The id of the SignatureRequest to send a reminder for.","type":"string","required":true},"signerEmailAddress":{"id":"signerEmailAddress","label":"Signer email address","description":"The email address of the signer to send a reminder to.","type":"string","required":true}},"previewable":true},"cancelSignatureRequest":{"key":"cancelSignatureRequest","title":"Cancel signature request","description":"Cancels an incomplete signature request. This action is not reversible.","category":"Document Management","fields":{"signatureRequestId":{"id":"signatureRequestId","label":"Signature request ID","description":"The id of the SignatureRequest to cancel. Please note you can only cancel incomplete signature requests.","type":"string","required":true}},"previewable":false},"getSignatureRequest":{"key":"getSignatureRequest","title":"Get signature request","description":"Get details about a signature request.","category":"Document Management","fields":{"signatureRequestId":{"id":"signatureRequestId","label":"Signature request ID","description":"The id of the SignatureRequest you want to retrieve the details for.","type":"string","required":true}},"dataPoints":{"title":{"key":"title","valueType":"string"},"originalTitle":{"key":"originalTitle","valueType":"string"},"subject":{"key":"subject","valueType":"string"},"message":{"key":"message","valueType":"string"},"signingUrl":{"key":"signingUrl","valueType":"string"},"signingRedirectUrl":{"key":"signingRedirectUrl","valueType":"string"},"detailsUrl":{"key":"detailsUrl","valueType":"string"},"requesterEmailAddress":{"key":"requesterEmailAddress","valueType":"string"},"signerEmailAddress":{"key":"signerEmailAddress","valueType":"string"},"signerName":{"key":"signerName","valueType":"string"},"signerRole":{"key":"signerRole","valueType":"string"},"statusCode":{"key":"statusCode","valueType":"string"}},"previewable":true},"createEmbeddedSignatureRequestWithTemplate":{"key":"createEmbeddedSignatureRequestWithTemplate","title":"Create embedded signature request with template","description":"Let a stakeholder sign a request within Awell based off a template. The care flow will not progress until the request is signed.","category":"Document Management","fields":{"signerRole":{"id":"signerRole","label":"Signer role","description":"Must match an existing role in chosen template. It's case-sensitive.","type":"string","required":true},"signerName":{"id":"signerName","label":"Signer name","description":"The name of the signer.","type":"string","required":true},"signerEmailAddress":{"id":"signerEmailAddress","label":"Signer email address","description":"The email address of the signer.","type":"string","required":true},"templateId":{"id":"templateId","label":"Template ID","description":"Use the template id to create a SignatureRequest from a template.","type":"string","required":true},"title":{"id":"title","label":"Title","description":"The title you want to assign to the SignatureRequest.","type":"string","required":false},"subject":{"id":"subject","label":"Subject","description":"The subject in the email that will be sent to the signer.","type":"string","required":false},"message":{"id":"message","label":"Message","description":"The custom message in the email that will be sent to the signer.","type":"string","required":false},"customFields":{"id":"customFields","label":"Custom fields","description":"An array defining values and options for custom fields.","type":"json","required":false}},"dataPoints":{"signatureRequestId":{"key":"signatureRequestId","valueType":"string"},"signUrl":{"key":"signUrl","valueType":"string"},"expiresAt":{"key":"expiresAt","valueType":"date"}},"previewable":false},"embeddedSigning":{"key":"embeddedSigning","title":"Embedded signing","description":"Let a stakeholder sign an embedded signature request with Awell Hosted Pages.","category":"Document Management","fields":{"signUrl":{"id":"signUrl","label":"Sign URL","description":"Enter the sign URL generated via the \"Create embedded signature request with template\" action","type":"string","required":true}},"dataPoints":{"signed":{"key":"signed","valueType":"boolean"}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}},"previewable":false}},"webhooks":[],"description":"Dropbox Sign (formerly HelloSign) is the easiest way to send, receive and manage legally binding electronic signatures.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1680191271/Awell%20Extensions/dropboxsign.png","title":"Dropbox Sign","category":"Document Management","author":{"authorType":"Awell"},"settings":{"apiKey":{"label":"API Key","key":"apiKey","obfuscated":true,"required":true,"description":"Enter an API key so Awell can communicate with the Dropbox Sign API."},"clientId":{"label":"Client ID","key":"clientId","obfuscated":false,"required":true,"description":"The client ID of the app created in Dropbox Sign."},"testMode":{"label":"Test mode","key":"testMode","obfuscated":false,"required":false,"description":"Set to \"Yes\" if you want to execute all API calls to DropboxSign in test mode. Set to \"No\" if you want to disable test mode. Keep in mind that when test mode is disabled, you must upgrade to a paid DropboxSign API plan to create signature requests. Defaults to \"No\"."}}},{"key":"elation","htmlDocs":"<hr />\n<p>title: Elation</p>\n<h2 id=\"descriptionelationisacloudbasedhealthrecordsystemdesignedforhealthcareprovidersclinicsandmedicalpractices\">description: Elation is a cloud-based health record system designed for healthcare providers, clinics, and medical practices.</h2>\n<h1 id=\"elation\">Elation</h1>\n<p>Elation is a cloud-based health record system designed for healthcare providers, clinics, and medical practices. It offers a range of features including patient scheduling, charting, e-prescribing, billing, and telemedicine. Overall, Elation is designed to streamline the workflow of medical practices, improve patient care, and increase efficiency.</p>\n<h2 id=\"setup\">Setup</h2>\n<h3 id=\"webhooks\">Webhooks</h3>\n<p>The integration of webhooks with Elation presents unique challenges and considerations:</p>\n<ul>\n<li><strong>Non-Discriminative Triggers</strong>: Elation does not differentiate between the creation or update of a resource. Both actions will set off webhook with action <code>saved</code>, which might not provide enough discriminative information for some use cases.</li>\n<li><strong>Programmatic Setup</strong>: Elation webhooks can only be configured programmatically, as there's no dedicated user interface in Elation to set up webhooks. View <a href=\"https://youtu.be/v8u6E8MEI8E\">this demo video</a> for a step-by-step guide on how to set up your webhooks in Elation.</li>\n<li><strong>Limitation on user-triggered actions</strong>: Elation has a concept called \"Preventing echo\". This means that that any action carried out by the user affiliated with the API credentials that created the subscription doesn't trigger a webhook. You can read more about this behaviour <a href=\"https://docs.elationhealth.com/reference/webhooks\">here</a>. If you are not receiving any webhooks from Elation after setting up your subscription, then this is the reason. A feasible workaround to the above limitation is creating a dedicated user not meant for human interactions but serves the sole purpose of facilitating M2M communication.</li>\n</ul>\n<p>If you need help setting up your webhooks in Elation, reach out! We are happy to help you.</p>\n<h3 id=\"extensionsettings\">Extension settings</h3>\n<p>In order to use this extension you will need to provide the extension with the following settings:</p>\n<ul>\n<li>Base URL / endpoint URL of the API</li>\n<li>Authorization URL</li>\n<li>Client ID for OAuth2 Password authentication</li>\n<li>Client Secret for OAuth2 Password authentication</li>\n<li>API Username for OAuth2 Password authentication</li>\n<li>API Password for OAuth2 Password authentication</li>\n</ul>\n<p>Not sure where you can find all of this information? Click <a href=\"https://docs.elationhealth.com/reference/introduction\">here</a> to have a look at Elation's Developer documentation.</p>\n<h2 id=\"actions\">Actions</h2>\n<p>The following actions are supported with Elation today:</p>\n<h3 id=\"createpatient\">Create Patient</h3>\n<p>This action creates a patient in Elation.</p>\n<p><strong>When creating a patient, you will have to specifiy the primary physician and caregiver practice ID:</strong></p>\n<ul>\n<li>Primary physician ID: you can retrieve this ID by using the <a href=\"https://docs.elationhealth.com/reference/find-physicians\">Find Physicians</a> API call, or by using the <code>Find Physician</code> action</li>\n<li>Caregiver Practice ID: similar to the primary physician ID, you can find this ID by using the same API call or action</li>\n</ul>\n<p>If the Elation API throws an error indicating the patient with the provided information already exists, the action will succeed and the ID of the existing patient will be returned.</p>\n<h3 id=\"getpatient\">Get Patient</h3>\n<p>Using a patient identifier, retrieve a patient object from Elation. </p>\n<p>Note that when retrieve the mobile phone number, we are tranforming the number to an international format. We apply a heuristic and assume all mobile numbers in Elation are in US national format so we prepend the number with the +1 country code. Having the number in international format unlocks more powerful functionality like sending text messages with 3rd party services like Twilio and MessageBird.</p>\n<h3 id=\"updatepatient\">Update Patient</h3>\n<p>Update a patient in Elation using any fields available in create patient. We use Elation's <code>PATCH</code> method to apply partial modifications to a the patient resource (i.e. update only what is needed).</p>\n<h3 id=\"createappointment\">Create Appointment</h3>\n<p>Easily create a patient appointment in Elation.</p>\n<p>Creating an appointment requires a few strings to be well-formulated:</p>\n<ul>\n<li><code>Scheduled date</code> must be a datetime string (ISO-8601). For example, January 1, 2023 at noon, Pacific Time (-8 hours) would be shown as such: <code>2023-01-01T12:00:00.000-08:00</code></li>\n<li><code>Reason</code> must not be free text. This value comes from the following list of appointment types (<code>Follow-Up</code>, <code>Office Visit</code>, <code>Physical Exam</code>, etc.):\n<img src=\"./assets/elation-appointment-reason.png?raw=true\" alt=\"Appointment types\" title=\"Elation Appointment Types\" /></li>\n<li><code>Patient</code> is the patient ID.</li>\n<li><code>Physician</code> is the physician ID (see <code>Find Physician</code>)</li>\n<li><code>Practice</code> is the practice ID (again, see <code>Find Physician</code>)</li>\n</ul>\n<p>You can also include a duration (default to 15 minutes, or whatever has been set in your EHR)</p>\n<h3 id=\"getappointment\">Get Appointment</h3>\n<p>Retrieve appointment details using an appointment ID. </p>\n<h3 id=\"createnonvisitnote\">Create Non-Visit Note</h3>\n<p>The non-visit note is a special kind of note that, as the name suggests, is not associated with a visit. These notes, in their simplest form, provide a chronological account of information about the patient.</p>\n<p><strong>Additional documentation for some of the action fields:</strong></p>\n<ol>\n<li>Category: The default category is \"Problem\" but you can choose any of \"Past\", \"Family\", \"Social\", \"Instr\", \"PE\", \"ROS\", \"Med\", \"Data\", \"Assessment\", \"Test\", \"Tx\", \"Narrative\", \"Followup\", \"Reason\", \"Plan\", \"Objective\", \"Hpi\", \"Allergies\", \"Habits\", \"Assessplan\", \"Consultant\", \"Attending\", \"Dateprocedure\", \"Surgical\", \"Orders\", \"Referenced\", \"Procedure\".</li>\n<li>Chart and document date automatically get set to the current date, i.e. the date when the action is orchestrated.</li>\n</ol>\n<h3 id=\"deletenonvisitnote\">Delete Non-Visit Note</h3>\n<p>Deletes the non-visit note identified by an ID.</p>\n<h3 id=\"getnonvisitnote\">Get Non-Visit Note</h3>\n<p>Retrieve the details of a non-visit note identified by an ID.</p>\n<h3 id=\"getphysician\">Get physician</h3>\n<p>Using a physician identifier, retrieve a physician object from Elation.</p>\n<h3 id=\"findphysicians\">Find physicians</h3>\n<p>Search a physician based on a set of parameters. The ID of the physician matching the search parameters will be returned. To retrieve the details of the physician, you can use the the \"Get physician\" action.</p>\n<p>Note that this action can only support finding one physician so if your search criteria match multiple physicians the action will throw an error.</p>\n<h3 id=\"findfutureappointment\">✨ Find Future Appointment</h3>\n<p>This AI-powered action finds a <strong>single future appointment</strong> for a patient based on a prompt in natural language. Just type something like \"next cardiology appointment\" — AI figures it out and finds the matching appointment for you.</p>\n<p><strong>How it works:</strong></p>\n<ol>\n<li>All future appointments with status <code>Scheduled</code> or <code>Confirmed</code> for the patient are retrieved from Elation.</li>\n<li>Based on the provided prompt, an LLM tries to find a single appointment from the list of future appointments that matches the prompt.</li>\n<li>If multiple appointments exist that match the instructions, only the first one is returned.</li>\n</ol>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Elation patient ID</code> (Required): The numeric ID of the patient in Elation whose appointments you want to search.</li>\n<li><code>Describe what appointment you would like to find</code> (Required): A natural language description of the appointment you're looking for. Be as specific as possible about the type, status, timing, or any other important aspect for your use case.</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Appointment</code>: The complete appointment data in JSON format (if found).</li>\n<li><code>Appointment Exists</code>: Boolean indicator (true/false) of whether a matching appointment was found.</li>\n<li><code>Explanation</code>: A clear explanation of why the selected appointment was chosen or why no appointment was found.</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>Include specific details about the appointment type, status, or purpose in your description.</li>\n<li>Use single or double quotes for exact matches. For example, if you search for '\"Physical Exam\"', the action will search for appointments with that exact appointment type (with small variations physical exams, Physical exam).</li>\n<li>When you know exactly what to match (status, physician name, appointment type), put it in quotes (e.g., '\"Scheduled\"', '\"Follow-Up\"') for exact matching.</li>\n<li>For other criteria where you're less certain, provide descriptive instructions without quotes, for example all physical exams - then AI action will try to find all exams that can be classified as physical exams.</li>\n<li>Time-based instructions work well, such as \"next week,\" \"this month,\" or \"next Thursday.\"</li>\n<li>If multiple appointments match your criteria, only the first one will be returned.</li>\n<li>Be clear and specific in your instructions to avoid ambiguity - this is critical for getting accurate results.</li>\n</ul>\n<p><strong>Example:</strong></p>\n<pre><code>Input:\n  Elation patient ID: 12345\n  Describe what appointment you would like to find: \"Find my next video appointment with status 'Confirmed' for 'Follow-Up'\"\n\nOutput:\n  Appointment: {\n    \"id\": 67890,\n    \"scheduled_date\": \"2023-08-15T14:30:00Z\",\n    \"status\": {\n      \"status\": \"Confirmed\"\n    },\n    \"mode\": \"VIDEO\",\n    \"reason\": \"Follow-Up\"\n  }\n  Appointment Exists: true\n  Explanation: \"I found a video appointment scheduled for August 15, 2023 at 2:30 PM. The appointment is confirmed and is for a Follow-Up visit, which matches your search criteria. This is the earliest upcoming confirmed video appointment for a follow-up.\"\n</code></pre>\n<h3 id=\"findappointments\">✨ Find Appointments</h3>\n<p>This AI-powered action finds <strong>all appointments</strong> for a patient based on a prompt in natural language. Want to know how many mental health sessions someone has had this year? Just ask — AI returns them all.</p>\n<p><strong>How it works:</strong></p>\n<ol>\n<li>All appointments, independent of their date or status, for the patient are retrieved from Elation.</li>\n<li>Based on the provided prompt, an LLM tries to find all appointments from the list of appointments that match the prompt.</li>\n</ol>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Elation patient ID</code> (Required): The numeric ID of the patient in Elation whose appointments you want to search.</li>\n<li><code>Describe the appointments to search for</code> (Required): A natural language description of the appointments you're looking for. Be as specific as possible about appointment types, timing, status, or other criteria.</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Appointments</code>: Array of appointment objects that match your search criteria (in JSON format).</li>\n<li><code>Explanation</code>: A detailed explanation of why these appointments were selected, including the reasoning behind the matches.</li>\n<li><code>Appointment Counts By Status</code>: A summary of how many matching appointments were found in each status category (e.g., \"Scheduled\": 2, \"Completed\": 1).</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>When you know exactly what to match (status, appointment type), put it in quotes (e.g., '\"Scheduled\"', '\"Office Visit\"') for exact matching.</li>\n<li>For other criteria where you're less certain, provide descriptive instructions without quotes.</li>\n<li>Include specific time ranges, such as \"all appointments in 2023\" or \"appointments from January to March\" when relevant.</li>\n<li>Filter by appointment status: \"Cancelled,\" \"Completed,\" \"Scheduled,\" or \"Confirmed\" when relevant.</li>\n<li>Be clear and specific in your instructions and avoid ambiguity - this is critical for getting accurate results.</li>\n</ul>\n<p><strong>Example:</strong></p>\n<pre><code>Input:\n  Elation patient ID: 12345\n  Describe the appointments to search for: \"Find all completed appointments with type 'Physical Exam' in the last 6 months\"\n\nOutput:\n  Appointments: [\n    {\n      \"id\": 67890,\n      \"scheduled_date\": \"2023-06-10T13:00:00Z\",\n      \"status\": {\n        \"status\": \"Completed\"\n      },\n      \"reason\": \"Physical Exam\",\n      \"mode\": \"IN_PERSON\"\n    },\n    {\n      \"id\": 67891,\n      \"scheduled_date\": \"2023-03-15T09:30:00Z\",\n      \"status\": {\n        \"status\": \"Completed\"\n      },\n      \"reason\": \"Physical Exam\",\n      \"mode\": \"IN_PERSON\"\n    }\n  ]\n  Explanation: \"I found 2 completed physical exam appointments in the last 6 months. The first appointment was on June 10, 2023, and the second appointment was on March 15, 2023. Both appointments were in-person and are marked as completed in the system.\"\n  Appointment Counts By Status: {\n    \"Completed\": 2\n  }\n</code></pre>\n<h3 id=\"cancelappointments\">✨ Cancel Appointments</h3>\n<p>This AI-powered action uses AI to identify and cancel patient appointments based on natural language instructions. You can say, \"All follow-up appointments for next week\" and AI will identify and cancel the right ones for you.</p>\n<p><strong>How it works:</strong></p>\n<ol>\n<li>Retrieves all upcoming appointments for the patient from Elation</li>\n<li>Uses an LLM to interpret the prompt and identify which appointments should be canceled</li>\n<li>Processes the cancellation for matched appointments and handles partial success scenarios</li>\n</ol>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Elation patient ID</code> (Required): The numeric ID of the patient in Elation whose appointments you want to cancel.</li>\n<li><code>Describe the appointments you would like to cancel</code> (Required): Natural language instructions describing which appointments should be canceled. Be specific about criteria such as time period, appointment type, or provider.</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Cancelled Appointments</code>: An array of appointment IDs that were successfully canceled.</li>\n<li><code>Explanation</code>: A detailed explanation of which appointments were canceled and why they matched your criteria.</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>Use single or double quotes for exact matches. For example, '\"Follow-Up\"' will only match appointments with exactly that type.</li>\n<li>When you know exactly what to match (appointment type, status), put it in quotes (e.g., '\"Scheduled\"', '\"Physical Exam\"') for exact matching.</li>\n<li>For other criteria where you're less certain, provide descriptive instructions without quotes.</li>\n<li>Be specific about the time frame: \"all appointments this week,\" \"appointments in July,\" etc.</li>\n<li>You can target specific appointment types: \"all physical therapy appointments,\" \"follow-up visits\", etc.</li>\n<li>Only future appointments with status \"Scheduled\" or \"Confirmed\" can be canceled.</li>\n<li>If no appointments match your criteria, the action will explain why nothing was canceled.</li>\n<li>For safety, highly specific criteria are recommended to avoid unintended cancellations.</li>\n<li>Be clear and specific in your instructions to avoid ambiguity - this is critical for preventing accidental cancellations.</li>\n</ul>\n<p><strong>Example:</strong></p>\n<pre><code>Input:\n  Elation patient ID: 12345\n  Describe the appointments you would like to cancel: \"All appointments with status 'Scheduled' for office visits in the next two weeks.\"\n\nOutput:\n  Cancelled Appointments: [67890, 67891]\n  Explanation: \"I canceled 2 appointments based on your request:\n  1. Appointment #67890: Scheduled for June 5, 2023 at 2:00 PM, type: Office Visit\n  2. Appointment #67891: Scheduled for June 12, 2023 at 10:30 AM, type: Office Visit\n\n  Both appointments were within the next two weeks and match the 'Office Visit' type and 'Scheduled' status as specified. The appointments were successfully canceled in the system and will need to be rescheduled after the patient returns from vacation.\"\n</code></pre>\n<h3 id=\"updatepatienttags\">✨ Update Patient Tags</h3>\n<p>This AI-powered action uses AI to manage patient tags in Elation based on natural language instructions. Want to mark someone for special attention? Just say it, and AI updates their tags in Elation.</p>\n<p><strong>How it works:</strong></p>\n<ol>\n<li>Retrieves existing patient tags from Elation</li>\n<li>Uses an LLM to interpret natural language instructions and determine required tag changes</li>\n<li>Updates patient tags in Elation according to the interpreted changes</li>\n</ol>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Elation patient ID</code> (Required): The numeric ID of the patient in Elation whose tags you want to update.</li>\n<li><code>Specify tags to add, remove, or modify</code> (Required): Natural language instructions explaining what tag changes you want to make. Be specific about which tags to add, remove, or modify.</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Updated Tags</code>: A comma-separated list of all patient tags after your requested changes have been applied.</li>\n<li><code>Explanation</code>: A detailed explanation of what changes were made to the tags and why.</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>When specifying new tags to add, use single quotes around tag names (e.g., 'Diabetes', 'High-Risk') for exact matching.</li>\n<li>Case sensitivity and exact spelling matter when using quotes - 'Diabetes' and 'diabetes' will be treated as different tags.</li>\n<li>Be explicit about which tags to remove or replace (e.g., \"Remove the 'Temporary' tag\").</li>\n<li>You can include context to help the AI understand why tags are being modified.</li>\n<li>To clear all tags, you can say \"Remove all tags\" or \"Clear all existing tags.\"</li>\n<li>Due to Elation API limitations, clearing all tags is implemented by setting a single space tag (' '). This is the recommended workaround from Elation's team.</li>\n<li>Tags must already exist in your Elation database to be added.</li>\n<li>Be clear and specific in your instructions to avoid ambiguity - this is critical for getting accurate results.</li>\n</ul>\n<p><strong>Example:</strong></p>\n<pre><code>Input:\n  Elation patient ID: 12345\n  Specify tags to add, remove, or modify: \"Add the tags 'Diabetes' and 'CCM Program'. Remove the 'Inactive' tag if it exists.\"\n\nOutput:\n  Updated Tags: \"Diabetes, CCM Program, Hypertension\"\n  Explanation: \"I've made the following changes to the patient's tags:\n  1. Added 'Diabetes' tag as requested\n  2. Added 'CCM Program' tag as requested\n  3. No 'Inactive' tag was found, so no removal was necessary\n  4. The existing 'Hypertension' tag was preserved\"\n</code></pre>\n<h3 id=\"checkpatienttags\">✨ Check Patient Tags</h3>\n<p>This AI-powered action uses AI to check if a patient's tags match given instructions in natural language. Ask \"Is this patient marked as 'Diabetic' or 'Obese'?\" — AI checks and explains the answer.</p>\n<p><strong>How it works:</strong></p>\n<ol>\n<li>Retrieves existing patient tags from Elation</li>\n<li>Uses an LLM to interpret natural language instructions and check if the patient's tags match the requirements</li>\n<li>Returns a boolean result and explanation of the check</li>\n</ol>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Elation patient ID</code> (Required): The numeric ID of the patient in Elation whose tags you want to check.</li>\n<li><code>Instructions for checking tags</code> (Required): Natural language instructions explaining what tag conditions you want to verify. Be specific about what tags should or shouldn't be present.</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Tags Found</code>: Boolean (true/false) indicating whether the patient's tags match your specified criteria.</li>\n<li><code>Explanation</code>: A detailed explanation of why the tags match or don't match your criteria, including which tags were found or missing.</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>When specifying exact tag matches, use double quotes around tag names (e.g., \"Diabetes\", \"High-Risk\") for exact matching.</li>\n<li>Case sensitivity and exact spelling matter when using quotes - \"Diabetes\" and \"diabetes\" will be treated as different tags.</li>\n<li>You can use logical operators in your instructions, such as AND, OR, NOT (e.g., \"Check if the patient has 'Diabetes' AND 'Hypertension' tags\").</li>\n<li>Complex conditions are supported, like \"either/or\", \"both\", \"not\", \"any of\", \"none of\".</li>\n<li>Be precise about what combination of tags you're looking for to get accurate results.</li>\n<li>The action provides reasoning about why the criteria was or wasn't met, which can be useful for debugging or explaining decisions.</li>\n<li>Be clear and specific in your instructions to avoid ambiguity - this is critical for getting accurate results.</li>\n</ul>\n<p><strong>Example:</strong></p>\n<pre><code>Input:\n  Elation patient ID: 12345\n  Instructions for checking tags: \"Check if the patient has the tag 'CCM Program' but does not have the tag 'Excluded'. They need to be in the CCM program without exclusions to be eligible for our new service.\"\n\nOutput:\n  Tags Found: true\n  Explanation: \"The patient meets the specified criteria. They have the 'CCM Program' tag, indicating enrollment in the Chronic Care Management program. They do not have the 'Excluded' tag. The patient's complete tag list is: CCM Program, Diabetes, Hypertension. Based on these tags, the patient is eligible for the new service as they are in the CCM program without exclusions.\"\n</code></pre>","changelog":"<h1 id=\"elationchangelog\">Elation Changelog</h1>\n<h2 id=\"january302024\">January 30, 2024</h2>\n<ul>\n<li>New actions</li>\n<li>Post letter: Using patient and practice identifier, post a new letter to either Provider, Patient or associate it with an existing Referral.</li>\n</ul>\n<h2 id=\"october32023\">October 3, 2023</h2>\n<ul>\n<li>The README is now more concise with less unneeded detail. A section on the particularities of Elation subscriptions (webhooks) was added.</li>\n<li>Misc. updates to labels, descriptions, action fields order</li>\n<li>Action updates</li>\n<li>Create Non-Visit Note:<ul>\n<li>Simplify the action by removing some optional action fields (we can always expand later)</li>\n<li><code>document_date</code> and <code>chart_date</code> are now automatically set to the date of today so that the corresponding action fields could be removed</li></ul></li>\n<li>Create patient<ul>\n<li><code>dob</code> is now a <code>date</code> field type (was a string)</li>\n<li>You can pass a mobile phone number and email when creating a patient</li></ul></li>\n<li>Find physician<ul>\n<li>Only returns the physician ID instead of all the details of the physician. To retrieve the details one can use the new <code>Get physician</code> action</li></ul></li>\n<li>Update patient<ul>\n<li><code>dob</code> is now a <code>date</code> field type (was a string)</li>\n<li>We are now using <code>PATCH</code> instead of <code>PUT</code> which allows for a partial update, i.e. only update the fields that are needed.</li></ul></li>\n<li>New actions</li>\n<li>Get physician: Using a physician identifier, retrieve a physician object from Elation.</li>\n<li>Removed actions</li>\n<li>Update Non-Visit Note</li>\n<li>Webhooks</li>\n<li>Fix the type of <code>patientId</code> in <code>patientCreatedOrUpdated</code> webhook</li>\n<li>Added <code>appointmentCreatedOrUpdated</code> webhook</li>\n</ul>\n<h2 id=\"september42023\">September 4, 2023</h2>\n<ul>\n<li>rename <code>onCreatePatient</code> webhook to <code>patientCreatedOrUpdated</code></li>\n<li>filter non <code>saved</code> actions for this webhook</li>\n</ul>\n<h2 id=\"august212023\">August 21, 2023</h2>\n<ul>\n<li>make non-visit note text a large input (<code>StringType.TEXT</code>)</li>\n</ul>\n<h2 id=\"may232024\">May 23, 2024</h2>\n<ul>\n<li>add patient_status.status to patient object in getPatient action</li>\n<li>add status to updatePatient action</li>\n</ul>","actions":{"getPatient":{"key":"getPatient","title":"Get Patient","description":"Retrieve a patient profile using Elation`s patient API.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The Elation patient ID","type":"numeric","required":true}},"previewable":true,"supports_automated_retries":true,"dataPoints":{"firstName":{"key":"firstName","valueType":"string"},"lastName":{"key":"lastName","valueType":"string"},"dob":{"key":"dob","valueType":"date"},"sex":{"key":"sex","valueType":"string"},"primaryPhysicianId":{"key":"primaryPhysicianId","valueType":"number"},"caregiverPracticeId":{"key":"caregiverPracticeId","valueType":"number"},"mainPhone":{"key":"mainPhone","valueType":"telephone"},"mobilePhone":{"key":"mobilePhone","valueType":"telephone"},"email":{"key":"email","valueType":"string"},"middleName":{"key":"middleName","valueType":"string"},"actualName":{"key":"actualName","valueType":"string"},"genderIdentity":{"key":"genderIdentity","valueType":"string"},"legalGenderMarker":{"key":"legalGenderMarker","valueType":"string"},"pronouns":{"key":"pronouns","valueType":"string"},"sexualOrientation":{"key":"sexualOrientation","valueType":"string"},"ssn":{"key":"ssn","valueType":"string"},"ethnicity":{"key":"ethnicity","valueType":"string"},"race":{"key":"race","valueType":"string"},"preferredLanguage":{"key":"preferredLanguage","valueType":"string"},"notes":{"key":"notes","valueType":"string"},"previousFirstName":{"key":"previousFirstName","valueType":"string"},"previousLastName":{"key":"previousLastName","valueType":"string"},"status":{"key":"status","valueType":"string"},"preferredServiceLocationId":{"key":"preferredServiceLocationId","valueType":"number"},"patientObject":{"key":"patientObject","valueType":"json"}}},"createPatient":{"key":"createPatient","title":"Create Patient","description":"Create a patient profile using Elation's patient API.","category":"EHR Integrations","fields":{"firstName":{"id":"firstName","label":"First name","description":"","type":"string","required":true},"lastName":{"id":"lastName","label":"Last name","description":"","type":"string","required":true},"dob":{"id":"dob","label":"Date of Birth","description":"","type":"date","required":true},"sex":{"id":"sex","label":"Sex","description":"Possible values are 'Male', 'Female', 'Other', 'Unknown'","type":"string","required":true,"options":{"dropdownOptions":[{"label":"Male","value":"Male"},{"label":"Female","value":"Female"},{"label":"Other","value":"Other"},{"label":"Unknown","value":"Unknown"}]}},"primaryPhysicianId":{"id":"primaryPhysicianId","label":"Primary Physician ID","description":"The ID of the primary physician associated to the patient","type":"numeric","required":true},"caregiverPracticeId":{"id":"caregiverPracticeId","label":"Caregiver Practice ID","description":"","type":"numeric","required":true},"email":{"id":"email","label":"Email","description":"","type":"string","required":false},"mobilePhone":{"id":"mobilePhone","label":"Mobile phone","description":"The number will be stored in US national format in Elation","type":"string","stringType":"phone","required":false},"middleName":{"id":"middleName","label":"Middle Name","description":"","type":"string"},"actualName":{"id":"actualName","label":"Actual Name","description":"","type":"string"},"genderIdentity":{"id":"genderIdentity","label":"Gender identity","description":"Possible values are 'unknown', 'man', 'woman', 'transgender_man', 'transgender_woman', 'nonbinary', 'option_not_listed', 'prefer_not_to_say', 'two_spirit'","type":"string","options":{"dropdownOptions":[{"label":"Unknown","value":"unknown"},{"label":"Man","value":"man"},{"label":"Woman","value":"woman"},{"label":"Transgender Man","value":"transgender_man"},{"label":"Transgender Woman","value":"transgender_woman"},{"label":"Nonbinary","value":"nonbinary"},{"label":"Option Not Listed","value":"option_not_listed"},{"label":"Prefer Not To Say","value":"prefer_not_to_say"},{"label":"Two Spirit","value":"two_spirit"}]}},"legalGenderMarker":{"id":"legalGenderMarker","label":"Legal gender marker","description":"Possible values are 'M', 'F', 'X', 'U'","type":"string","options":{"dropdownOptions":[{"label":"M","value":"M"},{"label":"F","value":"F"},{"label":"X","value":"X"},{"label":"U","value":"U"}]}},"pronouns":{"id":"pronouns","label":"Pronouns","description":"Pronouns by which a patient identifies self. Possible values are 'he_him_his', 'she_her_hers', 'they_them_theirs', 'not_listed'","type":"string","options":{"dropdownOptions":[{"label":"He Him His","value":"he_him_his"},{"label":"She Her Hers","value":"she_her_hers"},{"label":"They Them Theirs","value":"they_them_theirs"},{"label":"Not Listed","value":"not_listed"}]}},"sexualOrientation":{"id":"sexualOrientation","label":"Sexual orientation","description":"Possible values are 'unknown', 'straight', 'gay', 'bisexual', 'option_not_listed', 'prefer_not_to_say', 'lesbian', 'queer', 'asexual'","type":"string","options":{"dropdownOptions":[{"label":"Unknown","value":"unknown"},{"label":"Straight","value":"straight"},{"label":"Gay","value":"gay"},{"label":"Bisexual","value":"bisexual"},{"label":"Option Not Listed","value":"option_not_listed"},{"label":"Prefer Not To Say","value":"prefer_not_to_say"},{"label":"Lesbian","value":"lesbian"},{"label":"Queer","value":"queer"},{"label":"Asexual","value":"asexual"}]}},"ssn":{"id":"ssn","label":"SSN","description":"The Social Security number of the patient","type":"string"},"ethnicity":{"id":"ethnicity","label":"Ethnicity","description":"Possible values are 'No ethnicity specified', 'Hispanic or Latino', 'Not Hispanic or Latino', 'Declined to specify'.","type":"string","options":{"dropdownOptions":[{"label":"No Ethnicity Specified","value":"No ethnicity specified"},{"label":"Hispanic Or Latino","value":"Hispanic or Latino"},{"label":"Not Hispanic Or Latino","value":"Not Hispanic or Latino"},{"label":"Unknown","value":"Unknown"},{"label":"Declined To Specify","value":"Declined to specify"}]}},"race":{"id":"race","label":"Race","description":"Possible values are 'No race specified', 'American Indian or Alaska Native', 'Asian', 'Black or African American', 'Native Hawaiian or Other Pacific Islander', 'White', 'Declined to specify'.","type":"string","options":{"dropdownOptions":[{"label":"No Race Specified","value":"No race specified"},{"label":"American Indian Or Alaska Native","value":"American Indian or Alaska Native"},{"label":"Asian","value":"Asian"},{"label":"Black Or African American","value":"Black or African American"},{"label":"Native Hawaiian Or Other Pacific Islander","value":"Native Hawaiian or Other Pacific Islander"},{"label":"White","value":"White"},{"label":"Other","value":"Other"},{"label":"Declined To Specify","value":"Declined to specify"}]}},"preferredLanguage":{"id":"preferredLanguage","label":"Preferred language","description":"Full names e.g. 'English', 'Spanish' or 'French'.","type":"string"},"notes":{"id":"notes","label":"Notes","description":"Additional notes about the patient","type":"string"},"previousFirstName":{"id":"previousFirstName","label":"Previous first name","description":"The previous first name of the patient","type":"string"},"previousLastName":{"id":"previousLastName","label":"Previous last name","description":"The previous last name of the patient","type":"string"},"tags":{"id":"tags","label":"Tags","description":"The tags associated with the patient. Separate multiple tags with a comma (max 10 per patient).","type":"string"}},"previewable":true,"dataPoints":{"patientId":{"key":"patientId","valueType":"number"}}},"updatePatient":{"key":"updatePatient","title":"Update Patient","description":"Update a patient profile using Elation's patient API.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the patient in Elation","type":"numeric","required":true},"firstName":{"id":"firstName","label":"First Name","description":"","type":"string","required":false},"lastName":{"id":"lastName","label":"Last Name","description":"","type":"string","required":false},"dob":{"id":"dob","label":"Date of Birth","description":"YYYY-MM-DD","type":"date","required":false},"sex":{"id":"sex","label":"Sex","description":"Possible values are 'Male', 'Female', 'Other', 'Unknown'","type":"string","required":false},"primaryPhysicianId":{"id":"primaryPhysicianId","label":"Primary Physician ID","description":"The ID of the primary physician associated to the patient","type":"numeric","required":false},"caregiverPracticeId":{"id":"caregiverPracticeId","label":"Caregiver Practice ID","description":"","type":"numeric","required":false},"middleName":{"id":"middleName","label":"Middle Name","description":"","type":"string"},"actualName":{"id":"actualName","label":"Actual Name","description":"","type":"string"},"genderIdentity":{"id":"genderIdentity","label":"Gender identity","description":"Possible values are 'unknown', 'man', 'woman', 'transgender_man', 'transgender_woman', 'nonbinary', 'option_not_listed', 'prefer_not_to_say', 'two_spirit'","type":"string"},"legalGenderMarker":{"id":"legalGenderMarker","label":"Legal gender marker","description":"Possible values are 'M', 'F', 'X', 'U'","type":"string"},"pronouns":{"id":"pronouns","label":"Pronouns","description":"Possible values are 'he_him_his', 'she_her_hers', 'they_them_theirs', 'not_listed'","type":"string"},"sexualOrientation":{"id":"sexualOrientation","label":"Sexual orientation","description":"Possible values are 'unknown', 'straight', 'gay', 'bisexual', 'option_not_listed', 'prefer_not_to_say', 'lesbian', 'queer', 'asexual'","type":"string"},"ssn":{"id":"ssn","label":"SSN","description":"The Social Security number of the patient","type":"string"},"ethnicity":{"id":"ethnicity","label":"Ethnicity","description":"Possible values are 'No ethnicity specified', 'Hispanic or Latino', 'Not Hispanic or Latino', 'Declined to specify'.","type":"string"},"race":{"id":"race","label":"Race","description":"Possible values are 'No race specified', 'American Indian or Alaska Native', 'Asian', 'Black or African American', 'Native Hawaiian or Other Pacific Islander', 'White', 'Declined to specify'.","type":"string"},"preferredLanguage":{"id":"preferredLanguage","label":"Preferred language","description":"Full names e.g. 'English', 'Spanish' or 'French'.","type":"string"},"notes":{"id":"notes","label":"Notes","description":"Additional notes about the patient.","type":"string"},"previousFirstName":{"id":"previousFirstName","label":"Previous first name","description":"The previous first name of the patient","type":"string"},"previousLastName":{"id":"previousLastName","label":"Previous last name","description":"The previous last name of the patient","type":"string"},"status":{"id":"status","label":"Status","description":"The status of the patient (active, deceased, inactive, prospect)","type":"string"},"tags":{"id":"tags","label":"Tags","description":"The tags associated with the patient. Separate multiple tags with a comma (max 10 per patient).","type":"string"}},"previewable":true,"dataPoints":{}},"createAppointment":{"key":"createAppointment","title":"Create Appointment","description":"Create an appointment using Elation's scheduling API.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The patient to book the appointment for","type":"numeric","required":true},"scheduledDate":{"id":"scheduledDate","label":"Scheduled date","description":"Needs to be an ISO8601 string","type":"date","required":true},"reason":{"id":"reason","label":"Reason","description":"Should be one of the valid appointment types in Elation","type":"string","required":true},"physicianId":{"id":"physicianId","label":"Physician ID","description":"","type":"numeric","required":true},"practiceId":{"id":"practiceId","label":"Practice ID","description":"","type":"numeric","required":true},"duration":{"id":"duration","label":"Duration","description":"Number (in minutes). Must be a multiple of 5, the default duration is 15 minutes","type":"numeric"},"description":{"id":"description","label":"Description","description":"","type":"string"},"serviceLocationId":{"id":"serviceLocationId","label":"Service location ID","description":"","type":"numeric"},"telehealthDetails":{"id":"telehealthDetails","label":"Telehealth details","description":"","type":"string"}},"previewable":true,"dataPoints":{"appointmentId":{"key":"appointmentId","valueType":"number"}}},"getAppointment":{"key":"getAppointment","title":"Get Appointment","description":"Retrieve an appointment using Elation's scheduling API.","category":"EHR Integrations","fields":{"appointmentId":{"id":"appointmentId","label":"Appointment ID","description":"Provide the ID of the appointment you want to fetch the details of","type":"numeric","required":true}},"previewable":true,"supports_automated_retries":true,"dataPoints":{"scheduledDate":{"key":"scheduledDate","valueType":"date"},"reason":{"key":"reason","valueType":"string"},"patientId":{"key":"patientId","valueType":"number"},"physicianId":{"key":"physicianId","valueType":"number"},"practiceId":{"key":"practiceId","valueType":"number"},"duration":{"key":"duration","valueType":"number"},"description":{"key":"description","valueType":"string"},"serviceLocationId":{"key":"serviceLocationId","valueType":"number"},"telehealthDetails":{"key":"telehealthDetails","valueType":"string"},"status":{"key":"status","valueType":"json"},"statusString":{"key":"statusString","valueType":"string"},"appointment":{"key":"appointment","valueType":"json"}}},"findAppointments":{"key":"findAppointment","title":"Find Appointment","description":"Retrieve appointments for a given patient, physician, practice, and/or times","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","type":"numeric","description":"Patient ID","required":true},"physicianId":{"id":"physicianId","label":"Physician ID","type":"numeric","description":"Physician ID","required":false},"practiceId":{"id":"practiceId","label":"Practice ID","type":"numeric","description":"Practice ID","required":false},"from_date":{"id":"from_date","label":"From Date","type":"date","description":"Date from which to filter appointments","required":false},"to_date":{"id":"to_date","label":"To date","type":"date","description":"Date to which appointments are filtered","required":false},"event_type":{"id":"event_type","label":"Event Type","type":"string","description":"Event Type (`appointment` or leave empty)","required":false}},"previewable":true,"supports_automated_retries":true,"dataPoints":{"appointments":{"key":"appointments","valueType":"json"},"appointment_exists":{"key":"appointment_exists","valueType":"boolean"}}},"getPharmacy":{"key":"getPharmacy","title":"Get Pharmacy","description":"Retrieve a pharmacy profile using Elation's pharmacies API","category":"EHR Integrations","fields":{"ncpdpId":{"id":"ncpdpId","label":"NCPDP ID","description":"The NCPDP ID of the pharmacy","type":"string","required":true}},"previewable":true,"supports_automated_retries":true,"dataPoints":{"name":{"key":"name","valueType":"string"},"addressOne":{"key":"addressOne","valueType":"string"},"addressTwo":{"key":"addressTwo","valueType":"string"},"city":{"key":"city","valueType":"string"},"state":{"key":"state","valueType":"string"},"zip":{"key":"zip","valueType":"string"},"phone":{"key":"phone","valueType":"telephone"},"pharmacyObject":{"key":"pharmacyObject","valueType":"json"}}},"getPhysician":{"key":"getPhysician","title":"Get Physician","description":"Retrieve a physician using Elation's patient API.","category":"EHR Integrations","fields":{"physicianId":{"id":"physicianId","label":"Physician ID","type":"numeric","required":true,"description":""}},"previewable":true,"supports_automated_retries":true,"dataPoints":{"physicianFirstName":{"key":"physicianFirstName","valueType":"string"},"physicianLastName":{"key":"physicianLastName","valueType":"string"},"physicianCredentials":{"key":"physicianCredentials","valueType":"string"},"physicianEmail":{"key":"physicianEmail","valueType":"string"},"physicianNPI":{"key":"physicianNPI","valueType":"string"},"physicianUserId":{"key":"physicianUserId","valueType":"number"},"caregiverPracticeId":{"key":"caregiverPracticeId","valueType":"number"}}},"findPhysician":{"key":"findPhysician","title":"Find Physician","description":"Retrieve a physician using Elation's patient API.","category":"EHR Integrations","fields":{"firstName":{"id":"firstName","label":"First Name","description":"First Name to search for.","type":"string","required":false},"lastName":{"id":"lastName","label":"Last Name","description":"Last Name to search for.","type":"string","required":false},"npi":{"id":"npi","label":"NPI (National Provider Identifier)","description":"NPI to search for.","type":"string","required":false}},"previewable":true,"supports_automated_retries":true,"dataPoints":{"physicianId":{"key":"physicianId","valueType":"number"},"physicianFirstName":{"key":"physicianFirstName","valueType":"string"},"physicianLastName":{"key":"physicianLastName","valueType":"string"},"physicianCredentials":{"key":"physicianCredentials","valueType":"string"},"physicianEmail":{"key":"physicianEmail","valueType":"string"},"physicianNPI":{"key":"physicianNPI","valueType":"string"},"physicianUserId":{"key":"physicianUserId","valueType":"number"},"caregiverPracticeId":{"key":"caregiverPracticeId","valueType":"number"}}},"createNonVisitNote":{"key":"createNonVisitNote","title":"Create Non-Visit Note","description":"Create a Non-Visit Note using Elation's patient API.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"","type":"numeric","required":true},"authorId":{"id":"authorId","label":"Author","description":"The author of a note. Should be the ID of a User in Elation.","type":"numeric","required":true},"category":{"id":"category","label":"Category","description":"The Category of a note, defaults to \"Problem\". Read the extension documentation for the list of possible values.","type":"string","required":false},"tags":{"id":"tags","label":"Tags","description":"Comma-separated list of tags IDs","type":"string","required":false},"text":{"id":"text","label":"Text","description":"Text of a note","type":"text","required":true}},"previewable":true,"dataPoints":{"nonVisitNoteId":{"key":"nonVisitNoteId","valueType":"number"},"nonVisitNoteBulletId":{"key":"nonVisitNoteBulletId","valueType":"number"}}},"updateNonVisitNote":{"key":"updateNonVisitNote","title":"Update Non-Visit Note","description":"Update a Non-Visit Note using Elation's patient API.","category":"EHR Integrations","fields":{"nonVisitNoteId":{"id":"nonVisitNoteId","label":"Non-Visit Note ID","description":"ID of a note.","type":"numeric","required":true},"nonVisitNoteBulletId":{"id":"nonVisitNoteBulletId","label":"Non-Visit Note Bullet ID","description":"ID of a bullet in a note. Required when want to edit text, author or category of a note.","type":"numeric","required":false},"text":{"id":"text","label":"Text","description":"Text of a note. Required when \"Bullet ID\" is provided.","type":"text","required":false},"authorId":{"id":"authorId","label":"Author","description":"Author of a note. Should be ID of a User. Required when \"Bullet ID\" is provided.","type":"numeric","required":false},"patientId":{"id":"patientId","label":"Patient","description":"ID of a Patient","type":"numeric","required":false},"category":{"id":"category","label":"Category","description":"Category of a note. Defaults to \"Problem\". One from the list: \"Problem\", \"Past\", \"Family\", \"Social\", \"Instr\", \"PE\", \"ROS\", \"Med\", \"Data\", \"Assessment\", \"Test\", \"Tx\", \"Narrative\", \"Followup\", \"Reason\", \"Plan\", \"Objective\", \"Hpi\", \"Allergies\", \"Habits\", \"Assessplan\", \"Consultant\", \"Attending\", \"Dateprocedure\", \"Surgical\", \"Orders\", \"Referenced\", \"Procedure\".","type":"string","required":false},"practiceId":{"id":"practiceId","label":"Practice","description":"ID of a Practice.","type":"numeric","required":false},"documentDate":{"id":"documentDate","label":"Document Date","description":"Date in ISO 8601 format.","type":"date","required":false},"chartDate":{"id":"chartDate","label":"Chart Date","description":"Date in ISO 8601 format.","type":"date","required":false},"tags":{"id":"tags","label":"Tags","description":"Comma-separated list of tags IDs.","type":"string","required":false},"signed_by":{"id":"signed_by","label":"Signed by (user ID)","description":"⚠️ DEPRECATED - Please use the \"Sign non-visit note\" action to sign a non-visit note instead.","type":"numeric","required":false}},"previewable":true},"getNonVisitNote":{"key":"getNonVisitNote","title":"Get Non-Visit Note","description":"Get a Non-Visit Note using Elation's patient API.","category":"EHR Integrations","fields":{"nonVisitNoteId":{"id":"nonVisitNoteId","label":"Non-Visit Note ID","description":"ID of a note","type":"numeric","required":true}},"previewable":true,"supports_automated_retries":true,"dataPoints":{"text":{"key":"text","valueType":"string"},"authorId":{"key":"authorId","valueType":"number"},"patientId":{"key":"patientId","valueType":"number"},"practiceId":{"key":"practiceId","valueType":"number"},"documentDate":{"key":"documentDate","valueType":"date"},"chartDate":{"key":"chartDate","valueType":"date"},"tags":{"key":"tags","valueType":"string"}}},"deleteNonVisitNote":{"key":"deleteNonVisitNote","title":"Delete Non-Visit Note","description":"Delete a Non-Visit Note using Elation's patient API.","category":"EHR Integrations","fields":{"nonVisitNoteId":{"id":"nonVisitNoteId","label":"Non-Visit Note ID","description":"ID of the note to delete","type":"numeric","required":true}},"previewable":true},"createVisitNote":{"key":"createVisitNote","title":"Create Visit Note","description":"Create a visit note for a patient. This action will create a visit note in the patient chart.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"","type":"numeric","required":true},"template":{"id":"template","label":"Template","description":"Visit note template. Supports \"Complete H&P (1 col)\" and \"Simple\".","type":"string","required":true,"options":{"dropdownOptions":[{"label":"Complete H&P (1 col)","value":"Complete H&P (1 col)"},{"label":"Simple","value":"Simple"}]}},"category":{"id":"category","label":"Category","description":"Bullet category. Supports \"ROS\" and \"Narrative\".","type":"string","required":true,"options":{"dropdownOptions":[{"label":"ROS","value":"ROS"},{"label":"Narrative","value":"Narrative"}]}},"physicianId":{"id":"physicianId","label":"Physician ID","description":"Prescribing physician ID","type":"numeric","required":true},"authorId":{"id":"authorId","label":"Author","description":"The author of a note. Should be the ID of a User in Elation.","type":"numeric","required":true},"text":{"id":"text","label":"Text","description":"Text of a note","type":"text","required":true},"type":{"id":"type","label":"Type","description":"Type of visit note. Defaults to Office Visit Note.","type":"string","required":false},"confidential":{"id":"confidential","label":"Confidential","description":"Whether this note is confidential to the practice and shouldn`t be shared automatically with third parties. Defaults to false.","type":"boolean","required":false}},"previewable":true,"dataPoints":{"visitNoteId":{"key":"visitNoteId","valueType":"number"}}},"addVitals":{"key":"addVitals","title":"Add Vitals","description":"Add vitals for the patient","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The patient for whom the the history is being created","type":"numeric","required":true},"practiceId":{"id":"practiceId","label":"Practice ID","description":"Practice ID where the vitas are beind measured for the patient","type":"numeric","required":true},"visitNoteId":{"id":"visitNoteId","label":"Visit Note ID","description":"When provided, the vitals will be attached to the visit note. Note that vitals can only be attached to unsigned visit notes.","type":"numeric","required":false},"nonVisitNoteId":{"id":"nonVisitNoteId","label":"Non-Visit Note ID","description":"When provided, the vitals will be attached to the non-visit note. Note that vitals can only be attached to unsigned non-visit notes.","type":"numeric","required":false},"bmi":{"id":"bmi","label":"BMI","description":"Body Mass Index; optional and calculated if height and weight are available","type":"numeric","required":false},"height":{"id":"height","label":"Height","description":"Patient height in inches","type":"numeric","required":false},"heightNote":{"id":"heightNote","label":"Height Note","description":"","type":"string","required":false},"weight":{"id":"weight","label":"Weight","description":"Patient weight in lbs","type":"numeric","required":false},"weightNote":{"id":"weightNote","label":"Weight Note","description":"","type":"string","required":false},"oxygen":{"id":"oxygen","label":"Oxygen","description":"Oxygen","type":"numeric","required":false},"oxygenNote":{"id":"oxygenNote","label":"Oxygen Note","description":"","type":"string","required":false},"rr":{"id":"rr","label":"Respiratory Rate (rr)","description":"Respiratory rate","type":"numeric","required":false},"rrNote":{"id":"rrNote","label":"Respiratory Rate Note","description":"","type":"string","required":false},"hr":{"id":"hr","label":"Heart Rate (hr)","description":"Heart rate","type":"numeric","required":false},"hrNote":{"id":"hrNote","label":"Heart Rate Note","description":"","type":"string","required":false},"hc":{"id":"hc","label":"Head Circumference (hc)","description":"Head circumference","type":"numeric","required":false},"hcNote":{"id":"hcNote","label":"Head Circumference Note","description":"","type":"string","required":false},"temperature":{"id":"temperature","label":"Temperature","description":"Temperature","type":"numeric","required":false},"temperatureNote":{"id":"temperatureNote","label":"Temperature Note","description":"","type":"string","required":false},"bp":{"id":"bp","label":"Blood Pressure (bp)","description":"Blood pressure","type":"numeric","required":false},"bpNote":{"id":"bpNote","label":"Blood Pressure Note","description":"","type":"string","required":false},"bodyfat":{"id":"bodyfat","label":"Body Fat","description":"Body fat percentage","type":"numeric","required":false},"bodyfatNote":{"id":"bodyfatNote","label":"Body Fat Note","description":"","type":"string","required":false},"dlm":{"id":"dlm","label":"Dry Lean Mass (dlm)","description":"Dry lean mass","type":"numeric","required":false},"dlmNote":{"id":"dlmNote","label":"Dry Lean Mass Note","description":"","type":"string","required":false},"bfm":{"id":"bfm","label":"Body Fat Mass (bfm)","description":"Body fat mass","type":"numeric","required":false},"bfmNote":{"id":"bfmNote","label":"Body Fat Mass Note","description":"","type":"string","required":false},"wc":{"id":"wc","label":"Waist Circumference (wc)","description":"Waist circumference","type":"numeric","required":false},"wcNote":{"id":"wcNote","label":"Waist Circumference Note","description":"","type":"string","required":false}},"previewable":true,"dataPoints":{"vitalsId":{"key":"vitalsId","valueType":"number"}}},"addHistory":{"key":"addHistory","title":"Add History","description":"Add history item on Elation's patient page","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The patient for whom the the history is being created","type":"numeric","required":true},"type":{"id":"type","label":"Type","description":"The type of history being created. Supported values: Past, Family, Social, Habits, Diet, Exercise, Immunization, Legal, Consultation, Health Maintenance, Past Surgical, Cognitive Status, Functional Status","type":"string","required":true,"options":{"dropdownOptions":[{"label":"Past","value":"Past"},{"label":"Family","value":"Family"},{"label":"Social","value":"Social"},{"label":"Habits","value":"Habits"},{"label":"Diet","value":"Diet"},{"label":"Exercise","value":"Exercise"},{"label":"Immunization","value":"Immunization"},{"label":"Legal","value":"Legal"},{"label":"Consultation","value":"Consultation"},{"label":"Health Maintenance","value":"Health Maintenance"},{"label":"Past Surgical","value":"Past Surgical"},{"label":"Cognitive Status","value":"Cognitive Status"},{"label":"Functional Status","value":"Functional Status"}]}},"text":{"id":"text","label":"Text","description":"The text of the history being created","type":"string","required":true}},"previewable":true},"addAllergy":{"key":"addAllergy","title":"Add Allergy","description":"Adds allergy to the patient profile. If allergy.name is NKDA, we will document a structured NKDA in the patient chart instead of creating a patient allergy called \"NKDA\"","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the patient for whom the lab order is being created.","type":"numeric","required":true},"name":{"id":"name","label":"Name","description":"The name of the allergy drug","type":"string","required":true},"startDate":{"id":"startDate","label":"Start Date","description":"The date the allergy started (defaults to today)","type":"date","required":false},"reaction":{"id":"reaction","label":"Reaction","description":"The reaction to the drug","type":"string","required":false},"severity":{"id":"severity","label":"Severity","description":"How severe the reaction is","type":"string","required":false}},"previewable":true,"dataPoints":{"allergyId":{"key":"allergyId","valueType":"number"}}},"postLetter":{"key":"postLetter","title":"Post letter","description":"Post a letter using Elation's patient API.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"ID of the patient","type":"numeric","required":true},"practiceId":{"id":"practiceId","label":"Practice","description":"ID of a Practice","type":"numeric","required":true},"referralOrderId":{"id":"referralOrderId","label":"Referral Order ID","description":"Id of the Referral Order (Not needed with subject)","type":"numeric","required":false},"subject":{"id":"subject","label":"Subject","description":"Subject of the letter (Not needed with referral order)","type":"string","required":false},"body":{"id":"body","label":"Body","description":"Body of the letter","type":"text","required":true},"contactNpi":{"id":"contactNpi","label":"Contact NPI code","description":"NPI of the contact whom you want to send this letter","type":"string","required":true},"letterType":{"id":"letterType","label":"Type of letter","description":"Type of letter. Defaults to \"provider\". The type can be one of the following: \"patient\", \"referral\", \"provider\" or \"patient_initiated\".","type":"string","required":false}},"previewable":true,"dataPoints":{"letterId":{"key":"letterId","valueType":"number"}}},"createLabOrder":{"key":"createLabOrder","title":"Create lab order","description":"A lab order represents an order for a patient to perform some lab tests for a vendor.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the patient for whom the lab order is being created.","type":"numeric","required":true},"practiceId":{"id":"practiceId","label":"Practice","description":"The ID of the practice for which the lab order is being created.","type":"numeric","required":true},"documentDate":{"id":"documentDate","label":"Document Date","description":"The date and time of the lab order document.","type":"date","required":true},"orderingPhysicianId":{"id":"orderingPhysicianId","label":"Ordering Physician ID","description":"The ID of the physician who is creating the order.","type":"numeric","required":true},"vendorId":{"id":"vendorId","label":"Vendor ID","description":"The ID of the vendor (or Lab) associated with the lab order.","type":"numeric","required":false},"content":{"id":"content","label":"Content","description":"Represents the content of the lab order report. Should be in JSON format. See https://docs.elationhealth.com/reference/the-lab-order-content-object","type":"json","required":false},"siteId":{"id":"siteId","label":"Site ID","description":"The location where the patient will have the lab performed. Sites are specific to their lab vendor","type":"numeric","required":false},"confidential":{"id":"confidential","label":"Confidential","description":"Defaults to false. Whether the provider has marked the order as confidential. Should not be shared with a patient.","type":"boolean","required":false}},"previewable":true,"dataPoints":{"labOrderId":{"key":"labOrderId","valueType":"number"},"printableLabOrderView":{"key":"printableLabOrderView","valueType":"string"}}},"createMessageThread":{"key":"createMessageThread","title":"Create Message Thread","description":"Create a message thread in Elation's messaging system.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The patient for which the thread is about","type":"numeric","required":true},"senderId":{"id":"senderId","label":"Sender ID","description":"The ID of the user initiating the message thread","type":"numeric","required":true},"practiceId":{"id":"practiceId","label":"Practice ID","description":"The practice associated with the patient chart","type":"numeric","required":true},"documentDate":{"id":"documentDate","label":"Document Date","description":"Defaults to today’s date if not provided","type":"date","required":false},"chartDate":{"id":"chartDate","label":"Chart Date","description":"Defaults to today’s date if not provided","type":"date","required":false},"messageBody":{"id":"messageBody","label":"Message Body","description":"The content of the initial message in the thread","type":"text","required":true},"recipientId":{"id":"recipientId","label":"Recipient ID","description":"A user ID of the recipient of the message. They will be added as a member to the thread.","type":"numeric","required":false},"groupId":{"id":"groupId","label":"Group ID","description":"The ID of a group that will be added as a member to the thread.","type":"numeric","required":false},"isUrgent":{"id":"isUrgent","label":"Urgent","description":"Marks the message thread as urgent if true. Defaults to false.","type":"boolean","required":false}},"previewable":true,"dataPoints":{"messageThreadId":{"key":"messageThreadId","valueType":"number"}}},"addMessageToThread":{"key":"addMessageToThread","title":"Add Message to an existing thread","description":"Adds a message to an existing thread in Elation","category":"EHR Integrations","fields":{"threadId":{"id":"threadId","label":"Thread ID","description":"The ID of the message thread to which the message will be added","type":"numeric","required":true},"senderId":{"id":"senderId","label":"Sender ID","description":"The ID of the user that adds the message to the thread","type":"numeric","required":true},"messageBody":{"id":"messageBody","label":"Message Body","description":"The content of the message to be added to the thread","type":"text","required":true}},"previewable":true,"dataPoints":{"messageId":{"key":"messageId","valueType":"number"}}},"getLetter":{"key":"getLetter","title":"Get letter","description":"Retrieve a letter from Elation.","category":"EHR Integrations","fields":{"letterId":{"id":"letterId","label":"Letter ID","type":"numeric","required":true,"description":""}},"previewable":true,"supports_automated_retries":true,"dataPoints":{"body":{"key":"body","valueType":"string"},"signedBy":{"key":"signedBy","valueType":"number"}}},"createReferralOrder":{"key":"createReferralOrder","title":"Create referral order","description":"Create a referral order in Elation.","category":"EHR Integrations","fields":{"patient":{"id":"patient","label":"Patient ID","type":"numeric","required":true,"description":""},"practice":{"id":"practice","label":"Practice ID","type":"numeric","required":true,"description":""},"contact_name":{"id":"contact_name","label":"Contact name","type":"string","required":true,"description":""},"body":{"id":"body","label":"Body","type":"text","required":true,"description":""},"authorization_for":{"id":"authorization_for","label":"Authorization for","type":"string","required":true,"description":"","options":{"dropdownOptions":[{"label":"Referral For Treatment, includes Consult Visit","value":"Referral For Treatment, includes Consult Visit"},{"label":"Procedure / Testing Only","value":"Procedure / Testing Only"},{"label":"Consult (One Visit Only)","value":"Consult (One Visit Only)"}]}},"consultant_name":{"id":"consultant_name","label":"Consultant name","type":"string","required":true,"description":""},"specialty":{"id":"specialty","label":"Specialty","type":"string","required":false,"description":""}},"previewable":true,"dataPoints":{"id":{"key":"id","valueType":"number"}}},"createCareGap":{"key":"createCareGap","title":"Create care gap","description":"Create a care gap in Elation.","category":"EHR Integrations","fields":{"quality_program":{"id":"quality_program","label":"Quality Program","type":"string","required":true,"description":""},"definition_id":{"id":"definition_id","label":"Definition ID","type":"string","required":true,"description":""},"patient_id":{"id":"patient_id","label":"Patient ID","type":"string","required":true,"description":""},"practice_id":{"id":"practice_id","label":"Practice ID","type":"string","required":true,"description":""},"created_date":{"id":"created_date","label":"Created date","type":"date","required":true,"description":""},"status":{"id":"status","label":"Status","type":"string","required":true,"description":"","options":{"dropdownOptions":[{"label":"Open","value":"open"},{"label":"Closed","value":"closed"}]}},"detail":{"id":"detail","label":"Detail","type":"text","required":false,"description":""}},"previewable":true,"dataPoints":{"id":{"key":"id","valueType":"string"}}},"closeCareGap":{"key":"closeCareGap","title":"Close care gap","description":"Close a care gap in Elation.","category":"EHR Integrations","fields":{"quality_program":{"id":"quality_program","label":"Quality Program","type":"string","required":true,"description":""},"caregap_id":{"id":"caregap_id","label":"Care Gap ID","type":"string","required":true,"description":""}},"previewable":true,"dataPoints":{}},"updatePatientTags":{"key":"updatePatientTags","title":"✨ Update Patient Tags","description":"Update patient tags in Elation.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Elation patient ID","type":"numeric","required":true,"description":""},"instructions":{"id":"instructions","label":"Specify tags to add, remove, or modify","type":"text","required":true,"description":"Provide clear instructions for tag changes and relevant context, especially for uncommon tags. Specify new tags in single quotes (e.g., 'Patient-Tag')."}},"previewable":true,"dataPoints":{"updatedTags":{"key":"updatedTags","valueType":"string"},"explanation":{"key":"explanation","valueType":"string"}}},"checkPatientTags":{"key":"checkPatientTags","title":"✨ Check Patient Tags","description":"Verify if patient tags in Elation match the given instruction.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Elation patient ID","type":"numeric","required":true,"description":""},"instructions":{"id":"instructions","label":"Instructions for checking tags","type":"text","required":true,"description":"Provide clear instructions for checking presence of absence of tags. For example: \"Check if the patient has the tag 'Eligible'\" or \"Make sure the patient has tag 'A' but does not have tag 'B'\""}},"previewable":true,"supports_automated_retries":true,"dataPoints":{"tagsFound":{"key":"tagsFound","valueType":"boolean"},"explanation":{"key":"explanation","valueType":"string"}}},"getReferralOrder":{"key":"getReferralOrder","title":"Get referral order","description":"Retrieve a referral order from Elation.","category":"EHR Integrations","fields":{"referralOrderId":{"id":"referralOrderId","label":"Referral Order ID","type":"numeric","required":true,"description":""}},"previewable":true,"supports_automated_retries":true,"dataPoints":{"letterId":{"key":"letterId","valueType":"string"},"patientId":{"key":"patientId","valueType":"number"},"consultantName":{"key":"consultantName","valueType":"string"},"practice":{"key":"practice","valueType":"number"},"diagnosisCodes":{"key":"diagnosisCodes","valueType":"strings_array"},"diagnosisLabels":{"key":"diagnosisLabels","valueType":"strings_array"}}},"findFutureAppointment":{"key":"findFutureAppointment","title":"✨ Find Future Appointment","description":"Find a future appointment in Elation.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Elation patient ID","type":"numeric","required":true,"description":""},"prompt":{"id":"prompt","label":"Describe what appointment you would like to find","type":"text","required":true,"description":""}},"previewable":true,"supports_automated_retries":true,"dataPoints":{"appointment":{"key":"appointment","valueType":"json"},"appointmentExists":{"key":"appointmentExists","valueType":"boolean"},"explanation":{"key":"explanation","valueType":"string"}}},"findAppointmentsWithAI":{"key":"findAppointmentsWithAI","title":"✨ Find Appointments","description":"Find all appointments for a patient using natural language.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Elation patient ID","type":"numeric","required":true,"description":""},"prompt":{"id":"prompt","label":"Describe the appointments to search for","type":"text","required":true,"description":"Provide clear instructions about what appointments you want to find. You can search by appointment type (e.g. \"Find all PCP visits\"), status (e.g., \"Find scheduled appointments\"), or other criteria. Be as specific as possible for best results."}},"previewable":true,"supports_automated_retries":true,"dataPoints":{"appointments":{"key":"appointments","valueType":"json"},"explanation":{"key":"explanation","valueType":"string"},"appointmentsFound":{"key":"appointmentsFound","valueType":"boolean"},"appointmentCountsByStatus":{"key":"appointmentCountsByStatus","valueType":"json"}}},"signNonVisitNote":{"key":"signNonVisitNote","title":"Sign non-visit note","description":"Sign a non-visit note in Elation.","category":"EHR Integrations","fields":{"nonVisitNoteId":{"id":"nonVisitNoteId","label":"Non-Visit Note ID","type":"numeric","required":true,"description":""},"signedBy":{"id":"signedBy","label":"Signed by","description":"The ID of a physician or office staff who signs the note. Note: it has to be a physician ID, or an office staff ID, not a user ID.","type":"numeric","required":true}},"previewable":true,"dataPoints":{}},"signVisitNote":{"key":"signVisitNote","title":"Sign visit note","description":"Sign a visit note in Elation.","category":"EHR Integrations","fields":{"visitNoteId":{"id":"visitNoteId","label":"Visit Note ID","type":"numeric","required":true,"description":""},"signedBy":{"id":"signedBy","label":"Signed by","description":"The ID of a physician or office staff who signs the note. Note: it has to be a physician ID, or an office staff ID, not a user ID.","type":"numeric","required":true}},"previewable":true,"dataPoints":{}},"updateReferralOrderResolution":{"key":"updateReferralOrderResolution","title":"Update referral order resolution","description":"Update the resolution of a referral order in Elation.","category":"EHR Integrations","fields":{"referralOrderId":{"id":"referralOrderId","label":"Referral Order ID","type":"numeric","required":true},"resolutionState":{"id":"resolutionState","label":"Resolution state","type":"string","required":true,"options":{"dropdownOptions":[{"label":"Outstanding","value":"outstanding"},{"label":"Fulfilled","value":"fulfilled"},{"label":"Cancelled","value":"cancelled"}]}},"resolvingDocument":{"id":"resolvingDocument","label":"Resolving document","type":"numeric","required":true,"description":"The ID of the document that resolves the referral order. Can be f.e. a reference to a non-visit note. Required if the resolution state is \"fulfilled\"."}},"previewable":true,"dataPoints":{}},"cancelAppointments":{"key":"cancelAppointments","title":"✨ Cancel Appointments","description":"Cancel appointments for a patient using natural language.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Elation patient ID","type":"numeric","required":true,"description":"The Elation patient ID of the patient you want to cancel appointments for."},"prompt":{"id":"prompt","label":"Describe the appointments you would like to cancel","type":"text","required":true,"description":"Provide clear instructions about what appointments you want to cancel. You can search by appointment type (e.g., \"Find all PCP visits\"), status (e.g., \"Find scheduled appointments\"), or other criteria. Be as specific as possible for best results."}},"previewable":true,"dataPoints":{"cancelledAppointments":{"key":"cancelledAppointments","valueType":"json"},"explanation":{"key":"explanation","valueType":"string"}}}},"webhooks":[{"key":"patientCreatedOrUpdated","dataPoints":{"patientId":{"key":"patientId","valueType":"number"},"patient":{"key":"patient","valueType":"json"}}},{"key":"appointmentCreatedOrUpdated","dataPoints":{"appointmentId":{"key":"appointmentId","valueType":"number"},"appointment":{"key":"appointment","valueType":"json"}}}],"description":"Elation is a clinical-first EHR and patient engagement tool. It's designed for the craft of primary care medicine.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1680683235/Awell%20Extensions/elation_favicon.png","title":"Elation","category":"EHR Integrations","author":{"authorType":"Awell"},"settings":{"base_url":{"key":"base_url","label":"Base URL","obfuscated":false,"description":"The base URL of Elation API.","required":true},"auth_url":{"key":"auth_url","label":"Authorization URL","obfuscated":false,"description":"The complete URL of Elation authentication endpoint.","required":true},"client_id":{"key":"client_id","label":"Client ID","obfuscated":false,"description":"The client ID for OAuth2 Password authentication.","required":true},"client_secret":{"key":"client_secret","label":"Client Secret","obfuscated":true,"description":"The client secret for OAuth2 Password authentication.","required":true},"username":{"key":"username","label":"Username","obfuscated":false,"description":"⚠️ Deprecated: Elation now uses client credentials authentication. This setting is no longer required and should be removed from your settings.","required":false},"password":{"key":"password","label":"Password","obfuscated":true,"description":"⚠️ Deprecated: Elation now uses client credentials authentication. This setting is no longer required and should be removed from your settings.","required":false},"rateLimitDuration":{"key":"rateLimitDuration","label":"Rate Limit Duration","obfuscated":false,"description":"Rate limit Elation webhooks at a certain duration (e.g. only 1 event for a given appointment_id every '30 s', '1 m', '12 h', '30 d'). Value should be {number} {unit}.","required":false}},"identifier":{"system":"https://www.elationhealth.com/"},"timers":[{"type":"resource_updated","key":"lab_order.signed","action_key":"createLabOrder","description":"Wait for lab order to be signed","resource_id":{"type":"extension_data_point","key":"labOrderId"}}]},{"key":"epic","htmlDocs":"<hr />\n<p>title: Epic</p>\n<h2 id=\"descriptionepicisanelectronichealthrecordsehrsystemforhealthcareorganizationshospitalsandlargepractices\">description: Epic is an Electronic Health Records (EHR) system for healthcare organizations, hospitals and large practices.</h2>\n<h1 id=\"epic\">Epic</h1>\n<p>Epic is an Electronic Health Records (EHR) system for healthcare organizations, hospitals and large practices.</p>\n<h2 id=\"introduction\">Introduction</h2>\n<h3 id=\"integrationlandscape\">Integration landscape</h3>\n<p>Epic provides a comprehensive range of interfaces for integration. We've grouped them into four key categories:</p>\n<ol>\n<li><strong>Read</strong>: Retrieve data from Epic (e.g., patient demographics).  </li>\n<li><strong>Write</strong>: Send data to Epic (e.g., create a patient, create a document).  </li>\n<li><strong>Subscriptions/Events</strong>: Subscribe to events in Epic.  </li>\n<li><strong>Embedded Apps</strong>: Embed applications within Epic, SSO launch, and more (typically via SMART-on-FHIR).  </li>\n</ol>\n<p>Each category offers multiple interfaces tailored to specific workflows and use cases.</p>\n<p>We seamlessly integrates with Epic across all categories using industry-standard protocols like HL7, FHIR, and proprietary APIs. We prioritize trust and flexibility, supporting both REST and non-REST interfaces to meet your organization's needs.</p>\n<h3 id=\"theepicextension\">The Epic extension</h3>\n<p>The <strong>Epic Extension</strong> is designed to support <strong>Read</strong> and <strong>Write</strong> integrations via <a href=\"https://fhir.epic.com/Documentation?docId=oauth2&section=BackendOAuth2Guide\">SMART Backend Services</a>. These integrations are server-to-server (backend) and do not require direct user interaction—whether from patients or practitioners.</p>\n<p>The extension supports a variety of REST-based interfaces, including:</p>\n<ul>\n<li>Vendor Services API</li>\n<li>FHIR R4</li>\n<li>FHIR DSTU2</li>\n<li>FHIR STU3</li>\n</ul>\n<p>In addition to REST interfaces, Epic also supports non-REST standards like HL7, enabling tasks such as querying patient demographics (ADR A19) or creating documents (ORU messages). <strong>Awell supports these non-REST standards as well.</strong> However, the Epic Extension focuses specifically on REST-based interfaces.</p>\n<h2 id=\"setup\">Setup</h2>\n<p>To set up the Epic Extension in Awell, you’ll need to configure the following:</p>\n<ul>\n<li><strong>Base URL</strong>: The Epic instance's base URL (e.g., <code>https://fhir.epic.com/interconnect-fhir-oauth/api/</code>).  </li>\n<li><strong>Auth URL</strong>: The URL for obtaining access tokens (e.g., <code>https://fhir.epic.com/interconnect-fhir-oauth/oauth2/token</code>).  </li>\n<li><strong>Client ID</strong>: The client ID of Awell’s registered Epic application.  </li>\n<li><strong>Private Key</strong>: The private key for the application, formatted as a single string with new lines explicitly indicated by <code>\\n</code>.</li>\n</ul>\n<p><strong>Example of Private Key Format</strong>:\n<code>-----BEGIN PRIVATE KEY-----\\naaaaaaa\\nbbbbb\\n-----END PRIVATE KEY-----</code></p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"getpatientr4\">Get patient (R4)</h3>\n<p>Retrieve a patient’s details using their FHIR resource ID. This action returns the full FHIR Patient resource.</p>\n<h3 id=\"matchpatientr4\">Match patient (R4)</h3>\n<p>Find a patient using demographic data. The action returns a matching Patient resource <strong>only if a single high-confidence match is found</strong>.  </p>\n<ul>\n<li>If multiple high-confidence matches or no matches are found, the action fails.  </li>\n<li>This uses the <code>Patient.$match</code> (R4) operation, recommended for backend-to-backend integrations (learn more: <a href=\"https://fhir.epic.com/Sandbox?api=10423\">Epic Documentation</a>).</li>\n</ul>\n<p>The action will return the FHIR resource ID of the matched patient.</p>\n<h3 id=\"createpatientr4\">Create patient (R4)</h3>\n<p>Add a new patient to Epic using demographic information. Required fields include:  </p>\n<ul>\n<li>SSN</li>\n<li>Given name</li>\n<li>Family name</li>\n<li>Gender</li>\n<li>Birth date</li>\n</ul>\n<p>While optional, including an email address is highly recommended to improve accuracy when matching patients in the future.  </p>\n<p>The action will return the FHIR resource ID of the created patient.</p>\n<h3 id=\"getappointment\">Get appointment</h3>\n<p>Retrieve details of a specific appointment using its FHIR resource ID. The action returns the full FHIR Appointment resource.</p>\n<h3 id=\"createclinicalnoter4\">Create clinical note (R4)</h3>\n<p>Create a clinical document in Epic. Required fields include:</p>\n<ul>\n<li><strong>Patient resource ID</strong>: The patient’s FHIR resource ID.  </li>\n<li><strong>Encounter resource ID</strong>: The related encounter’s FHIR resource ID (currently required; <a href=\"https://fhir.epic.com/Sandbox?api=1046\">Pre-Charting support is coming February 2025</a>).  </li>\n<li><strong>Document status</strong>: The status of the document.  </li>\n<li><strong>Document type</strong>: The type of the document.  </li>\n<li><strong>Document content</strong>: The content of the document.  </li>\n</ul>\n<p>The action will return the FHIR resource ID of the created document.</p>\n<h3 id=\"findpatientbymrnr4\">Find patient by MRN (R4)</h3>\n<p>Leverages the <code>Patient.search</code> (R4) operation to find a patient by their MRN. The action will return the FHIR resource ID of the patient.</p>","changelog":"<h1 id=\"epicchangelog\">Epic changelog</h1>","actions":{"getPatient":{"key":"getPatient","title":"Get patient","description":"Retrieve patient details from Epic","category":"EHR Integrations","fields":{"resourceId":{"id":"resourceId","label":"Patient resource ID","description":"The resource ID of the patient","type":"string","required":true}},"previewable":true,"dataPoints":{"patient":{"key":"patient","valueType":"json"},"officialGivenName":{"key":"officialGiveName","valueType":"string"},"officialFamilyName":{"key":"officialFamilyName","valueType":"string"},"birthDate":{"key":"birthDate","valueType":"date"}}},"getAppointment":{"key":"getAppointment","title":"Get appointment","description":"Retrieve appointment details from Epic","category":"EHR Integrations","fields":{"resourceId":{"id":"resourceId","label":"Patient resource ID","description":"The resource ID of the patient","type":"string","required":true}},"previewable":true,"dataPoints":{"appointment":{"key":"appointment","valueType":"json"},"patientId":{"key":"patientId","valueType":"string"},"appointmentStatus":{"key":"appointmentStatus","valueType":"string"},"appointmentStartDateTime":{"key":"appointmentStartDateTime","valueType":"date"},"appointmentTypeCode":{"key":"appointmentTypeCode","valueType":"string"}}},"createPatient":{"key":"createPatient","title":"Create patient","description":"Create a patient in Epic","category":"EHR Integrations","fields":{"ssn":{"id":"ssn","label":"SSN","type":"string","description":"The patient’s Social Security Number.","required":true},"familyName":{"id":"familyName","label":"Family name","type":"string","description":"The patient’s family (last) name.","required":true},"givenName":{"id":"givenName","label":"Given name","type":"string","description":"The patient's given name. May include first and middle names.","required":true},"birthDate":{"id":"birthDate","label":"Birth date","type":"date","required":true},"gender":{"id":"gender","label":"Gender","type":"string","required":true,"options":{"dropdownOptions":[{"value":"male","label":"Male"},{"value":"female","label":"Female"},{"value":"other","label":"Other"},{"value":"unknown","label":"Unknown"}]}},"email":{"id":"email","label":"Email","type":"string","required":false}},"previewable":true,"dataPoints":{"resourceId":{"key":"resourceId","valueType":"string"}}},"createClinicalNote":{"key":"createClinicalNote","title":"Create clinical note","description":"Create a clinical note in Epic","category":"EHR Integrations","fields":{"patientResourceId":{"id":"patientResourceId","label":"Patient resource ID","type":"string","description":"The patient’s FHIR resource ID.","required":true},"encounterResourceId":{"id":"encounterResourceId","label":"Encounter resource ID","description":"The FHIR resource ID of the related encounter.","type":"string","required":true},"status":{"id":"status","label":"Document status","type":"string","required":true,"options":{"dropdownOptions":[{"value":"final","label":"Final"},{"value":"preliminary","label":"Preliminary"}]}},"type":{"id":"type","label":"Document type","type":"string","required":true,"options":{"dropdownOptions":[{"value":"Progress Note","label":"Progress Note"},{"value":"Consult Note","label":"Consult Note"},{"value":"Procedure Note","label":"Procedure Note"},{"value":"H&P Note","label":"H P Note"},{"value":"Discharge Summary","label":"Discharge Summary"},{"value":"ED Note","label":"ED Note"},{"value":"Patient Instructions","label":"Patient Instructions"},{"value":"Nursing Note","label":"Nursing Note"}]}},"note":{"id":"note","label":"Note","type":"text","required":true}},"previewable":true,"dataPoints":{"resourceId":{"key":"resourceId","valueType":"string"}}},"matchPatient":{"key":"matchPatient","title":"Match patient","description":"Match patient to existing patient in Epic","category":"EHR Integrations","fields":{"familyName":{"id":"familyName","label":"Family name","type":"string","description":"The patient’s family (last) name.","required":true},"givenName":{"id":"givenName","label":"Given name","type":"string","description":"The patient's given name. May include first and middle names.","required":true},"birthDate":{"id":"birthDate","label":"Birth date","type":"date","required":true},"gender":{"id":"gender","label":"Gender","type":"string","required":true,"options":{"dropdownOptions":[{"value":"male","label":"Male"},{"value":"female","label":"Female"},{"value":"other","label":"Other"},{"value":"unknown","label":"Unknown"}]}},"email":{"id":"email","label":"Email","type":"string","required":true}},"previewable":true,"dataPoints":{"resourceId":{"key":"resourceId","valueType":"string"}}},"findPatientByMRN":{"key":"findPatientByMRN","title":"Find patient by MRN","description":"Find patient by MRN in Epic","category":"EHR Integrations","fields":{"MRN":{"id":"MRN","label":"Medical Record Number (MRN)","type":"string","description":"","required":true}},"previewable":true,"dataPoints":{"resourceId":{"key":"resourceId","valueType":"string"}}},"getClinicalNote":{"key":"getClinicalNote","title":"Get clinical note","description":"Retrieve clinical note details from Epic","category":"EHR Integrations","fields":{"resourceId":{"id":"resourceId","label":"Document reference resource ID","description":"Document reference resource ID of the clinical note","type":"string","required":true}},"previewable":true,"dataPoints":{"documentReference":{"key":"documentReference","valueType":"json"},"binaryContentHtml":{"key":"binaryContentHtml","valueType":"string"},"binaryContentRtf":{"key":"binaryContentRtf","valueType":"string"}}}},"webhooks":[],"description":"Epic is an Electronic Health Records (EHR) system for healthcare organizations, hospitals and large practices.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1736327686/Awell%20Extensions/epiclogo_2_1.webp","title":"Epic","category":"EHR Integrations","author":{"authorType":"Awell"},"settings":{"baseUrl":{"key":"baseUrl","label":"Base URL","required":true,"obfuscated":false,"description":"The base URL for the Epic API, e.g. https://fhir.epic.com/interconnect-fhir-oauth/api"},"authUrl":{"key":"authUrl","label":"Auth URL","required":true,"obfuscated":false,"description":"The auth URL for the Epic API, e.g. https://fhir.epic.com/interconnect-fhir-oauth/oauth2/token"},"clientId":{"key":"clientId","label":"Client ID","required":true,"obfuscated":false,"description":"The client ID of the Epic app used to authenticate."},"privateKey":{"key":"privateKey","label":"Private Key","required":true,"obfuscated":true,"description":"The private key of the Epic app used to authenticate."},"kid":{"key":"kid","label":"KID","required":false,"obfuscated":false,"description":"For apps using JSON Web Key Sets (including dynamically registed clients), set this value to the kid of the target public key from your key set"},"jku":{"key":"jku","label":"JKU","required":false,"obfuscated":false,"description":"For apps using JSON Web Key Set URLs, optionally set this value to the URL you registered on your application"}}},{"key":"experimental","htmlDocs":"<hr />\n<p>title: Experimental extension</p>\n<h2 id=\"descriptionextensionforexperimentalpurposes\">description: Extension for experimental purposes</h2>\n<h1 id=\"experimentalextension\">Experimental extension</h1>","changelog":"<h1 id=\"changelog\">Changelog</h1>","actions":{"requestVideoVisit":{"key":"requestVideoVisit","title":"Request video visit","description":"Allow user to choose between requesting a video visit or simply continue","category":"Workflow","fields":{"deepLink":{"id":"deepLink","label":"Deep link","description":"Insert a deep link for testing","type":"string","required":false}},"dataPoints":{"requestVideoVisit":{"key":"requestVideoVisit","valueType":"boolean"}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}},"previewable":false},"wait":{"key":"wait","title":"Wait","description":"Wait n number of seconds before completing","category":"Workflow","fields":{"seconds":{"id":"seconds","label":"Seconds","description":"Number of seconds to wait before this action will be completed","type":"numeric","required":true}},"dataPoints":{},"previewable":true},"patientRecommendation":{"key":"patientRecommendation","title":"Patient recommendation","description":"Recommend the patient with an office visit, video chat, ...","category":"Workflow","fields":{"title":{"id":"title","label":"Title","description":"Descriptive title that is shown on the page","type":"string","required":true},"message":{"id":"message","label":"Message","description":"Inform the patient about the recommendation and decision they have to make","type":"html","required":true},"acceptRecommendationButtonLabel":{"id":"acceptRecommendationButtonLabel","label":"Accept recommendation button label","description":"The label of the buton to accept the recommendation and redirect the patient to a different page with a deep link","type":"string","required":true},"acceptRecommendationDeepLink":{"id":"acceptRecommendationDeepLink","label":"Deep link","description":"The deep link the patient is redirected to when accepting the recommendation","type":"string","required":true},"discardRecommendationButtonLabel":{"id":"discardRecommendationButtonLabel","label":"Discard recommendation button label","description":"The label of the button allowing patients to continue and discard the recommendation","type":"string","required":true}},"dataPoints":{"acceptRecommendation":{"key":"acceptRecommendation","valueType":"boolean"}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}},"previewable":false},"redirect":{"key":"redirect","title":"Redirect","description":"Redirect the user to a website or a location within your app","category":"Workflow","fields":{"redirectUrl":{"id":"redirectUrl","label":"Redirect URL","description":"","type":"string","required":true},"redirectMessage":{"id":"redirectMessage","label":"Message","description":"A message that is briefly shown to the user when doing the redirect, leave blank to show nothing","type":"html","required":false}},"dataPoints":{},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}},"previewable":false},"returnObject":{"key":"returnObject","title":"Return object","description":"Return an object to be stored as a datapoint","category":"Workflow","fields":{"array":{"id":"array","label":"Send array instead of object","type":"boolean","required":false}},"dataPoints":{"object":{"key":"object","valueType":"json","jsonSchemaSource":{"system":"extension","key":"example"}}},"previewable":false}},"webhooks":[],"description":"Extension for experimental purposes","icon_url":"https://cdn-icons-png.flaticon.com/512/3830/3830179.png","title":"Experimental extension","category":"Workflow","author":{"authorType":"Awell"},"settings":{},"schemas":{"example":{"$schema":"http://json-schema.org/draft-06/schema#","title":"example","description":"A schema for validating a mock object with various property types","type":"object","properties":{"message":{"type":"string","description":"A greeting message"},"number":{"type":"integer","description":"A numeric value"},"array":{"type":"array","description":"An array of integers","items":{"type":"integer"}},"nested":{"type":"object","description":"A nested object with a key-value pair","properties":{"key":{"type":"string"}},"required":["key"]},"boolean":{"type":"boolean","description":"A boolean value"}},"required":["message","number","array","nested","boolean"]}}},{"key":"external-server","htmlDocs":"<h1 id=\"externalserver\">External Server</h1>\n<p>Here will be some instructions.</p>","changelog":"<h1 id=\"changelog\">CHANGELOG</h1>","actions":{"externalServer":{"key":"externalServer","title":"External Server","description":"An extension action used to prototype extensions on your local machine.","category":"Data","fields":{"extension":{"type":"string","id":"extension","label":"Extension Key","description":"The key of the extension you want to use","required":true},"action":{"type":"string","id":"action","label":"Action Key","description":"The key of the action you want to use","required":true},"input":{"type":"json","id":"input","label":"Input","description":"The input (in JSON format: {'fields': {key: val}, 'settings': {key: val}})"}},"dataPoints":{"data_points":{"key":"data_points","valueType":"string"}},"previewable":false},"mtls":{"key":"mtls","title":"mTLS Connect","description":"An extension action that communicates using mTLS by sending a POST request.","category":"Data","fields":{"payload":{"type":"json","id":"payload","label":"Payload","description":"Payload (in JSON format: {'fields': {key: val}, 'settings': {key: val}})"}},"dataPoints":{"response":{"key":"response","valueType":"string"}},"previewable":false}},"webhooks":[],"description":"External server used for prototyping. See README for additional documentation.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1696493305/Awell%20Extensions/imgbin-computer-icons-data-migration-extract-transform-load-others-z1r9GD10ftiy2XXyhy7kWi413.jpg","title":"External Server","category":"Data","author":{"authorType":"Awell"},"settings":{"url":{"key":"url","label":"URL","obfuscated":false,"description":"The URL you want to use in order to test your local extensions"}}},{"key":"formsort","htmlDocs":"<hr />\n<p>title: Formsort</p>\n<h2 id=\"descriptionformsortisafullymanagedformbuildingplatform\">description: Formsort is a fully-managed form-building platform.</h2>\n<h1 id=\"formsort\">Formsort</h1>\n<p>Formsort is a fully-managed form-building platform. Team can use the online studio (a specialized content management system for forms) to create form content, modify styles, and configure integrations.</p>\n<p>Formsort hosts your fully-branded forms, either on one of your subdomains or embedded in a page on your site. When responders submit answers, Formsort sends the answers to a destination of your liking directly. Formsort doesn't store the responder's answers. </p>\n<h2 id=\"flowsettings\">Flow settings</h2>\n<p>In order for the flows to work well with Awell care flows, make sure your flow settings are set as follows:</p>\n<ul>\n<li>There should be no redirects</li>\n<li>\"Start each session as a new responder\" should be checked</li>\n<li>\"Enable URL navigation\" should be disabled</li>\n<li>\"Enable restart once flow completed\" should be disabled</li>\n<li>\"Enable close once flow completed\" should be disabled</li>\n</ul>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"completeflow\">Complete flow</h3>\n<p>Let a stakeholder complete a Formsort flow from within Awell Hosted Pages.</p>\n<p><strong>Limitations:</strong>\nCurrently data from the flow is not ingested into Awell yet and cannot be used in your care flow as data points.</p>","changelog":"<h1 id=\"formsortchangelog\">Formsort changelog</h1>","actions":{"completeFlow":{"key":"completeFlow","title":"Complete flow","description":"Let a stakeholder complete a Formsort flow with Awell Hosted Pages.","category":"Forms","fields":{"clientLabel":{"id":"clientLabel","label":"Client label","description":"The name (id) of your client.","type":"string","required":true},"flowLabel":{"id":"flowLabel","label":"Flow label","description":"The name of your flow","type":"string","required":true},"variantLabel":{"id":"variantLabel","label":"Variant label","description":"The name of the variant.","type":"string","required":false}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}},"previewable":false}},"webhooks":[],"description":"Formsort is a fully-managed form-building platform.","icon_url":"https://images.saasworthy.com/formsort_30763_logo_1658487172_csumf.jpg","title":"Formsort","category":"Forms","author":{"authorType":"Awell"},"settings":{"apiKey":{"key":"apiKey","label":"API key","description":"Your Formsort API key.","obfuscated":true,"required":false},"environment":{"key":"environment","label":"Environment","description":"Should be \"staging\" or \"production\". Defaults to \"production\".","obfuscated":false,"required":false}}},{"key":"freshdesk","htmlDocs":"<hr />\n<p>title: Freshdesk</p>\n<h2 id=\"descriptionfreshdeskisacloudbasedcustomerservicesoftwarethathelpsbusinessesmanageandstreamlinetheircustomersupportoperations\">description: Freshdesk is a cloud-based customer service software that helps businesses manage and streamline their customer support operations.</h2>\n<h1 id=\"freshdesk\">Freshdesk</h1>\n<p>Freshdesk is a cloud-based customer service software that helps businesses manage and streamline their customer support operations.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>To set up this extension, you will need to provide your Freshdesk helpdesk domain and API key.</p>","changelog":"<h1 id=\"changelog\">CHANGELOG</h1>","actions":{"getTicket":{"key":"getTicket","title":"Get ticket","description":"Get a ticket from Freshdesk.","category":"Customer Support","fields":{"ticketId":{"id":"ticketId","label":"Ticket ID","description":"The ID of the ticket to update","type":"string","required":true}},"previewable":true,"dataPoints":{"ticketData":{"key":"ticketData","valueType":"json"},"requesterId":{"key":"requesterId","valueType":"string"},"subject":{"key":"subject","valueType":"string"},"type":{"key":"type","valueType":"string"},"priorityValue":{"key":"priorityValue","valueType":"number"},"priorityLabel":{"key":"priorityLabel","valueType":"string"},"statusValue":{"key":"statusValue","valueType":"number"},"statusLabel":{"key":"statusLabel","valueType":"string"},"sourceValue":{"key":"sourceValue","valueType":"number"},"sourceLabel":{"key":"sourceLabel","valueType":"string"},"descriptionText":{"key":"descriptionText","valueType":"string"},"descriptionHtml":{"key":"descriptionHtml","valueType":"string"},"customFields":{"key":"customFields","valueType":"json"},"tags":{"key":"tags","valueType":"strings_array"}}},"updateTicket":{"key":"updateTicket","title":"Update ticket","description":"Update a ticket in Freshdesk.","category":"Customer Support","fields":{"ticketId":{"id":"ticketId","label":"Ticket ID","description":"The ID of the ticket to update","type":"string","required":true},"subject":{"id":"subject","label":"Subject","description":"Subject of the ticket","type":"string","required":false},"type":{"id":"type","label":"Type","description":"Helps categorize the ticket according to the different kinds of issues your support team deals with","type":"string","required":false},"status":{"id":"status","label":"Status","description":"The status of the ticket. Possible values: 2 (Open), 3 (Pending), 4 (Resolved), 5 (Closed)","type":"numeric","required":false,"options":{"dropdownOptions":[{"label":"Open","value":2},{"label":"Pending","value":3},{"label":"Resolved","value":4},{"label":"Closed","value":5}]}},"priority":{"id":"priority","label":"Priority","description":"The priority of the ticket. Possible values: 1 (Low), 2 (Medium), 3 (High), 4 (Urgent)","type":"numeric","required":false,"options":{"dropdownOptions":[{"label":"Low","value":1},{"label":"Medium","value":2},{"label":"High","value":3},{"label":"Urgent","value":4}]}},"description":{"id":"description","label":"Description","description":"Content of the ticket","type":"html","required":false},"customFields":{"id":"customFields","label":"Custom fields","description":"Key value pairs containing the names and values of custom fields. All values must be strings.","type":"json","required":false},"dueBy":{"id":"dueBy","label":"Due by","description":"Timestamp that denotes when the ticket is due to be resolved","type":"date","required":false},"tags":{"id":"tags","label":"Tags","description":"Comma separated list of tags to associate with the ticket.","type":"string","required":false}},"previewable":true,"dataPoints":{}},"addNoteToTicket":{"key":"addNoteToTicket","title":"Add note to ticket","description":"Add a note to a ticket in Freshdesk.","category":"Customer Support","fields":{"ticketId":{"id":"ticketId","label":"Ticket ID","description":"The ID of the ticket to update","type":"string","required":true},"body":{"id":"body","label":"Body","description":"Content of the note in HTML","type":"html","required":true},"incoming":{"id":"incoming","label":"Incoming","description":"Set to true if a particular note should appear as being created from outside (i.e., not through web portal). The default value is false","type":"boolean","required":false},"notifyEmails":{"id":"notifyEmails","label":"Notify emails","description":"Comma separated list of email addresses of agents/users who need to be notified about this note","type":"string","required":false},"private":{"id":"private","label":"Private","description":"Set to true if the note is private. The default value is true.","type":"boolean","required":false},"userId":{"id":"userId","label":"User ID","description":"ID of the agent/user who is adding the note","type":"string","required":false}},"previewable":true,"dataPoints":{}},"getContact":{"key":"getContact","title":"Get contact","description":"Get a contact from Freshdesk.","category":"Customer Support","fields":{"contactId":{"id":"contactId","label":"Contact ID","description":"The ID of the contact to get. This is commonly also referred to as the requester ID, particularly in the context of support tickets.","type":"string","required":true}},"previewable":true,"dataPoints":{"contactData":{"key":"contactData","valueType":"json"},"name":{"key":"name","valueType":"string"},"email":{"key":"email","valueType":"string"},"customFields":{"key":"customFields","valueType":"json"},"tags":{"key":"tags","valueType":"strings_array"}}}},"webhooks":[{"key":"ticketCreated","dataPoints":{"ticketId":{"key":"ticketId","valueType":"string"}}}],"description":"Freshdesk is a cloud-based customer service software that helps businesses manage and streamline their customer support operations.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1751905938/Awell%20Extensions/png-clipart-freshdesk-logo-icon-tech-companies.png","title":"Freshdesk","category":"Customer Support","author":{"authorType":"Awell"},"settings":{"domain":{"key":"domain","label":"Freshdesk helpdesk domain","description":"Will be used to construct the API URL. E.g. https://<domain>.freshdesk.com/","required":true,"obfuscated":false},"apiKey":{"key":"apiKey","label":"API key","description":"","required":true,"obfuscated":true}}},{"key":"freshsales","htmlDocs":"<hr />\n<p>title: Freshsales</p>\n<h2 id=\"descriptionfreshsalesisacloudbasedaipoweredcustomerrelationshipmanagementcrmsoftwaredesignedtohelpsalesteamsorganizemanageandclosedealsmoreefficiently\">description: Freshsales is a cloud-based, AI-powered customer relationship management (CRM) software designed to help sales teams organize, manage, and close deals more efficiently.</h2>\n<h1 id=\"freshsales\">Freshsales</h1>\n<p>Freshsales is a cloud-based, AI-powered customer relationship management (CRM) software designed to help sales teams organize, manage, and close deals more efficiently.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>To set up this extension, you will need to provide your Freshsales CRM domain and API key.</p>","changelog":"<h1 id=\"changelog\">CHANGELOG</h1>","actions":{"getLead":{"key":"getLead","title":"Get lead","description":"Get a lead from Freshsales.","category":"Customer Support","fields":{"leadId":{"id":"leadId","label":"Lead ID","description":"The ID of the lead to get","type":"string","required":true}},"previewable":true,"dataPoints":{"leadData":{"key":"leadData","valueType":"json"},"email":{"key":"email","valueType":"string"},"mobileNumber":{"key":"mobileNumber","valueType":"telephone"},"address":{"key":"address","valueType":"string"},"city":{"key":"city","valueType":"string"},"state":{"key":"state","valueType":"string"},"zipcode":{"key":"zipcode","valueType":"string"},"country":{"key":"country","valueType":"string"},"timeZone":{"key":"timeZone","valueType":"string"},"displayName":{"key":"displayName","valueType":"string"},"firstName":{"key":"firstName","valueType":"string"},"lastName":{"key":"lastName","valueType":"string"}}},"searchLeadByEmail":{"key":"searchLeadByEmail","title":"Search lead by email","description":"Search a lead by email from Freshsales.","category":"Customer Support","fields":{"email":{"id":"email","label":"Email","description":"The email of the lead to search for","type":"string","required":true}},"previewable":true,"dataPoints":{"leadData":{"key":"leadData","valueType":"json"},"email":{"key":"email","valueType":"string"},"mobileNumber":{"key":"mobileNumber","valueType":"telephone"},"city":{"key":"city","valueType":"string"},"country":{"key":"country","valueType":"string"},"displayName":{"key":"displayName","valueType":"string"},"firstName":{"key":"firstName","valueType":"string"},"lastName":{"key":"lastName","valueType":"string"}}},"searchContactByEmail":{"key":"searchContactByEmail","title":"Search contact by email","description":"Search a contact by email from Freshsales.","category":"Customer Support","fields":{"email":{"id":"email","label":"Email","description":"The email of the lead to search for","type":"string","required":true}},"previewable":true,"dataPoints":{"contactData":{"key":"contactData","valueType":"json"},"email":{"key":"email","valueType":"string"},"mobileNumber":{"key":"mobileNumber","valueType":"telephone"},"city":{"key":"city","valueType":"string"},"country":{"key":"country","valueType":"string"},"displayName":{"key":"displayName","valueType":"string"},"firstName":{"key":"firstName","valueType":"string"},"lastName":{"key":"lastName","valueType":"string"}}}},"webhooks":[],"description":"Freshsales is a cloud-based, AI-powered customer relationship management (CRM) software designed to help sales teams organize, manage, and close deals more efficiently.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1751917615/Awell%20Extensions/freshsales.png","title":"Freshsales","category":"Customer Support","author":{"authorType":"Awell"},"settings":{"domain":{"key":"domain","label":"Freshsales domain","description":"Will be used to construct the API URL. E.g. https://<domain>.freshsales.io/","required":true,"obfuscated":false},"apiKey":{"key":"apiKey","label":"API key","description":"","required":true,"obfuscated":true}}},{"key":"gridspace","htmlDocs":"<hr />\n<p>title: Gridspace</p>\n<h2 id=\"descriptiongridspace\">description: Gridspace </h2>\n<h1 id=\"whatisgridspace\">What is Gridspace</h1>\n<p>Gridspace is a conversational speech bot platform using its proprietary AI, Grace. It was built for long-form conversations over the phone, which distinguishes her from other voice AIs such as Siri and Alexa.</p>\n<p>Grace can perform an an ever-increasing variety of service-oriented tasks across multiple roles. Grace's job functions include, but are by no means limited to:</p>\n<ul>\n<li>Healthcare Scheduler</li>\n<li>Lead Qualifier</li>\n<li>Payments Facilitator</li>\n<li>After-hours Phone Operator</li>\n<li>Service Appointment Booker</li>\n</ul>\n<p>Grace has the ability to manage customer service and patient care interactions independently from start to finish, or she can work in collaboration with human agents.</p>","changelog":"<h1 id=\"gridspacechangelog\">Gridspace changelog</h1>\n<h2 id=\"october2024\">October, 2024</h2>\n<p>Created Gridspace extension</p>","actions":{"callWithGrace":{"key":"callWithGrace","title":"Call with Grace","description":"Use AI phone conversations to communicate with your patients.","category":"Communication","fields":{"flowId":{"id":"flowId","label":"Flow ID","type":"string","required":true,"description":"The ID of the flow to use for the call."},"phoneNumber":{"id":"phoneNumber","label":"Phone Number","type":"string","stringType":"phone","required":true,"description":"The phone number to call."},"data":{"id":"data","label":"Data","type":"json","required":true,"description":"Any additional data to be passed to the call."}},"dataPoints":{},"previewable":false},"uploadContactToCampaign":{"key":"uploadContactToCampaign","title":"Upload Contact to Campaign","description":"Add a contact to a Gridspace autodialer campaign.","category":"Communication","fields":{"campaignId":{"id":"campaignId","label":"Campaign ID","type":"string","required":true,"description":"The ID of the Gridspace autodialer campaign."},"phoneNumber":{"id":"phoneNumber","label":"Phone Number","type":"string","stringType":"phone","required":true,"description":"The phone number to call."},"serviceTermsReviewed":{"id":"serviceTermsReviewed","label":"Service Terms Reviewed","type":"boolean","required":false,"description":"Affirmation that the Terms of Service for contacts made via Autodialer campaigns have been reviewed. Defaults to true."},"data":{"id":"data","label":"Data","type":"json","required":true,"description":"Any additional data to be passed to the campaign. Should be a JSON object."}},"dataPoints":{"data":{"key":"data","valueType":"json"},"num_uploaded_contacts":{"key":"num_uploaded_contacts","valueType":"number"}},"previewable":false}},"webhooks":[],"description":"Use AI phone conversations to communicate with your patients.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1727996065/gridspace_inc_logo_yd4j7n.jpg","category":"Communication","title":"Gridspace","author":{"authorType":"Awell"},"settings":{"accountId":{"label":"Account ID","key":"accountId","obfuscated":false,"required":true,"description":"Your Gridspace account ID."},"clientSecret":{"label":"Client Secret","key":"clientSecret","obfuscated":true,"required":true,"description":"Your Gridspace client secret."}}},{"key":"healthie","htmlDocs":"<hr />\n<p>title: Healthie</p>\n<h2 id=\"descriptionhealthieoffersinfrastructurefornextgenerationdigitalhealthorganizationsthatprovidevirtualfirstcare\">description: Healthie offers infrastructure for next generation digital health organizations that provide virtual-first care.</h2>\n<h1 id=\"whatishealthie\">What is Healthie?</h1>\n<p>Healthie offers infrastructure for next generation digital health organizations that provide virtual-first care. Healthie’s API-first and fully brandable suite of solutions (Scheduling, EMR, Client Engagement) enables healthcare builders to launch and scale best-in-class experiences for their members. Healthie also offers a built-in marketplace of business and clinical integrations used by our organizations.</p>\n<p>To learn more, visit <a href=\"https://refer.gethealthie.com/dejebp5gm06x\">www.gethealthie.com</a>.</p>\n<h2 id=\"healthiexawell\">Healthie x Awell</h2>\n<p>With this extension, organizations are able to build clinical workflows in Awell’s low-code platform and easily integrate them into Healthie. By doing so, Healthie’s customers can automate routine clinical tasks, synchronize data between systems and drive seamless coordination between care team and patients.</p>\n<p>By combining Healthie’s web and mobile platform with our clinical workflows, clinicians will be able to provide the right care, at the right time for the right patient.</p>\n<h1 id=\"extensionsettings\">Extension settings</h1>\n<p>In order to set up this extension, <strong>you will need to provide a Healthie API key and Api url</strong>. You can obtain an API key via the Healthie portal (<code>Settings &gt; Developer &gt; API keys</code>). You can obtain API url in the <a href=\"https://docs.gethealthie.com/docs/#environments\">DOCUMENTATION</a> in <code>Environments</code> section.</p>\n<p>Please note that the extension automatically prefixes the API key with <code>Basic</code> so please provide your raw API key without <code>Basic</code> in front.</p>\n<h1 id=\"customactions\">Custom Actions</h1>\n<h2 id=\"sendchatmessageaction\">Send chat message action</h2>\n<p>Sends a chat message to a patient in name of the provided provider ID. Will create a new conversation if no active conversation between patient and provider exists or sends a message in an existing conversation if there is an active conversation between the two.</p>\n<h2 id=\"createpatient\">Create patient</h2>\n<p>Creates a new patient according to the passed fields. After completion the <code>healthiePatientId</code> will be exposed as a data point in the care flow.</p>\n<h2 id=\"updatepatient\">Update patient</h2>\n<p>Updates a specific patient (defined by the provided <code>id</code>) according to the passed fields.</p>\n<h2 id=\"applytagtopatient\">Apply tag to patient</h2>\n<p>Adds a tag (existing one, identified by an <code>id</code>) to a patient. Although the Healthie API call allows assigning multiple tags per API call, for simplicity of the logic this action can only take one tag as input. Assigning multiple tags is possible by adding multiple actions.</p>\n<h2 id=\"removetagfrompatient\">Remove tag from patient</h2>\n<p>Removes a tag (identified by an <code>id</code>) from a patient.</p>\n<h2 id=\"createchartingnote\">Create charting note</h2>\n<p>Creates a charting note with the provided <code>note_content</code>.</p>\n<p><strong>Prerequisites and set-up:</strong></p>\n<ol>\n<li>The form specified by the <code>form_id</code> exists in Healthie.</li>\n<li>The form specified by the <code>form_id</code> is a charting form (click \"Convert to charting form\" in the form options).</li>\n<li>The form contains at least one question of type <code>textarea</code> (long text answer). The action will write the content of the charting note in the first question of that type it finds in the form.</li>\n</ol>\n<h2 id=\"sendformcompletionrequest\">Send form completion request</h2>\n<p>Send a form completion request to the patient. You will need the Healthie patient ID and the ID of the form you would like the patient to complete.</p>\n<p>Although the Healthie API call allows sending form completion requests to multiple users per API call (see recipient_ids in their docs), we decided that every action only sends one form completion request. This heavily simplifies the logic and better fits our domain model (1-to-1 relationship between patient and pathway). If a user would like to send multiple form completion requests, they you can just add multiple actions.</p>\n<h2 id=\"archivepatient\">Archive patient</h2>\n<p>Archives a patient with a given <code>id</code>.</p>\n<h2 id=\"createlocation\">Create location</h2>\n<p>Creates a location. ID of the created location is stored as <code>locationId</code> data point.</p>\n<h2 id=\"closechatconversation\">Close chat conversation</h2>\n<p>Closes chat conversation with a given <code>id</code> as a provider with the given <code>provider_id</code>.</p>\n<h2 id=\"deleteappointment\">Delete appointment</h2>\n<p>Deletes an appointment with a given <code>id</code>.</p>\n<h2 id=\"cancelappointment\">Cancel appointment</h2>\n<p>Cancels an appointment with a given <code>id</code>.</p>\n<h2 id=\"getmetricentry\">Get metric entry</h2>\n<p>Retrieve the most recent metric entry from a given <code>category</code>.</p>\n<h2 id=\"createmetricentry\">Create metric entry</h2>\n<p>Create a metric entry for a patient in Healthie. The category of the metric is the literal name of the metric in Healthie. So if you have a metric in Healthie called \"Weight\", you should use \"Weight\" as the category.</p>\n<h2 id=\"checkpatienttag\">Check patient tag</h2>\n<p>Checks that a patient has an active tag with given <code>id</code></p>\n<h2 id=\"checkscheduledappointments\">Check scheduled appointments</h2>\n<p>Checks that a patient has active scheduled appointment with given <code>appointmentTypeId</code></p>\n<h2 id=\"getformanswers\">Get form answers</h2>\n<p>This action will retrieve the form answers for a answer group with a given ID. The complete form answers object will be stored as JSON and will be available in Awell Studio as a data point</p>\n<p>Example of a form answers response:</p>\n<pre><code class=\"json language-json\">[\n  {\n    \"id\": \"640\",\n    \"label\": \"Please enter some information about the person who referred you.\",\n    \"answer\": \"\"\n  },\n  {\n    \"id\": \"641\",\n    \"label\": \"Name\",\n    \"answer\": \"Chris\"\n  }\n]\n</code></pre>\n<p>Derrived data points can be used to then store the answer of a specific question in a data point. You can use the following JSONPath expression to retrieve the answer for a given question ID: <code>$[?(@.id == '&lt;ID&gt;')].answer</code></p>","changelog":"<h1 id=\"healthiechangelog\">Healthie changelog</h1>\n<h2 id=\"january2024\">January 2024</h2>\n<ul>\n<li>Add \"Check patient tag\" action</li>\n<li>Add \"Check scheduled appointments\" action</li>\n</ul>\n<h2 id=\"october2023\">October 2023</h2>\n<ul>\n<li>Add \"Update patient quick notes\" action</li>\n<li>Add \"Create metric entry\" action.</li>\n</ul>\n<h2 id=\"september52023\">September 5, 2023</h2>\n<ul>\n<li>add Healthie gender to Sex in iso format mapper in <code>getPatient</code></li>\n</ul>\n<h2 id=\"may2023\">May 2023</h2>\n<ul>\n<li>New webhooks added: <code>appliedTagCreated</code>, <code>appliedTagDeleted</code>, <code>appointmentDeleted</code>, <code>appointmentUpdated</code>, <code>formAnswerGroupCreated</code>, <code>formAnswerGroupDeleted</code>, <code>formAnswerGroupLocked</code>, <code>formAnswerGroupSigned</code>, <code>labOrderCreated</code>, <code>labOrderUpdated</code>, <code>messageCreated</code>, <code>messageDeleted</code>, <code>metricEntryCreated</code>, <code>metricEntryDeleted</code>, <code>metricEntryUpdated</code>, <code>patientUpdated</code>, <code>requestFormCompletionCreated</code>, <code>requestFormCompletionDeleted</code>, <code>requestFormCompletionUpdated</code>, <code>taskCreated</code>, <code>taskDeleted</code>, <code>taskUpdated</code></li>\n</ul>\n<h2 id=\"april2023\">April 2023</h2>\n<ul>\n<li>Create task action: now also adds support for reminders.</li>\n</ul>","actions":{"deleteGoal":{"key":"deleteGoal","title":"Delete goal","description":"Delete a goal for a patient in Healthie","category":"EHR Integrations","fields":{"goalId":{"id":"goalId","label":"Goal ID","description":"The ID of the goal to delete","type":"string","required":true}},"previewable":true,"dataPoints":{}},"getSetPasswordLink":{"key":"getSetPasswordLink","title":"Get set password link","description":"Get the set password link for a patient","category":"EHR Integrations","fields":{"healthiePatientId":{"id":"healthiePatientId","label":"Healthie patient ID","description":"The ID of the patient in Healthie to get the link for","type":"string","required":true}},"previewable":true,"dataPoints":{"setPasswordLink":{"key":"setPasswordLink","valueType":"string"}}},"createAppointment":{"key":"createAppointment","title":"Create 1:1 appointment","description":"Create a 1:1 appointment in Healthie.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the patient you want to create an appointment for.","type":"string","required":true},"otherPartyId":{"id":"otherPartyId","label":"Provider ID","description":"The ID of the provider the appointment is with. If none provided, the user the API key is associated with will be used.","type":"string"},"contactTypeId":{"id":"contactTypeId","label":"Contact type ID","description":"How the appointment will be conducted.","type":"string","required":true},"appointmentTypeId":{"id":"appointmentTypeId","label":"Appointment type ID","description":"The ID of the appointment type.","type":"string","required":true},"datetime":{"id":"datetime","label":"Appointment date and time","description":"The date and time of the appointment in ISO8601 format.","type":"date","required":true},"notes":{"id":"notes","label":"Notes","description":"Any notes you want to add to the appointment.","type":"text","required":false},"externalVideochatUrl":{"id":"externalVideochatUrl","label":"External video chat URL","description":"When passed in, this video chat URL will be used instead of built-in Video Chat or Zoom.","type":"string","required":false},"metadata":{"id":"metadata","label":"Metadata","description":"","type":"json","required":false}},"dataPoints":{"appointmentId":{"key":"appointmentId","valueType":"string"}},"previewable":true},"createTask":{"key":"createTask","title":"Create task","description":"Create a new task in Healthie.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Healthie patient ID","description":"The ID of the patient related to this task.","type":"string"},"assignToUserId":{"id":"assignToUserId","label":"Assign to user","description":"The ID of the user to assign the task to. If none provided, will assign the task to the user the API key is associated with.","type":"string"},"content":{"id":"content","label":"Content","description":"The content of the Task.","type":"text","required":true},"dueDate":{"id":"dueDate","label":"Due date","description":"The due date of the task.","type":"date"},"isReminderEnabled":{"id":"isReminderEnabled","label":"Is reminder enabled","description":"Would you like to send reminders for this task?","type":"boolean"},"reminderIntervalType":{"id":"reminderIntervalType","label":"Reminder interval type","description":"At what interval would you like to send reminders? The options are \"daily\", \"weekly\", \"once\".","type":"string"},"reminderIntervalValue":{"id":"reminderIntervalValue","label":"Reminder interval value (weekly)","description":"When interval type is set to \"daily\" or \"once\", leave this field blank. For \"weekly\" interval, send in comma separated all lower-case days of the week (e.g wednesday, friday).","type":"string","required":false},"reminderIntervalValueOnce":{"id":"reminderIntervalValueOnce","label":"Reminder interval value (once)","description":"When the interval type is set to \"daily\" or \"weekly\", leave this field blank. For \"once\" interval, set or select a date.","type":"date","required":false},"reminderTime":{"id":"reminderTime","label":"Reminder time","description":"Time to send the reminder. Expressed in the number of minutes from midnight.","type":"numeric"}},"dataPoints":{"taskId":{"key":"taskId","valueType":"string"}},"previewable":true},"getAppointment":{"key":"getAppointment","title":"Get appointment","description":"Retrieve the details of an appointment in Healthie.","category":"EHR Integrations","fields":{"appointmentId":{"id":"appointmentId","label":"Appointment ID","description":"The identifier of the appointment you want to retrieve.","type":"string"}},"dataPoints":{"date":{"key":"date","valueType":"date"},"appointmentTypeId":{"key":"appointmentTypeId","valueType":"string"},"appointmentTypeName":{"key":"appointmentTypeName","valueType":"string"},"appointmentStatus":{"key":"appointmentStatus","valueType":"string"},"contactType":{"key":"contactType","valueType":"string"},"patientId":{"key":"patientId","valueType":"string"}},"previewable":true},"getPatient":{"key":"getPatient","title":"Get patient","description":"Retrieve the details of a patient in Healthie.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the patient in Healthie you would like to retrieve.","type":"string"}},"dataPoints":{"firstName":{"key":"firstName","valueType":"string"},"lastName":{"key":"lastName","valueType":"string"},"dob":{"key":"dob","valueType":"date"},"gender":{"key":"gender","valueType":"string"},"isoSex":{"key":"isoSex","valueType":"number"},"email":{"key":"email","valueType":"string"},"phoneNumber":{"key":"phoneNumber","valueType":"telephone"},"primaryProviderId":{"key":"primaryProviderId","valueType":"string"},"groupName":{"key":"groupName","valueType":"string"}},"previewable":true},"sendChatMessage":{"key":"sendChatMessage","title":"Send chat message","description":"Send a chat message to a patient in Healthie.","category":"EHR Integrations","fields":{"healthie_patient_id":{"id":"healthie_patient_id","label":"Healthie Patient ID","description":"The ID of the patient in Healthie you would like to send a chat message to.","type":"string","required":true},"provider_id":{"id":"provider_id","label":"Provider ID","description":"The ID of the provider, the chat message will be sent in name of this provider.","type":"string","required":true},"message":{"id":"message","label":"Message","description":"The chat message you would like to send.","type":"html","required":true}},"dataPoints":{"conversationId":{"key":"conversationId","valueType":"string"}},"previewable":true},"createPatient":{"key":"createPatient","title":"Create a patient","description":"Create a patient in Healthie.","category":"EHR Integrations","fields":{"first_name":{"id":"first_name","label":"First name","description":"The first name of the patient.","type":"string","required":true},"last_name":{"id":"last_name","label":"Last name","description":"The last name of the patient.","type":"string","required":true},"legal_name":{"id":"legal_name","label":"Legal name","description":"The patient's legal name which will be used in CMS 1500 Claims, Invoices, and Superbills.","type":"string"},"dob":{"id":"dob","label":"Date of birth","description":"Date of birth of the patient","type":"date","required":false},"email":{"id":"email","label":"Email","description":"The email address of the patient. If email is NOT provided, we will still create the patient in Healthie but without the email.","type":"string","required":false},"phone_number":{"id":"phone_number","label":"Phone number","description":"The phone number of the patient.","type":"string","stringType":"phone"},"send_invite":{"id":"send_invite","label":"Send invite email","description":"Whether an invite email should be sent to the newly created patient.","type":"boolean"},"provider_id":{"id":"provider_id","label":"Provider ID","description":"This is the ID of the provider and defaults to the user the API key is associated with. Also known as the `dietitian_id`.","type":"string"},"record_identifier":{"id":"record_identifier","label":"Record identifier","description":"The record identifier of the patient","type":"string","required":false},"additional_record_identifier":{"id":"additional_record_identifier","label":"Additional record identifier","description":"An additional record identifier of the patient","type":"string","required":false}},"dataPoints":{"healthiePatientId":{"key":"healthiePatientId","valueType":"string"}},"previewable":true},"updatePatient":{"key":"updatePatient","title":"Update a patient","description":"Update a patient in Healthie.","category":"EHR Integrations","fields":{"id":{"id":"id","label":"ID","description":"The id of the patient in Healthie.","type":"string","required":true},"first_name":{"id":"first_name","label":"First name","description":"The first name of the patient.","type":"string","required":false},"last_name":{"id":"last_name","label":"Last name","description":"The last name of the patient.","type":"string","required":false},"legal_name":{"id":"legal_name","label":"Legal name","description":"The patient's legal name which will be used in CMS 1500 Claims, Invoices, and Superbills.","type":"string","required":false},"email":{"id":"email","label":"Email","description":"The email address of the patient.","type":"string","required":false},"dob":{"id":"dob","label":"Date of birth","description":"Date of birth of the patient","type":"date","required":false},"phone_number":{"id":"phone_number","label":"Phone number","description":"The phone number of the patient.","type":"string","stringType":"phone","required":false},"provider_id":{"id":"provider_id","label":"Provider ID","description":"This is the ID of the provider and defaults to the user the API key is associated with. Also known as the `dietitian_id`.","type":"string","required":false},"user_group_id":{"id":"user_group_id","label":"User group ID","description":"The user group the patient belongs to.","type":"string","required":false},"active":{"id":"active","label":"Active","description":"Whether the patient is still active.","type":"boolean","required":false},"height":{"id":"height","label":"Height","description":"The height of the patient.","type":"string","required":false},"gender":{"id":"gender","label":"Gender","description":"The gender of the patient. Either \"Female\", \"Male\", or \"Other\".","type":"string","required":false},"gender_identity":{"id":"gender_identity","label":"Gender identity","description":"Should only be passed when gender is \"Other\"","type":"string","required":false},"sex":{"id":"sex","label":"Sex","description":"The sex of the patient. Either \"Female\", \"Male\".","type":"string","required":false},"resend_welcome_email":{"id":"resend_welcome_email","label":"Resend welcome email","description":"Whether to resend the welcome email to the patient","type":"boolean","required":false},"record_identifier":{"id":"record_identifier","label":"Record identifier","description":"The record identifier of the patient","type":"string","required":false},"additional_record_identifier":{"id":"additional_record_identifier","label":"Additional record identifier","description":"An additional record identifier of the patient","type":"string","required":false}},"previewable":true},"applyTagToPatient":{"key":"applyTagToPatient","title":"Apply tag to a patient","description":"Apply a tag to a patient in Healthie.","category":"EHR Integrations","fields":{"id":{"id":"id","label":"ID","description":"The ID of the tag to add to the patient.","type":"string","required":true},"patient_id":{"id":"patient_id","label":"Patient ID","description":"The ID of the patient to apply the tag on.","type":"string","required":true}},"previewable":true},"removeTagFromPatient":{"key":"removeTagFromPatient","title":"Remove tag from a patient","description":"Remove a tag from a patient in Healthie.","category":"EHR Integrations","fields":{"id":{"id":"id","label":"ID","description":"The ID of the tag to remove from the patient.","type":"string","required":true},"patient_id":{"id":"patient_id","label":"Patient ID","description":"The ID of the patient to remove the tag from.","type":"string","required":true}},"previewable":true},"createChartingNote":{"key":"createChartingNote","title":"Create charting note","description":"Create a charting note in Healthie.","category":"EHR Integrations","fields":{"healthie_patient_id":{"id":"healthie_patient_id","label":"Healthie Patient ID","description":"The ID of the patient you would like to create a charting note for.","type":"string","required":true},"form_id":{"id":"form_id","label":"Form ID","description":"The ID of the form you would like to create the charting note against.","type":"string","required":true},"note_content":{"id":"note_content","label":"Note content","description":"The content of the charting note.","type":"html","required":true},"marked_locked":{"id":"marked_locked","label":"Mark as locked?","description":"This field allows you to mark the content as locked.","type":"boolean","required":false},"appointment_id":{"id":"appointment_id","label":"Appointment ID","description":"The ID of the appointment you would like the charting note associated with.","type":"string","required":false}},"previewable":true},"sendFormCompletionRequest":{"key":"sendFormCompletionRequest","title":"Send form completion request","description":"Send a form completion request to a patient in Healthie.","category":"EHR Integrations","fields":{"healthie_patient_id":{"id":"healthie_patient_id","label":"Healthie Patient ID","description":"The ID of the patient that should receive the form completion request.","type":"string","required":true},"form_id":{"id":"form_id","label":"Form ID","description":"The ID of the form you would like the patient to complete.","type":"string","required":true},"is_recurring":{"id":"is_recurring","label":"Is recurring","description":"Set to true if the Form completion should be recurring.","type":"boolean","required":false},"frequency":{"id":"frequency","label":"Frequency","description":"Required if \"Is recurring\" is set to true. Valid options are: Daily, Weekly, Monthly.","type":"string","required":false},"period":{"id":"period","label":"Period","description":"AM or PM.","type":"string","required":false},"hour":{"id":"hour","label":"Hour","description":"For instance, if you want to trigger the completion request at 1:05 PM, use \"1\".","type":"numeric","required":false},"minute":{"id":"minute","label":"Minute","description":"For instance, if you want to trigger the completion request at 1:05 PM, use \"5\".","type":"numeric","required":false},"weekday":{"id":"weekday","label":"Weekday","description":"Use the full weekday name, e.g. \"Monday\".","type":"string","required":false},"monthday":{"id":"monthday","label":"Monthday","description":"Number of the day of month, e.g. \"27th\".","type":"string","required":false},"ends_on":{"id":"ends_on","label":"Ends on","description":"Recurrence end date in the YYYY-MM-DD format.","type":"date","required":false}},"previewable":true},"archivePatient":{"key":"archivePatient","title":"Archive patient","description":"Archive a patient in Healthie.","category":"EHR Integrations","fields":{"id":{"id":"id","label":"ID","description":"The id of the patient in Healthie.","type":"string","required":true}},"previewable":true},"createGoal":{"key":"createGoal","title":"Create goal","description":"Create a goal for a patient in Healthie","category":"EHR Integrations","fields":{"healthiePatientId":{"id":"healthiePatientId","label":"Healthie patient ID","description":"The ID of the patient in Healthie","type":"string","required":true},"name":{"id":"name","label":"Name","description":"The name of the goal","type":"string","required":true},"titleLink":{"id":"titleLink","label":"Title link","description":"The link to add behind the goal","type":"text","required":false},"repeat":{"id":"repeat","label":"Repeat","description":"The frequency of this goal. Possible values are: Daily, Weekly, Once. Defaults to \"Once\"","type":"string","required":false},"dueDate":{"id":"dueDate","label":"Due date","description":"The date the goal should end and dissapear from the portal","type":"date","required":false}},"previewable":true,"dataPoints":{"createdGoalId":{"key":"createdGoalId","valueType":"string"}}},"closeChatConversation":{"key":"closeChatConversation","title":"Close chat conversation","description":"Close a chat conversation in Healthie.","category":"EHR Integrations","fields":{"id":{"id":"id","label":"ID","description":"The id of the conversation in Healthie.","type":"string","required":true},"provider_id":{"id":"provider_id","label":"Provider ID","description":"The ID of the provider that closes the conversation.","type":"string","required":true}},"previewable":true},"deleteAppointment":{"key":"deleteAppointment","title":"Delete appointment","description":"Delete an appointment in Healthie.","category":"EHR Integrations","fields":{"id":{"id":"id","label":"ID","description":"The id of the appointment in Healthie you would like to delete.","type":"string","required":true}},"previewable":true},"cancelAppointment":{"key":"cancelAppointment","title":"Cancel appointment","description":"Cancel an appointment in Healthie.","category":"EHR Integrations","fields":{"id":{"id":"id","label":"ID","description":"The id of the appointment in Healthie.","type":"string","required":true}},"previewable":true},"deleteTask":{"key":"deleteTask","title":"Delete task","description":"Delete a task in Healthie.","category":"EHR Integrations","fields":{"id":{"id":"id","label":"Task ID","description":"The id of the task in Healthie you would like to delete.","type":"string","required":true}},"previewable":true},"completeTask":{"key":"completeTask","title":"Complete task","description":"Complete a task in Healthie.","category":"EHR Integrations","fields":{"id":{"id":"id","label":"Task ID","description":"The id of the task in Healthie.","type":"string","required":true}},"previewable":true},"assignPatientToGroup":{"key":"assignPatientToGroup","title":"Assign patient to group","description":"Assign or remove a patient from a group in Healthie.","category":"EHR Integrations","fields":{"id":{"id":"id","label":"Patient ID","description":"The id of the patient in Healthie.","type":"string","required":true},"groupId":{"id":"groupId","label":"Group ID","description":"The ID of the group the patient will be assigned to. Leave blank to remove the patient from a group.","type":"string","required":false}},"previewable":true},"getMetricEntry":{"key":"getMetricEntry","title":"Get metric entry","description":"Get most recent metric entry of a given category from Healthie.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the patient in Healthie you would like to retrieve the metric for","type":"string","required":true},"category":{"id":"category","label":"Category","description":"Specifies the metric you would like to retrieve","type":"string","required":true}},"dataPoints":{"metricId":{"key":"metricId","valueType":"string"},"metricValue":{"key":"metricValue","valueType":"number"},"createdAt":{"key":"createdAt","valueType":"date"}},"previewable":true},"updatePatientQuickNote":{"key":"updatePatientQuickNote","title":"Update patient quick note","description":"Update a patient quick note in Healthie.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the patient in Healthie to update the quick note for","type":"string","required":true},"quickNote":{"id":"quickNote","label":"Quick note","description":"","type":"html"},"overwrite":{"id":"overwrite","label":"Overwrite quick note?","description":"If true, the quick note will be replaced with the new content. If false, the content will be appended to the current content in the quick note.","type":"boolean"}},"previewable":true},"createMetricEntry":{"key":"createMetricEntry","title":"Create metric entry","description":"Create a metric entry for a patient in Healthie.","category":"EHR Integrations","fields":{"userId":{"id":"userId","label":"User ID","description":"The ID of the patient that this entry should be attached to","type":"string","required":true},"category":{"id":"category","label":"Category","description":"Specifies what kind of metric we are storing","type":"string","required":true},"metricStat":{"id":"metricStat","label":"Metric stat","description":"The actual data value for the metric","type":"numeric","required":true}},"previewable":true},"checkPatientTag":{"key":"checkPatientTag","title":"Check patient tag","description":"Check if a patient has the given tag in their active tags in Healthie.","category":"EHR Integrations","fields":{"id":{"id":"id","label":"Tag ID","description":"The ID of the tag in Healthie.","type":"string"},"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the patient in Healthie.","type":"string"}},"dataPoints":{"hasTag":{"key":"hasTag","valueType":"boolean"}},"previewable":true},"checkScheduledAppointments":{"key":"checkScheduledAppointments","title":"Check scheduled appointments","description":"Check if the given patient has an active appointment scheduled for the given appointment type.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the patient in Healthie.","type":"string"},"appointmentTypeId":{"id":"appointmentTypeId","label":"Appointment type ID","description":"The ID of the appointment type.","type":"string","required":true}},"dataPoints":{"isScheduled":{"key":"isScheduled","valueType":"boolean"}},"previewable":true},"getFormAnswers":{"key":"getFormAnswers","title":"Get form answers","description":"Retrieve form answers from form answer group","category":"EHR Integrations","fields":{"id":{"id":"id","label":"ID","description":"The ID of the form answer group to retrieve","type":"string","required":true}},"previewable":true,"dataPoints":{"formAnswers":{"key":"formAnswers","valueType":"json"}}},"pushFormResponseToHealthie":{"key":"pushFormResponseToHealthie","title":"Push form response to Healthie","description":"Pushes an Awell form response to a Healthie form","category":"EHR Integrations","fields":{"healthiePatientId":{"id":"healthiePatientId","label":"Healthie patient ID","description":"The ID of the patient in Healthie","type":"string","required":true},"healthieFormId":{"id":"healthieFormId","label":"Healthie form ID","description":"The ID of the form in Healthie","type":"string","required":true},"lockFormAnswerGroup":{"id":"lockFormAnswerGroup","label":"Lock form answer group","description":"Locking the form will stop any further editing","type":"boolean","required":false}},"previewable":false,"dataPoints":{"formAnswerGroupId":{"key":"formAnswerGroupId","valueType":"string"}}},"pushFormResponsesToHealthie":{"key":"pushFormResponsesToHealthie","title":"Push form responses to Healthie","description":"Pushes all form response from the current step to a Healthie form","category":"EHR Integrations","fields":{"healthiePatientId":{"id":"healthiePatientId","label":"Healthie patient ID","description":"The ID of the patient in Healthie","type":"string","required":true},"healthieFormId":{"id":"healthieFormId","label":"Healthie form ID","description":"The ID of the form in Healthie","type":"string","required":true},"lockFormAnswerGroup":{"id":"lockFormAnswerGroup","label":"Lock form answer group","description":"Locking the form will stop any further editing","type":"boolean","required":false}},"previewable":false,"dataPoints":{"formAnswerGroupId":{"key":"formAnswerGroupId","valueType":"string"}}},"lockFormAnswerGroup":{"key":"lockFormAnswerGroup","title":"Lock form answers","description":"Lock form answers from form answer group to prevent further editing","category":"EHR Integrations","fields":{"id":{"id":"id","label":"ID","description":"The ID of the form answer group to lock (prevents further editing)","type":"string","required":true}},"previewable":true,"dataPoints":{}}},"webhooks":[{"key":"appointmentCreated","dataPoints":{"appointmentId":{"key":"appointmentId","valueType":"string"},"appointment":{"key":"appointment","valueType":"json"}}},{"key":"patientCreated","dataPoints":{"patientId":{"key":"patientId","valueType":"string"}}},{"key":"appliedTagCreated","dataPoints":{"createdAppliedTagId":{"key":"createdAppliedTagId","valueType":"string"}}},{"key":"appliedTagDeleted","dataPoints":{"deletedAppliedTagId":{"key":"deletedAppliedTagId","valueType":"string"}}},{"key":"appointmentDeleted","dataPoints":{"deletedAppointmentId":{"key":"deletedAppointmentId","valueType":"string"}}},{"key":"appointmentUpdated","dataPoints":{"updatedAppointmentId":{"key":"updatedAppointmentId","valueType":"string"},"appointment":{"key":"appointment","valueType":"json"}}},{"key":"formAnswerGroupCreated","dataPoints":{"createdFormAnswerGroupId":{"key":"createdFormAnswerGroupId","valueType":"string"},"createdFormAnswerGroup":{"key":"createdFormAnswerGroup","valueType":"json"}}},{"key":"formAnswerGroupDeleted","dataPoints":{"deletedFormAnswerGroupId":{"key":"deletedFormAnswerGroupId","valueType":"string"}}},{"key":"formAnswerGroupLocked","dataPoints":{"lockedFormAnswerGroupId":{"key":"lockedFormAnswerGroupId","valueType":"string"},"lockedFormAnswerGroup":{"key":"lockedFormAnswerGroup","valueType":"json"}}},{"key":"formAnswerGroupSigned","dataPoints":{"signedFormAnswerGroupId":{"key":"signedFormAnswerGroupId","valueType":"string"},"signedFormAnswerGroup":{"key":"signedFormAnswerGroup","valueType":"json"}}},{"key":"labOrderCreated","dataPoints":{"createdLabOrderId":{"key":"createdLabOrderId","valueType":"string"}}},{"key":"labOrderUpdated","dataPoints":{"updatedLabOrderId":{"key":"updatedLabOrderId","valueType":"string"}}},{"key":"messageCreated","dataPoints":{"createdMessageId":{"key":"createdMessageId","valueType":"string"}}},{"key":"messageDeleted","dataPoints":{"deletedMessageId":{"key":"deletedMessageId","valueType":"string"}}},{"key":"metricEntryCreated","dataPoints":{"createdMetricId":{"key":"createdMetricId","valueType":"string"}}},{"key":"metricEntryUpdated","dataPoints":{"updatedMetricId":{"key":"updatedMetricId","valueType":"string"}}},{"key":"patientUpdated","dataPoints":{"updatedPatientId":{"key":"updatedPatientId","valueType":"string"}}},{"key":"requestFormCompletionCreated","dataPoints":{"createdFormCompletionId":{"key":"createdFormCompletionId","valueType":"string"}}},{"key":"requestFormCompletionUpdated","dataPoints":{"updatedFormCompletionId":{"key":"updatedFormCompletionId","valueType":"string"}}},{"key":"taskCreated","dataPoints":{"createdTaskId":{"key":"createdTaskId","valueType":"string"}}},{"key":"taskUpdated","dataPoints":{"updatedTaskId":{"key":"updatedTaskId","valueType":"string"}}},{"key":"goalCreated","dataPoints":{"createdGoalId":{"key":"createdGoalId","valueType":"number"}}},{"key":"goalUpdated","dataPoints":{"updatedGoalId":{"key":"updatedGoalId","valueType":"string"}}}],"description":"Easily orchestrate actions in Healthie and receive webhooks events.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1726074872/Awell%20Extensions/get_healthie_logo.jpg","category":"EHR Integrations","title":"Healthie","author":{"authorType":"Awell"},"settings":{"apiUrl":{"key":"apiUrl","label":"API url","obfuscated":false,"required":true,"description":"The environment specific API url."},"apiKey":{"key":"apiKey","label":"API key","obfuscated":true,"required":true,"description":"Your Healthie API key."},"formAnswerMaxSizeKB":{"key":"formAnswerMaxSizeKB","label":"Form answer max size (KB)","obfuscated":false,"required":false,"description":"The maximum size of any form answer in KB. Form responses larger than that value (e.g. with images or PDFs) will be replaced by an Awell-generated message."}}},{"key":"hello-world","htmlDocs":"<hr />\n<p>title: Hello world</p>\n<h2 id=\"descriptionthisisanexampleextension\">description: This is an example extension.</h2>\n<h1 id=\"helloworldextension\">Hello world extension</h1>","changelog":"<h1 id=\"helloworldchangelog\">Hello world changelog</h1>","actions":{"log":{"key":"log","title":"Log hello world","description":"This is a dummy Custom Action for extension developers.","category":"Demo","fields":{"hello":{"id":"hello","label":"Hello","description":"A string field configured at design time","type":"string"},"secondField":{"id":"secondField","label":"Second Field","description":"A second field","required":false,"type":"string"},"thirdField":{"id":"thirdField","label":"Third Field","description":"A third field","required":false,"type":"numeric"}},"previewable":false,"dataPoints":{"world":{"key":"world","valueType":"string"},"clear":{"key":"clear","valueType":"string"},"secret":{"key":"secret","valueType":"string"}}},"logTwo":{"key":"log-two","title":"Log a second time","description":"This is a dummy Custom Action for extension developers.","category":"Demo","fields":{"hello":{"id":"hello","label":"Hello","description":"A string field configured at design time","type":"string"}},"previewable":false,"dataPoints":{"world":{"key":"world","valueType":"string"}}},"frontend":{"key":"frontend","title":"Frontend","description":"This is a dummy Custom Action for extension developers.","category":"Forms","fields":{"hello":{"id":"hello","label":"Hello","description":"A string field configured at design time","type":"string"}},"previewable":false,"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}},"dataPoints":{"world":{"key":"world","valueType":"string"}}},"failoWorld":{"key":"test-retry","title":"Fail-o World","description":"A test action that fails for a specified number of attempts to test the automated retry mechanism.","category":"Demo","fields":{"failureAttempts":{"id":"failureAttempts","label":"Number of attempts that should fail","description":"Specify how many attempts should fail before the action succeeds","type":"numeric","required":true}},"previewable":false,"supports_automated_retries":true,"dataPoints":{"currentAttempt":{"key":"currentAttempt","valueType":"number"},"result":{"key":"result","valueType":"string"}}}},"webhooks":[{"key":"demo","dataPoints":{"eventType":{"key":"eventType","valueType":"string"},"hello":{"key":"webhookDataPoint","valueType":"string"},"a_string":{"key":"a_string","valueType":"string"},"a_number":{"key":"a_number","valueType":"number"},"a_boolean":{"key":"a_boolean","valueType":"boolean"},"a_date":{"key":"a_date","valueType":"date"},"a_phone":{"key":"a_phone","valueType":"telephone"},"a_json":{"key":"a_json","valueType":"json"}}}],"description":"An example extension developers can look at to get started with building their first extension.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1678870116/Awell%20Extensions/Awell_Logo.png","title":"Hello World !","category":"Demo","author":{"authorType":"Awell"},"settings":{"clear":{"key":"clear","label":"Clear text","obfuscated":false,"description":"A clear text value needed by the extension like an API endpoint."},"secret":{"key":"secret","label":"Secret","obfuscated":true,"description":"A secret value needed by the extension like an API key."}}},{"key":"hubspot","htmlDocs":"<hr />\n<p>title: Hubspot</p>\n<h2 id=\"descriptionhubspotisacustomerrelationshipmanagementcrmplatformthatprovidesasuiteoftoolsformarketingsalescustomerserviceandcontentmanagement\">description: HubSpot is a customer relationship management (CRM) platform that provides a suite of tools for marketing, sales, customer service, and content management.</h2>\n<h2 id=\"hubspot\">Hubspot</h2>\n<p>HubSpot is a customer relationship management (CRM) platform that offers a comprehensive suite of tools for marketing, sales, customer service, and content management. It is widely recognized for its user-friendly interface and inbound marketing methodology, which focuses on attracting customers through valuable content and experiences instead of traditional advertising.</p>\n<p>HubSpot provides features like email marketing, social media management, lead generation, analytics, and automation to help businesses attract, engage, and delight customers.</p>\n<h2 id=\"settingsandsetup\">Settings and Setup</h2>\n<p>To use the HubSpot extension, you need an access token to authenticate with the HubSpot API. We recommend creating a <a href=\"https://developers.hubspot.com/docs/api/private-apps\">private app</a> in your HubSpot account for Awell and using the provided access token. You should only provide the minimum scopes necessary for the actions you intend to use. The required scopes for each action are listed in the documentation below.</p>\n<h3 id=\"smtpauthentication\">SMTP Authentication</h3>\n<p>If you plan to use the \"Send email with SMTP\" action, you will need to provide your username and password to authenticate requests to HubSpot's SMTP server.</p>\n<h3 id=\"addons\">Add-ons</h3>\n<p>Sending transactional emails via HubSpot requires you to add the <a href=\"https://knowledge.hubspot.com/marketing-email/how-to-use-transactional-email-in-hubspot\">corresponding add-ons</a> to your HubSpot account.</p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"createorupdatecontact\">Create or update contact</h3>\n<p>Creates or updates a contact in HubSpot using the provided information. The patient is matched based on their email address—if a match is found, the existing contact is updated (PATCH); otherwise, a new contact is created.</p>\n<p>Scope: <code>crm.objects.contacts.write</code></p>\n<h3 id=\"getcontact\">Get contact</h3>\n<p>Retrieve the details of a contact based on the provided contact ID.</p>\n<p>Scope: <code>crm.objects.contacts.read</code></p>\n<h3 id=\"sendemailwithsmtp\">Send email with SMTP</h3>\n<p>Send an email using HubSpot's SMTP server.</p>\n<p>Sending emails via SMTP has some limitations. The most significant drawback is that you cannot use templates or apply styling when sending emails through SMTP. SMTP is generally more manual and less integrated with HubSpot's smart content and template features.</p>\n<p>Scope: N/A</p>\n<h3 id=\"sendemailwithsinglesendapi\">Send email with Single Send API</h3>\n<p>The Single Send API is the recommended method for sending transactional emails with HubSpot. You can create email templates in your HubSpot account and use this action to send emails to recipients. This method allows you to take advantage of features like smart content and personalization.</p>\n<p>Scope: <code>transactional-email</code></p>","changelog":"<h1 id=\"hubspotchangelog\">Hubspot changelog</h1>","actions":{"createOrUpdateContact":{"key":"createOrUpdateContact","title":"Create or update contact","description":"Create or update a contact in HubSpot","category":"Customer Support","fields":{"email":{"id":"email","label":"Email","description":"The email of the contact","type":"string","required":true},"firstName":{"id":"firstName","label":"First name","description":"The first name of the contact","type":"string","required":false},"lastName":{"id":"lastName","label":"Last name","description":"The last name of the contact","type":"string","required":false},"phone":{"id":"phone","label":"Phone","description":"The phone number of the contact","type":"string","stringType":"phone","required":false},"customProperties":{"id":"customProperties","label":"Custom properties","description":"An object of key-values pairs of custom properties of the contact","type":"json","required":false}},"previewable":true,"dataPoints":{"hubspotContactId":{"key":"hubspotContactId","valueType":"string"},"contactResource":{"key":"contactResource","valueType":"json"}}},"getcontact":{"key":"getcontact","title":"Get contact","description":"Retrieve the contact details from HubSpot","category":"Customer Support","fields":{"contactId":{"id":"contactId","label":"Contact ID","description":"","type":"string","required":true}},"previewable":true,"dataPoints":{"firstName":{"key":"firstName","valueType":"string"},"lastName":{"key":"lastName","valueType":"string"},"email":{"key":"email","valueType":"string"}}},"sendEmailWithSmtp":{"key":"sendEmailWithSmtp","title":"Send email (SMTP)","description":"Send email with SMTP","category":"Customer Support","fields":{"from":{"id":"from","label":"From","description":"","type":"string","required":true},"to":{"id":"to","label":"To","description":"","type":"string","required":true},"subject":{"id":"subject","label":"Subject","description":"","type":"string","required":true},"message":{"id":"message","label":"Message","description":"","type":"html","required":true}},"previewable":true,"dataPoints":{}},"sendEmailWithSingleSendApi":{"key":"sendEmailWithSingleSendApi","title":"Send email (Single Send API)","description":"Send email with the Single Send API","category":"Customer Support","fields":{"emailId":{"id":"emailId","label":"Email ID","description":"The ID of the email (template)","type":"string","required":true},"from":{"id":"from","label":"From","description":"","type":"string","required":true},"to":{"id":"to","label":"To","description":"","type":"string","required":true},"contactProperties":{"id":"contactProperties","label":"Contact properties","description":"A JSON map of contact property values. Each property will be set on the contact record.","type":"json","required":false},"customProperties":{"id":"customProperties","label":"Custom properties","description":"A JSON map of key-value properties that will be rendered in the template.","type":"json","required":false}},"previewable":true,"dataPoints":{"statusId":{"key":"statusId","valueType":"string"}}}},"webhooks":[],"description":"HubSpot is a customer relationship management (CRM) platform that provides a suite of tools for marketing, sales, customer service, and content management.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1726325417/Awell%20Extensions/168_Hubspot_logo_logos-512.webp","title":"HubSpot","category":"Customer Support","author":{"authorType":"Awell"},"settings":{"accessToken":{"key":"accessToken","label":"Access token","obfuscated":true,"required":true,"description":"The access token will be used to authenticate requests to the HubSpot API"},"smtpUsername":{"key":"smtpUsername","label":"SMTP Username","obfuscated":false,"required":false,"description":"Only required if you wish to send emails via the HubSpot SMTP API"},"smtpPassword":{"key":"smtpPassword","label":"SMTP Password","obfuscated":true,"required":false,"description":"Only required if you wish to send emails via the HubSpot SMTP API"}}},{"key":"identityVerification","htmlDocs":"<hr />\n<p>title: Identity verification</p>\n<h2 id=\"descriptionverifytheidentityofthepatientbyaskingtheirdateofbirth\">description: Verify the identity of the patient by asking their date of birth</h2>\n<h2 id=\"identityverification\">Identity verification</h2>\n<p>Verify the patient's identity by asking for a piece of personal information, such as their date of birth. If the information provided by the user does not match the details stored in the patient's profile, the user will not be allowed to proceed to the activity inside the Hosted Pages app.</p>","changelog":"<h1 id=\"identityverificationchangelog\">Identity verification changelog</h1>","actions":{"dobCheck":{"key":"dobCheck","title":"DOB verification","description":"The user will be prompted to enter a dob which will be checked against the dob stored in the patient profile","category":"Workflow","fields":{"label":{"id":"label","label":"Label","description":"Label shown to the user above the date input","type":"string","required":false}},"previewable":false,"dataPoints":{"success":{"key":"success","valueType":"boolean"}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}}}},"webhooks":[],"description":"Verify the patient's identity by asking for a piece of personal information, such as their date of birth. ","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1725995141/Awell%20Extensions/120965-200.png","title":"Identity Verification","category":"Customer Support","author":{"authorType":"Awell"},"settings":{}},{"key":"infobip","htmlDocs":"<hr />\n<p>title: Infobip</p>\n<h2 id=\"descriptioninfobipisaglobalcloudcommunicationsplatformthatprovidesawiderangeofcommunicationandcustomerengagementsolutionsforbusinesses\">description: Infobip is a global cloud communications platform that provides a wide range of communication and customer engagement solutions for businesses.</h2>\n<h1 id=\"infobip\">Infobip</h1>\n<p>Infobip is a global cloud communications platform that provides a wide range of communication and customer engagement solutions for businesses. The company offers a suite of services and tools designed to help organizations connect with their customers, clients, and partners through various communication channels, including SMS, email, voice, chat apps, and more.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will minimally need to provide:</p>\n<ol>\n<li>Your unique API <a href=\"https://www.infobip.com/docs/essentials/base-url\">base URL</a></li>\n<li>An <a href=\"https://www.infobip.com/docs/essentials/api-authentication\">API key</a></li>\n</ol>\n<p>When utilizing the Infobip extension for sending emails and text messages, you'll need a 'from email' address and a 'from phone number' respectively.</p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"sendsms\">Send SMS</h3>\n<p>Send a text message to a recipient.</p>\n<h3 id=\"sendemail\">Send email</h3>\n<p>Sends a simple email to a recipient.</p>\n<h3 id=\"sendemailwithtemplate\">Send email with template</h3>\n<p>Send an email, using a template, to a recipient. You need to create a <a href=\"https://www.infobip.com/docs/email/templates\">Broadcast email template</a> as that is the only type of template supported by Infobip's API. Templates can be created and managed via the Infobip web portal.</p>\n<p>When using this action, the from/sender details and subject as specified in the template will be used. However, you can specify a subject if you would like to overwrite the subject specified in the template.</p>\n<p>Within your template, you can harness placeholders using Infobip's <code>{{</code> syntax. This feature allows you to craft templates with both static and dynamic content. You can determine the dynamic content's value when configuring the action in Awell Studio. For instance, if your template includes two placeholders, <code>{{variable_1}}</code> and <code>{{variable_2}}</code>, you can provide the following data in the placeholders action field to set values for these placeholders:</p>\n<pre><code class=\"json language-json\">{\n  \"variable_1\": \"Hello\",\n  \"variable_2\": \"World\"\n}\n</code></pre>","changelog":"<h1 id=\"infobipchangelog\">Infobip changelog</h1>","actions":{"sendSms":{"key":"sendSms","title":"Send SMS","description":"Sends SMS using Infobip","category":"Communication","fields":{"from":{"label":"From","id":"from","type":"string","stringType":"phone","required":false,"description":"The phone number you wish to use for sending the text message. Defaults to value provided in settings."},"to":{"label":"To","id":"to","type":"string","stringType":"phone","required":true,"description":"The phone number to which you intend to send the text message"},"text":{"id":"text","label":"Content","type":"text","required":true,"description":"The content of the message being sent"}},"previewable":true},"sendEmail":{"key":"sendEmail","title":"Send email","description":"Sends email using Infobip","category":"Communication","fields":{"from":{"label":"From","id":"from","type":"string","required":false,"description":"The email address you wish to use for sending emails. Defaults to value provided in settings."},"to":{"label":"To","id":"to","type":"string","required":true,"description":"The email address to which you intend to send the email"},"subject":{"label":"Subject","id":"subject","type":"string","required":true,"description":""},"content":{"label":"Content","id":"content","type":"html","required":true,"description":""}},"previewable":true},"sendEmailWithTemplate":{"key":"sendEmailWithTemplate","title":"Send email with template","description":"Sends email with a template using Infobip","category":"Communication","fields":{"to":{"label":"To","id":"to","type":"string","required":true,"description":"The email address to which you intend to send the email"},"subject":{"label":"Subject","id":"subject","type":"string","required":false,"description":"When provided, it overwrites the subject specified in the Broadcast template"},"templateId":{"label":"Template ID","id":"templateId","type":"numeric","required":true,"description":"The ID of the template used for generating email content"},"placeholders":{"label":"Placeholders","id":"placeholders","type":"json","required":true,"description":"The values for the placeholders defined in your template. Must be a valid key-value pair JSON object."}},"previewable":true}},"webhooks":[],"description":"Infobip is a global cloud communications platform that provides a wide range of communication and customer engagement solutions for businesses.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1697459181/Awell%20Extensions/download_3.png","title":"Infobip","category":"Communication","author":{"authorType":"Awell"},"settings":{"baseUrl":{"label":"Base URL","key":"baseUrl","obfuscated":false,"required":true,"description":"Your unique API base URL"},"apiKey":{"label":"API key","key":"apiKey","obfuscated":true,"required":true,"description":"Your Infobip API key"},"fromPhoneNumber":{"label":"From phone number","key":"fromPhoneNumber","obfuscated":false,"required":true,"description":"The phone number you wish to use for sending text messages, must be in E.164 format (eg. +19033428784)"},"fromEmail":{"label":"From email","key":"fromEmail","obfuscated":false,"required":true,"description":"The email address you wish to use for sending text messages. When you are using Broadcast templates, the from email defined in the template will be used."}}},{"key":"iterable","htmlDocs":"<hr />\n<p>title: Iterable</p>\n<h2 id=\"descriptioniterableisanemailmarketingautomationplatformthatallowscreatingsendingandtrackingpersonalizedemailcampaigns\">description: Iterable is an email marketing automation platform that allows creating, sending, and tracking personalized email campaigns.</h2>\n<h1 id=\"iterable\">Iterable</h1>\n<p>Iterable is a marketing automation platform that provides tools and services for businesses to engage with their customers through email, SMS, in-app notifications, and other digital channels. It allows businesses to create and manage personalized marketing campaigns, track customer behavior, and analyze data to optimize their marketing strategies.</p>\n<p>Iterable offers features such as email marketing, segmentation, A/B testing, workflow automation, and analytics to help businesses deliver the right message to the right audience at the right time.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will need an API key to authenticate with the Iterable API.</p>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"sendemail\">Send email</h3>\n<p>Send an email to a specific email address.</p>\n<p><strong>Important:</strong> Provide a <code>recipientEmail</code> or a <code>recipientUserId</code> (but not both), depending on how your <a href=\"https://support.iterable.com/hc/articles/204780579#identifying-users\">project identifies users</a>.</p>\n<h3 id=\"trackevent\">Track Event</h3>\n<p>Track an event in Iterable.</p>\n<p><strong>Important:</strong> Provide an <code>email</code> or a <code>userId</code> (but not both), depending on how your <a href=\"https://support.iterable.com/hc/articles/204780579#identifying-users\">project identifies users</a>.</p>","changelog":"<h1 id=\"iterablechangelog\">Iterable changelog</h1>","actions":{"sendEmail":{"key":"sendEmail","title":"Send email","description":"Send an email to a specific email address.","category":"Communication","fields":{"campaignId":{"label":"Campaign ID","id":"campaignId","type":"numeric","required":true,"description":""},"recipientEmail":{"label":"Recipient email","id":"recipientEmail","type":"string","required":false,"description":"An email address that identifies a user profile in Iterable. Provide a recipient email or a recipient user ID, but not both, depending on how your project identifies users."},"recipientUserId":{"label":"Recipient user ID","id":"recipientUserId","type":"string","required":false,"description":"A user ID that identifies a user profile in Iterable. Provide a recipient email or a recipient user ID, but not both, depending on how your project identifies users."},"dataFields":{"label":"Data fields","id":"dataFields","type":"json","required":false,"description":"Fields to merge into email template."},"allowRepeatMarketingSends":{"label":"Allow repeat marketing sends?","id":"allowRepeatMarketingSends","type":"boolean","required":false,"description":"Defaults to true."},"metadata":{"label":"Metadata","id":"metadata","type":"json","required":false,"description":"Metadata to pass back via webhooks. Not used for rendering."}},"previewable":true},"trackEvent":{"key":"trackEvent","title":"Track event","description":"Track an event in Iterable","category":"Communication","fields":{"email":{"id":"email","label":"Email","type":"string","required":false,"description":"An email address that identifies a user profile in Iterable. Provide a recipient email or a recipient user ID, but not both, depending on how your project identifies users."},"userId":{"id":"userId","label":"User ID","type":"string","required":false,"description":"A user ID that identifies a user profile in Iterable. Provide a recipient email or a recipient user ID, but not both, depending on how your project identifies users."},"eventName":{"id":"eventName","label":"Event name","type":"string","required":true,"description":""},"dataFields":{"label":"Data fields","id":"dataFields","type":"json","required":false,"description":"Additional data associated with event"}},"previewable":true}},"webhooks":[],"description":"Iterable is an email marketing automation platform that allows creating, sending, and tracking personalized email campaigns.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1696933028/Awell%20Extensions/logo_1668536435066.jpg","title":"Iterable","category":"Communication","author":{"authorType":"Awell"},"settings":{"apiKey":{"label":"API key","key":"apiKey","obfuscated":true,"required":true,"description":"API key used to authenticate with the Iterable API"}}},{"key":"landingAi","htmlDocs":"<hr />\n<p>title: Landing.ai</p>\n<h2 id=\"descriptionturnyourdocumentsandimagesintovisualintelligencelandingaiscuttingedgesoftwareplatformmakescomputervisioneasyforawiderangeofapplicationsacrossallindustries\">description: Turn your documents and images into visual intelligence. LandingAI’s cutting-edge software platform makes computer vision easy for a wide range of applications across all industries.</h2>\n<h1 id=\"landingai\">Landing.ai</h1>\n<p>Turn your documents and images into visual intelligence. LandingAI’s cutting-edge software platform makes computer vision easy for a wide range of applications across all industries.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>To enable the extension, you must configure an API key. You can obtain this key from the Landing.ai platform.</p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"documentextraction\">Document extraction</h3>\n<p>Extract structured data from an image or PDF by providing a URL to the file. Please note that the file has to be publicly accessible. If you require enhanced security, we can also build custom connectors to access secure data stores such as Google Cloud Storage (GCS), AWS, and others. Please contact our customer support team to explore this option.</p>\n<p>In most cases, you'll want to specify the \"Fields schema\", which allows you to define what data to extract and the desired output format. This schema must be written in JSON following a specific format.</p>\n<p>We recommend creating the schema using Landing.ai’s playground, <a href=\"https://docs.landing.ai/ade/ade-extract-playground#export-the-schema\">exporting it</a>, and then copying it into Awell.</p>\n<p>Example schema:</p>\n<pre><code class=\"json language-json\">{\n  \"type\": \"object\",\n  \"title\": \"Physician Referral Extraction Schema\",\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"required\": [\n    \"date_of_birth\",\n    \"urgency\",\n    \"Referral reason\"\n  ],\n  \"properties\": {\n    \"date_of_birth\": {\n      \"type\": \"string\",\n      \"format\": \"YYYY-MM-DD\",\n      \"description\": \"Date of birth of the patient\"\n    },\n    \"urgency\": {\n      \"type\": \"string\",\n      \"description\": \"Urgency of the referral\"\n    },\n    \"Referral reason\": {\n      \"type\": \"string\",\n      \"description\": \"Reason of the referral\"\n    }\n  },\n  \"description\": \"Schema for extracting high-value, form-like fields from a physician's referral markdown document.\"\n}\n</code></pre>","changelog":"<h1 id=\"changelog\">CHANGELOG</h1>","actions":{"documentExtraction":{"key":"documentExtraction","title":"Document extraction","description":"Extract structured data from documents and images","category":"Document Management","fields":{"fileType":{"id":"fileType","label":"File type","description":"The type of file to extract data from","type":"string","options":{"dropdownOptions":[{"label":"Image","value":"image"},{"label":"PDF","value":"pdf"}]},"required":true},"fileUrl":{"id":"fileUrl","label":"File URL","description":"The URL of the file to extract data from","type":"string","required":true},"fieldsSchema":{"id":"fieldsSchema","label":"Fields schema","description":"Defines the structure of the fields to extract from the document. Providing a schema is optional but strongly recommended, as it significantly improves the accuracy of the extracted data.","type":"json","required":false}},"previewable":true,"dataPoints":{"markdown":{"key":"markdown","valueType":"string"},"chunks":{"key":"chunks","valueType":"json"},"extractedDataBasedOnSchema":{"key":"extractedDataBasedOnSchema","valueType":"json"},"extractedMetadata":{"key":"extractedMetadata","valueType":"json"}}}},"webhooks":[],"description":"Turn your documents and images into visual intelligence. LandingAI’s cutting-edge software platform makes computer vision easy for a wide range of applications across all industries.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1752834756/Awell%20Extensions/34525670.png","title":"Landing.ai","category":"Document Management","author":{"authorType":"Awell"},"settings":{"apiKey":{"key":"apiKey","label":"API key","description":"","required":true,"obfuscated":true}}},{"key":"mailchimp","htmlDocs":"<hr />\n<p>title: Mailchimp</p>\n<h2 id=\"descriptionmailchimpisanallinonemarketingplatformthathelpsbusinessesofallsizestodesignsendandmanageemailcampaignsautomatemarketingtasksandbuildcustomerrelationships\">description: Mailchimp is an all-in-one marketing platform that helps businesses of all sizes to design, send, and manage email campaigns, automate marketing tasks, and build customer relationships. </h2>\n<h1 id=\"mailchimp\">Mailchimp</h1>\n<p>Mailchimp is an all-in-one marketing platform that helps businesses of all sizes to design, send, and manage email campaigns, automate marketing tasks, and build customer relationships. </p>\n<p>It offers a user-friendly interface that allows users to create custom email templates, segment their audience, and track their email campaign's performance with real-time analytics.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will need to provide a:</p>\n<ol>\n<li>API key</li>\n<li>From name</li>\n<li>From email</li>\n</ol>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"sendemail\">Send email</h3>\n<p>Allows for sending a plain email to a recipient.</p>\n<h3 id=\"sendemailwithatemplate\">Send email with a template</h3>\n<p>Allows for sending an email based on a template to a recipient. You can also insert variables so they are rendered in your template.</p>","changelog":"<h1 id=\"mailchimpchangelog\">Mailchimp changelog</h1>","actions":{"sendEmail":{"key":"sendEmail","title":"Send email","description":"Send an email.","category":"Communication","fields":{"to":{"id":"to","label":"To","description":"The email address of the recipient.","type":"string","required":true},"subject":{"id":"subject","label":"Subject","description":"The subject of your email.","type":"string","required":true},"body":{"id":"body","label":"Body","description":"The content of your message.","type":"html","required":true}},"previewable":false},"sendEmailWithTemplate":{"key":"sendEmailWithTemplate","title":"Send email with template","description":"Send an email based on a template to a recipient of your choice.","category":"Communication","fields":{"to":{"id":"to","label":"To","description":"The email address of the recipient.","type":"string","required":true},"templateName":{"id":"templateName","label":"Template name","description":"The immutable name or slug of a template that exists in your account.","type":"string","required":true},"subject":{"id":"subject","label":"Subject","description":"The subject of your email.","type":"string","required":true},"templateContent":{"id":"templateContent","label":"Template content","description":"An array of template content to send. Each item in the array should be a struct with two keys - name: the name of the content block to set the content for, and content: the actual content to put into the block","type":"json","required":false}},"previewable":false}},"webhooks":[],"description":"Mailchimp is an all-in-one marketing platform that helps businesses to design, send, and manage email campaigns.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1681285075/Awell%20Extensions/Mailchimp-Logo.png","title":"Mailchimp","category":"Communication","author":{"authorType":"Awell"},"settings":{"apiKey":{"key":"apiKey","label":"API Key","obfuscated":true,"required":true,"description":"Your Mailchimp API Key so the extension can authenticate with the Mailchimp API."},"fromName":{"key":"fromName","label":"From name","obfuscated":false,"required":true,"description":"The name that will be used for the \"From\" header."},"fromEmail":{"key":"fromEmail","label":"From email","obfuscated":false,"required":true,"description":"The email address that will be used for the \"From\" header."}}},{"key":"mailgun","htmlDocs":"<hr />\n<p>title: Mailgun</p>\n<h2 id=\"descriptionmailgunisacloudbasedemaildeliveryservicethatallowsbusinessesanddeveloperstosendreceiveandtrackemailmessages\">description: Mailgun is a cloud-based email delivery service that allows businesses and developers to send, receive, and track email messages.</h2>\n<h1 id=\"mailgun\">Mailgun</h1>\n<p>Mailgun is a cloud-based email delivery service that allows businesses and developers to send, receive, and track email messages. It provides a powerful set of APIs that enable users to integrate email into their applications, automate email delivery, and improve deliverability rates. </p>\n<p>With Mailgun, users can send transactional emails as well as marketing emails, newsletters, and other types of bulk email. The platform also offers real-time email analytics and tools to manage unsubscribes and bounces. Overall, Mailgun provides a reliable and scalable solution for businesses and developers to handle their email needs.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will need to provide a:</p>\n<ol>\n<li>Mailgun API key</li>\n<li>Mailgun domain</li>\n<li>From name</li>\n<li>From email</li>\n</ol>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"sendemail\">Send email</h3>\n<p>Allows for sending a plain email to a recipient.</p>\n<h3 id=\"sendemailwithatemplate\">Send email with a template</h3>\n<p>Allows for sending an email based on a template to a recipient. You can also insert variables so they are rendered in your template.</p>","changelog":"<h1 id=\"mailgunchangelog\">Mailgun changelog</h1>","actions":{"sendEmail":{"key":"sendEmail","title":"Send email","description":"Send an email to a recipient of your choice.","category":"Communication","fields":{"to":{"id":"to","label":"To","description":"The email address of the recipient.","type":"string","required":true},"subject":{"id":"subject","label":"Subject","description":"The subject of your email.","type":"string","required":true},"body":{"id":"body","label":"Body","description":"The content of your message.","type":"html","required":true}},"previewable":false},"sendEmailWithTemplate":{"key":"sendEmailWithTemplate","title":"Send email with template","description":"Send an email based on a template.","category":"Communication","fields":{"to":{"id":"to","label":"To","description":"The email address of the recipient.","type":"string","required":true},"template":{"id":"template","label":"Template","description":"The name of the template you created in the Mailgun web portal.","type":"string","required":true},"subject":{"id":"subject","label":"Subject","description":"The subject of your email.","type":"string","required":true},"variables":{"id":"variables","label":"Variables","description":"Pass values for variables you defined in your template.","type":"json","required":false}},"previewable":true}},"webhooks":[],"description":"Mailgun is a cloud-based email service provider that allows for sending transactional emails.","icon_url":"https://cdn.freebiesupply.com/logos/large/2x/mailgun-logo-png-transparent.png","title":"Mailgun","category":"Communication","author":{"authorType":"Awell"},"settings":{"apiKey":{"key":"apiKey","label":"API Key","obfuscated":true,"required":true,"description":"Your Mailgun API Key so the extension can authenticate with the Mailgun API."},"domain":{"key":"domain","label":"Domain","obfuscated":false,"required":true,"description":"The domain used to send the emails from."},"fromName":{"key":"fromName","label":"From name","obfuscated":false,"required":true,"description":"The name that will be used for the \"From\" header."},"fromEmail":{"key":"fromEmail","label":"From email","obfuscated":false,"required":true,"description":"The email address that will be used for the \"From\" header."},"region":{"key":"region","label":"Region","obfuscated":false,"required":false,"description":"Sending domains can be provisioned in different regions. Pass \"EU\" for Europe or \"US\" for United States. Defaults to \"US\"."},"testMode":{"key":"testMode","label":"Test mode","obfuscated":false,"required":false,"description":"Set to \"Yes\" if you want to execute all API calls to Mailgun in test mode."}}},{"key":"math","htmlDocs":"<hr />\n<p>title: Math</p>\n<h2 id=\"descriptionthisextensionaddscustomactionstoyourcareflowforsimplemathematicaloperations\">description: This extension adds custom actions to your care flow for simple mathematical operations.</h2>\n<h1 id=\"math\">Math</h1>\n<p>This extension adds custom actions to your care flow for simple mathematical operations.</p>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"sum\">Sum</h3>\n<p>Calculate the sum of two or more addends.</p>\n<h3 id=\"subtract\">Subtract</h3>\n<p>Calculate the difference between two numbers.</p>\n<h3 id=\"multiply\">Multiply</h3>\n<p>Multiply a series of numbers to get a final product.</p>\n<h3 id=\"divide\">Divide</h3>\n<p>Divide two numbers.</p>\n<h3 id=\"generaterandomnumber\">Generate random number</h3>\n<p>Generates a random (whole) number that falls between the ranges of two numbers [min, max].</p>\n<h3 id=\"assigntocohort\">Assign to cohort</h3>\n<p>Deterministically assign any string value (e.g. patient ID, email, UUID) to a cohort number between 1 and a given number of cohorts. The same input will always produce the same cohort, making this action ideal for A/B testing and patient randomization.</p>\n<p><strong>Inputs:</strong></p>\n<ul>\n<li><strong>Input value</strong>: Any string used to determine the cohort assignment.</li>\n<li><strong>Number of cohorts</strong>: The total number of cohorts to distribute inputs across (must be &gt;= 1).</li>\n</ul>\n<p><strong>Output:</strong></p>\n<ul>\n<li><strong>Cohort number</strong>: An integer between 1 and the number of cohorts (inclusive).</li>\n</ul>\n<blockquote>\n  <p><strong>Note:</strong> When the number of cohorts changes, a patient's assigned cohort may change because the underlying hash modulo base changes. This action does not guarantee cohort stability across different values of the number of cohorts.</p>\n</blockquote>\n<h3 id=\"calculatedatedifference\">Calculate date difference</h3>\n<p>Calculate the difference between two dates where \"date left\" is the minuend and \"date right\" the subtrahend.</p>\n<p><strong>You can choose the unit in which you would like to see the difference expressed:</strong></p>\n<ol>\n<li>Seconds: get the number of seconds between the given dates. Fractional seconds are truncated towards zero.</li>\n<li>Minutes: get the signed number of full (rounded towards 0) minutes between the given dates. Fractional minutes are truncated towards zero.</li>\n<li>Hours: get the number of hours between the given dates. Fractional hours are truncated towards zero.</li>\n<li>Days: get the number of full day periods between two dates. Fractional days are truncated towards zero.</li>\n<li>Weeks: get the number of full weeks between two dates. Fractional weeks are truncated towards zero.</li>\n<li>Months: get the number of full months between the given dates. Fractional months are truncated towards zero.</li>\n<li>Years: get the number of full years between the given dates.</li>\n</ol>","changelog":"<h1 id=\"mathchangelog\">Math changelog</h1>","actions":{"generateRandomNumber":{"key":"generateRandomNumber","title":"Generate random number","description":"Generate a random number between a given range.","category":"Math","fields":{"min":{"id":"min","label":"Minimum number","description":"The minimum number in the range (INCLUSIVE). Should be an integer.","required":true,"type":"numeric"},"max":{"id":"max","label":"Maximum number","description":"The maximum end of the range (INCLUSIVE). Should be an integer.","required":true,"type":"numeric"}},"dataPoints":{"generatedNumber":{"key":"generatedNumber","valueType":"number"}},"previewable":true},"calculateDateDifference":{"key":"calculateDateDifference","title":"Calculate date difference","description":"Calculate the difference between 2 dates in a unit of your choice.","category":"Math","fields":{"dateLeft":{"id":"dateLeft","label":"Date left (minuend)","description":"The date from which the other date (date right) is to be subtracted.","required":true,"type":"date"},"dateRight":{"id":"dateRight","label":"Date right (subtrahend)","description":"The date to be subtracted from the other date (date left).","required":true,"type":"date"},"unit":{"id":"unit","label":"Duration unit","description":"The unit of duration","required":true,"type":"string","options":{"dropdownOptions":[{"label":"seconds","value":"seconds"},{"label":"minutes","value":"minutes"},{"label":"hours","value":"hours"},{"label":"days","value":"days"},{"label":"weeks","value":"weeks"},{"label":"months","value":"months"},{"label":"years","value":"years"}]}}},"dataPoints":{"dateDifference":{"key":"dateDifference","valueType":"number"}},"previewable":true},"subtract":{"key":"subtract","title":"Subtract","description":"Calculate the difference between two numbers","category":"Math","fields":{"minuend":{"id":"minuend","label":"Minuend","description":"","required":true,"type":"numeric"},"subtrahend":{"id":"subtrahend","label":"Subtrahend","description":"","required":true,"type":"numeric"}},"dataPoints":{"difference":{"key":"difference","valueType":"number"},"absoluteDifference":{"key":"absoluteDifference","valueType":"number"}},"previewable":true},"sum":{"key":"sum","title":"Sum","description":"Calculate the sum of two or more addends","category":"Math","fields":{"addend_01":{"id":"addend_01","label":"Addend","description":"","required":true,"type":"numeric"},"addend_02":{"id":"addend_02","label":"Addend","description":"","required":true,"type":"numeric"},"addend_03":{"id":"addend_03","label":"Addend","description":"","required":false,"type":"numeric"},"addend_04":{"id":"addend_04","label":"Addend","description":"","required":false,"type":"numeric"},"addend_05":{"id":"addend_05","label":"Addend","description":"","required":false,"type":"numeric"},"addend_06":{"id":"addend_06","label":"Addend","description":"","required":false,"type":"numeric"},"addend_07":{"id":"addend_07","label":"Addend","description":"","required":false,"type":"numeric"},"addend_08":{"id":"addend_08","label":"Addend","description":"","required":false,"type":"numeric"},"addend_09":{"id":"addend_09","label":"Addend","description":"","required":false,"type":"numeric"},"addend_10":{"id":"addend_10","label":"Addend","description":"","required":false,"type":"numeric"},"addend_11":{"id":"addend_11","label":"Addend","description":"","required":false,"type":"numeric"},"addend_12":{"id":"addend_12","label":"Addend","description":"","required":false,"type":"numeric"},"addend_13":{"id":"addend_13","label":"Addend","description":"","required":false,"type":"numeric"},"addend_14":{"id":"addend_14","label":"Addend","description":"","required":false,"type":"numeric"},"addend_15":{"id":"addend_15","label":"Addend","description":"","required":false,"type":"numeric"},"addend_16":{"id":"addend_16","label":"Addend","description":"","required":false,"type":"numeric"},"addend_17":{"id":"addend_17","label":"Addend","description":"","required":false,"type":"numeric"},"addend_18":{"id":"addend_18","label":"Addend","description":"","required":false,"type":"numeric"},"addend_19":{"id":"addend_19","label":"Addend","description":"","required":false,"type":"numeric"},"addend_20":{"id":"addend_20","label":"Addend","description":"","required":false,"type":"numeric"}},"dataPoints":{"sum":{"key":"sum","valueType":"number"}},"previewable":true},"divide":{"key":"divide","title":"Divide","description":"Divide two numbers","category":"Math","fields":{"dividend":{"id":"dividend","label":"Dividend","description":"","required":true,"type":"numeric"},"divisor":{"id":"divisor","label":"Divisor","description":"","required":true,"type":"numeric"}},"dataPoints":{"quotient":{"key":"quotient","valueType":"number"}},"previewable":true},"multiply":{"key":"multiply","title":"Multiply","description":"Multiply a series of numbers to get a final product","category":"Math","fields":{"factor_01":{"id":"factor_01","label":"Factor","description":"","required":true,"type":"numeric"},"factor_02":{"id":"factor_02","label":"Factor","description":"","required":true,"type":"numeric"},"factor_03":{"id":"factor_03","label":"Factor","description":"","required":false,"type":"numeric"},"factor_04":{"id":"factor_04","label":"Factor","description":"","required":false,"type":"numeric"},"factor_05":{"id":"factor_05","label":"Factor","description":"","required":false,"type":"numeric"},"factor_06":{"id":"factor_06","label":"Factor","description":"","required":false,"type":"numeric"},"factor_07":{"id":"factor_07","label":"Factor","description":"","required":false,"type":"numeric"},"factor_08":{"id":"factor_08","label":"Factor","description":"","required":false,"type":"numeric"},"factor_09":{"id":"factor_09","label":"Factor","description":"","required":false,"type":"numeric"},"factor_10":{"id":"factor_10","label":"Factor","description":"","required":false,"type":"numeric"},"factor_11":{"id":"factor_11","label":"Factor","description":"","required":false,"type":"numeric"},"factor_12":{"id":"factor_12","label":"Factor","description":"","required":false,"type":"numeric"},"factor_13":{"id":"factor_13","label":"Factor","description":"","required":false,"type":"numeric"},"factor_14":{"id":"factor_14","label":"Factor","description":"","required":false,"type":"numeric"},"factor_15":{"id":"factor_15","label":"Factor","description":"","required":false,"type":"numeric"},"factor_16":{"id":"factor_16","label":"Factor","description":"","required":false,"type":"numeric"},"factor_17":{"id":"factor_17","label":"Factor","description":"","required":false,"type":"numeric"},"factor_18":{"id":"factor_18","label":"Factor","description":"","required":false,"type":"numeric"},"factor_19":{"id":"factor_19","label":"Factor","description":"","required":false,"type":"numeric"},"factor_20":{"id":"factor_20","label":"Factor","description":"","required":false,"type":"numeric"}},"dataPoints":{"product":{"key":"product","valueType":"number"}},"previewable":true},"assignToCohort":{"key":"assignToCohort","title":"Assign to cohort","description":"Deterministically assign a value to a cohort number. Given the same input and number of cohorts, the result will always be the same.","category":"Math","fields":{"input":{"id":"input","label":"Input value","description":"Any string value used to determine the cohort assignment (e.g. patient ID, hash, email). The same input will always produce the same cohort.","required":true,"type":"string"},"numberOfCohorts":{"id":"numberOfCohorts","label":"Number of cohorts","description":"The total number of cohorts to distribute inputs across. Must be an integer greater than or equal to 1.","required":true,"type":"numeric"}},"dataPoints":{"cohortNumber":{"key":"cohortNumber","valueType":"number"}},"previewable":true}},"webhooks":[],"description":"The Math extension provides some useful actions to perform simple mathematical operations.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1679592864/Awell%20Extensions/maths.png","category":"Math","title":"Math","settings":{},"author":{"authorType":"Awell"}},{"key":"messagebird","htmlDocs":"<hr />\n<p>title: MessageBird</p>\n<h2 id=\"descriptionmessagebirdisacloudbasedsmsmarketingplatformdesignedtohelpbusinessesengagewithcustomersacrossavarietyofchannelsincludingwhatsappvoicelivechatandmore\">description: MessageBird is a cloud-based SMS marketing platform designed to help businesses engage with customers across a variety of channels including WhatsApp, voice, live chat and more.</h2>\n<h1 id=\"messagebird\">MessageBird</h1>\n<p>MessageBird is a cloud-based SMS marketing platform designed to help businesses engage with customers across a variety of channels including WhatsApp, voice, live chat and more.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will need to provide a MessageBird <a href=\"https://developers.messagebird.com/quickstarts/voice-calling/test-credits-api-keys/#get-your-api-keys\">API key</a> and  <a href=\"https://support.messagebird.com/hc/en-us/articles/360001854898-Receiving-Delivery-Reports-DLRs-#:~:text=To%20configure%20the%20status%20report,need%20to%20be%20sent%20to.\">report URL</a> (only required if you want to use WhatsApp messaging).</p>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"sendsms\">Send SMS</h3>\n<p>MessageBird's Programmable SMS API enables you to programmatically send SMS messages from within a care flow.</p>\n<p><a href=\"https://developers.messagebird.com/api/sms-messaging/#send-outbound-sms\">Read the official documentation</a></p>\n<h3 id=\"sendvoicetexttospeechmessage\">Send voice (text-to-speech) message</h3>\n<p>MessageBird's Voice Messaging API enables you to transform text messages into voice messages to any country.</p>\n<p><a href=\"https://developers.messagebird.com/api/voice-messaging/#send-a-voice-message\">Read the official documentation</a></p>\n<h3 id=\"sendwhatsappmessage\">Send WhatsApp message</h3>\n<p>Send a message to a recipient via WhatsApp. If an active conversation already exists for the recipient, the conversation will be resumed. In case there's no active conversation a new one is created.</p>\n<p><a href=\"https://messagebird.com/omnichannel/whatsapp\">Learn how to get started with MessageBird and WhatsApp</a></p>","changelog":"<h1 id=\"messagebirdchangelog\">MessageBird changelog</h1>","actions":{"sendSms":{"key":"sendSms","title":"Send SMS","description":"Send an SMS to a recipient of your choice.","category":"Communication","fields":{"originator":{"id":"originator","label":"Originator","description":"The sender of the message. This can be a telephone number (including country code) or an alphanumeric string.","type":"string","required":true},"recipient":{"id":"recipient","label":"Recipient","description":"The mobile number of the recipient.","type":"string","stringType":"phone","required":true},"body":{"id":"body","label":"Body","description":"The content of your message.","type":"text","required":true}},"previewable":true},"sendWhatsAppMessage":{"key":"sendWhatsAppMessage","title":"Send WhatsApp message","description":"Send a WhatsApp message to a recipient of your choice.","category":"Communication","fields":{"from":{"id":"from","label":"From","description":"The channel ID from which the message should be sent.","type":"string","required":true},"to":{"id":"to","label":"To","description":"Either a channel-specific identifier for the receiver (e.g. MSISDN for SMS or WhatsApp channels), or the ID of a MessageBird Contact.","type":"string","stringType":"phone","required":true},"content":{"id":"content","label":"Content","description":"The content of your message.","type":"text","required":true}},"previewable":true},"sendVoiceMessage":{"key":"sendVoiceMessage","title":"Send voice message","description":"Send a voice message to a recipient of your choice.","category":"Communication","fields":{"originator":{"id":"originator","label":"Originator","description":"The sender of the message. This can be a telephone number (including country code) or an alphanumeric string.","type":"string","required":false},"recipient":{"id":"recipient","label":"Recipient","description":"The mobile number of the recipient.","type":"string","stringType":"phone","required":true},"body":{"id":"body","label":"Body","description":"The content of your message.","type":"text","required":true},"language":{"id":"language","label":"Language","description":"The language in which the message needs to be read to the recipient. Default: en-gb.","type":"string","required":false},"voice":{"id":"voice","label":"Voice","description":"The voice in which the messages needs to be read to the recipient. Possible values are: `male`, `female`. Default: `female`","type":"string","required":false}},"previewable":true}},"webhooks":[],"description":"MessageBird is a cloud-based communication platform with support for a variety of channels including WhatsApp, voice, live chat and more.","icon_url":"https://developers.messagebird.com/img/glyph.svg","title":"MessageBird","category":"Communication","author":{"authorType":"Awell"},"settings":{"apiKey":{"label":"API Key","key":"apiKey","obfuscated":true,"required":true,"description":"Your MessageBird API key."},"reportUrl":{"label":"Report URL","key":"reportUrl","obfuscated":false,"required":false,"description":"The URL for delivery of status reports for messages. Must be HTTPS."}}},{"key":"medplum","htmlDocs":"<hr />\n<p>title: Medplum</p>\n<h2 id=\"descriptionmedplumistheopensourcehealthcaredeveloperplatformthathelpsyoubuildtestanddeliveranyhealthcareproductorservice\">description: Medplum is the open source healthcare developer platform that helps you build, test, and deliver any healthcare product or service.</h2>\n<h1 id=\"medplum\">Medplum</h1>\n<p>Medplum is the open source healthcare developer platform that helps you build, test, and deliver any healthcare product or service.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>The following settings are required to configure the Medplum extension:</p>\n<ul>\n<li><strong>Client ID</strong>: Used to authenticate with Medplum's API (required)</li>\n<li><strong>Client Secret</strong>: Used to authenticate with Medplum's API (required)</li>\n<li><strong>Base URL</strong>: Optional custom base URL for your Medplum server (e.g., <code>https://api.medplum.com/</code>). Leave empty to use the default Medplum server.</li>\n</ul>","changelog":"<h1 id=\"medplumchangelog\">Medplum changelog</h1>","actions":{"getPatient":{"key":"getPatient","title":"Get patient","description":"Retrieve patient details from Medplum","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The identifier of the patient in Medplum","type":"string","required":true}},"previewable":true,"dataPoints":{"patientData":{"key":"patientData","valueType":"json"},"patientFirstName":{"key":"patientFirstName","valueType":"string"},"patientLastName":{"key":"patientLastName","valueType":"string"},"patientDob":{"key":"patientDob","valueType":"date"},"patientGender":{"key":"patientGender","valueType":"string"}}},"createPatient":{"key":"createPatient","title":"Create patient","description":"Create a patient in Medplum","category":"EHR Integrations","fields":{"firstName":{"id":"firstName","label":"First name","description":"","type":"string","required":false},"lastName":{"id":"lastName","label":"Last name","description":"","type":"string","required":false},"mobilePhone":{"id":"mobilePhone","label":"Mobile phone","description":"","type":"string","stringType":"phone","required":false},"email":{"id":"email","label":"Email","description":"","type":"string","required":false},"birthDate":{"id":"birthDate","label":"Birth date","description":"","type":"date","required":false},"gender":{"id":"gender","label":"Gender","description":"Valid values are \"male\", \"female\", \"other\", \"unknown\"","type":"string","required":false},"address":{"id":"address","label":"Address","description":"","type":"string","required":false},"city":{"id":"city","label":"City","description":"","type":"string","required":false},"state":{"id":"state","label":"State","description":"","type":"string","required":false},"country":{"id":"country","label":"Country","description":"","type":"string","required":false},"postalCode":{"id":"postalCode","label":"Postal code","description":"","type":"string","required":false}},"previewable":false,"dataPoints":{"patientId":{"key":"patientId","valueType":"string"}}},"getAppointment":{"key":"getAppointment","title":"Get appointment","description":"Retrieve appointment details from Medplum","category":"EHR Integrations","fields":{"appointmentId":{"id":"appointmentId","label":"Appointment ID","description":"The identifier of the appointment in Medplum","type":"string","required":true}},"previewable":true,"dataPoints":{"appointmentData":{"key":"appointmentData","valueType":"json"}}},"executeBot":{"key":"executeBot","title":"Execute Bot","description":"Execute a Medplum Bot","category":"EHR Integrations","fields":{"botId":{"id":"botId","label":"Bot ID","description":"You can find the id of your Bot by clicking on the Details tab of the Bot resource in the Medplum app","type":"string","required":true},"body":{"id":"body","label":"Body","description":"Data in JSON format you would like to pass to the Bot","type":"json","required":false}},"previewable":false,"dataPoints":{"data":{"key":"data","valueType":"string"},"jsonData":{"key":"jsonData","valueType":"json"}}},"createTask":{"key":"createTask","title":"Create task","description":"Create a Task in Medplum","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"ID of the patient in Medplum the task is for","type":"string","required":true},"taskTitle":{"id":"taskTitle","label":"Task name","description":"Briefly describes what the task involves","type":"string","required":true},"description":{"id":"description","label":"Description name","description":"Human-readable explanation of task","type":"text","required":false},"status":{"id":"status","label":"Status","description":"The status of the task","type":"string","required":true,"options":{"dropdownOptions":[{"label":"draft","value":"draft"},{"label":"requested","value":"requested"},{"label":"received","value":"received"},{"label":"accepted","value":"accepted"},{"label":"rejected","value":"rejected"},{"label":"ready","value":"ready"},{"label":"cancelled","value":"cancelled"},{"label":"in-progress","value":"in-progress"},{"label":"on-hold","value":"on-hold"},{"label":"failed","value":"failed"},{"label":"completed","value":"completed"},{"label":"entered-in-error","value":"entered-in-error"}]}},"intent":{"id":"intent","label":"Intent","description":"Indicates the \"level\" of actionability associated with the Task.","type":"string","required":true,"options":{"dropdownOptions":[{"label":"unknown","value":"unknown"},{"label":"proposal","value":"proposal"},{"label":"plan","value":"plan"},{"label":"order","value":"order"},{"label":"original-order","value":"original-order"},{"label":"reflex-order","value":"reflex-order"},{"label":"filler-order","value":"filler-order"},{"label":"instance-order","value":"instance-order"},{"label":"option","value":"option"}]}},"priority":{"id":"priority","label":"Priority","description":"The priority of the task","type":"string","required":false,"options":{"dropdownOptions":[{"label":"routine","value":"routine"},{"label":"urgent","value":"urgent"},{"label":"asap","value":"asap"},{"label":"stat","value":"stat"}]}},"dueDate":{"id":"dueDate","label":"Due date","description":"","type":"date","required":false},"performerType":{"id":"performerType","label":"Performer type","description":"Indicate which role can/should perform this task","type":"string","required":false}},"previewable":false,"dataPoints":{"taskId":{"key":"taskId","valueType":"string"}}},"createServiceRequest":{"key":"createServiceRequest","title":"Create service request","description":"Create a service request in Medplum","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"ID of the patient in Medplum","type":"string","required":true},"status":{"id":"status","label":"Status","description":"The status of the order","type":"string","required":true,"options":{"dropdownOptions":[{"label":"draft","value":"draft"},{"label":"active","value":"active"},{"label":"on-hold","value":"on-hold"},{"label":"revoked","value":"revoked"},{"label":"completed","value":"completed"},{"label":"entered-in-error","value":"entered-in-error"},{"label":"unknown","value":"unknown"}]}},"intent":{"id":"intent","label":"Mobile phone","description":"Whether the request is a proposal, plan, an original order or a reflex order.","type":"string","required":true,"options":{"dropdownOptions":[{"label":"proposal","value":"proposal"},{"label":"plan","value":"plan"},{"label":"directive","value":"directive"},{"label":"order","value":"order"},{"label":"original-order","value":"original-order"},{"label":"reflex-order","value":"reflex-order"},{"label":"filler-order","value":"filler-order"},{"label":"instance-order","value":"instance-order"},{"label":"option","value":"option"}]}},"priority":{"id":"priority","label":"Priority","description":"The priority of the order","type":"string","required":false,"options":{"dropdownOptions":[{"label":"routine","value":"routine"},{"label":"urgent","value":"urgent"},{"label":"asap","value":"asap"},{"label":"stat","value":"stat"}]}}},"previewable":false,"dataPoints":{"serviceRequestId":{"key":"serviceRequestId","valueType":"string"}}},"submitQuestionnaireResponse":{"key":"submitQuestionnaireResponse","title":"Submit questionnaire response","description":"Creates a questionnaire response in Medplum for the latest submitted form in the current step","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The identifier of the patient in Medplum to assign the response to","type":"string","required":true}},"previewable":false,"dataPoints":{"questionnnaireResponseId":{"key":"questionnnaireResponseId","valueType":"string"}}},"createCalculationObservation":{"key":"createCalculationObservation","title":"Create calculation observation","description":"Create a calculation observation in Medplum","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The identifier of the patient in Medplum to assign the response to","type":"string","required":true},"questionnaireResponseId":{"id":"questionnaireResponseId","label":"Questionnaire response ID","description":"The identifier of the questionnaire response you want to link the calculation result to","type":"string","required":false}},"previewable":false,"dataPoints":{"observationId":{"key":"observationId","valueType":"string"}}},"addSideEffect":{"key":"addSideEffect","title":"Add side effect","description":"Add side effect to Medication Request","category":"EHR Integrations","fields":{"medicationRequestId":{"id":"medicationRequestId","label":"The ID of the medication request you want to link the side effec to","description":"","type":"string","required":true},"sideEffect":{"id":"sideEffect","label":"Side effect","description":"","type":"string","required":true}},"previewable":false,"dataPoints":{}},"getServiceRequest":{"key":"getServiceRequest","title":"Get service request","description":"Retrieve service request details from Medplum","category":"EHR Integrations","fields":{"resourceId":{"id":"resourceId","label":"Resource ID","description":"The resource ID of the ServiceRequest in Medplum","type":"string","required":true}},"previewable":true,"dataPoints":{"serviceRequestResource":{"key":"serviceRequestResource","valueType":"json"},"status":{"key":"status","valueType":"string"},"intent":{"key":"intent","valueType":"string"},"priority":{"key":"priority","valueType":"string"},"patientId":{"key":"patientId","valueType":"string"}}},"getMedicationRequest":{"key":"getMedicationRequest","title":"Get medication request","description":"Retrieve medication request details from Medplum","category":"EHR Integrations","fields":{"resourceId":{"id":"resourceId","label":"Resource ID","description":"The resource ID of the MedicationRequest in Medplum","type":"string","required":true}},"previewable":true,"dataPoints":{"medicationRequest":{"key":"medicationRequest","valueType":"json"},"status":{"key":"status","valueType":"string"},"intent":{"key":"intent","valueType":"string"},"priority":{"key":"priority","valueType":"string"},"medicationDisplay":{"key":"medicationDisplay","valueType":"string"},"dosageInstructions":{"key":"dosageInstructions","valueType":"string"},"patientId":{"key":"patientId","valueType":"string"}}},"searchPatient":{"key":"searchPatient","title":"Search patient","description":"Search for patients in Medplum using parameters","category":"EHR Integrations","fields":{"parameter":{"id":"parameter","label":"Search Parameter","description":"FHIR search parameter (e.g., \"identifier\", \"name\", \"birthdate\")","type":"string","required":true},"value":{"id":"value","label":"Search Value","description":"Value to search for (e.g., \"12345\" for identifier)","type":"string","required":true}},"previewable":true,"dataPoints":{"patientData":{"key":"patientData","valueType":"json"},"searchResults":{"key":"searchResults","valueType":"json"}}},"createResource":{"key":"createResource","title":"Find or create resource","description":"Find or create any FHIR resource in Medplum. Optionally search for existing resources by type and identifier before creating. Supports single resources or FHIR Bundles (transaction/batch) for creating multiple resources atomically.","category":"EHR Integrations","fields":{"resourceJson":{"id":"resourceJson","label":"Resource JSON","description":"FHIR resource or Bundle as JSON. Supports single resources (e.g., Patient, Observation) or FHIR Bundles (transaction/batch) for creating multiple resources.","type":"json","required":true},"searchResourceType":{"id":"searchResourceType","label":"Search Resource Type","description":"Optional: FHIR resource type to search for (e.g., Patient, Observation). If provided along with Search Identifier, the action will search for existing resources before creating a new one.","type":"string","required":false},"searchIdentifier":{"id":"searchIdentifier","label":"Search Identifier","description":"Optional: Identifier value to search for (e.g., MRN, SSN). If provided along with Search Resource Type, the action will search for existing resources with this identifier before creating a new one.","type":"string","required":false}},"previewable":false,"dataPoints":{"resourceId":{"key":"resourceId","valueType":"string"},"resourceType":{"key":"resourceType","valueType":"string"},"bundleId":{"key":"bundleId","valueType":"string"},"bundleType":{"key":"bundleType","valueType":"string"},"resourceIds":{"key":"resourceIds","valueType":"string"},"resourcesCreated":{"key":"resourcesCreated","valueType":"json"},"wasResourceFound":{"key":"wasResourceFound","valueType":"boolean"}}}},"webhooks":[{"key":"patientCreated","dataPoints":{"patientId":{"key":"patientId","valueType":"string"}}},{"key":"observationCreated","dataPoints":{"observation":{"key":"observation","valueType":"json"},"observationId":{"key":"observationId","valueType":"string"}}}],"description":"Medplum is the open source healthcare developer platform that helps you build, test, and deliver any healthcare product or service.","icon_url":"https://www.medplum.com/img/logo.svg","title":"Medplum","category":"EHR Integrations","author":{"authorType":"Awell"},"settings":{"clientId":{"key":"clientId","label":"Client ID","obfuscated":true,"required":true,"description":"Used to authenticate with Medplum"},"clientSecret":{"key":"clientSecret","label":"Client secret","obfuscated":true,"required":true,"description":"Used to authenticate with Medplum"},"baseUrl":{"key":"baseUrl","label":"Base URL","obfuscated":false,"required":false,"description":"Optional custom base URL for Medplum server (e.g., https://api.medplum.com/). Leave empty to use default."}}},{"key":"metriport","htmlDocs":"<hr />\n<p>title: Metriport</p>\n<h2 id=\"descriptionmetriportisplaidforhealthcaredata\">description: Metriport is Plaid for healthcare data.</h2>\n<h1 id=\"metriport\">Metriport</h1>\n<p>Metriport is Plaid for healthcare data. We help digital health companies access and manage patient health and medical data, through an open-source and universal API.</p>\n<p>Through a single integration, our API enables modern health companies to get the comprehensive patient data they need from both HIEs and EHRs, as well as popular wearable devices.</p>\n<p>As a developer-first interoperability solution, Metriport is powering the next wave of innovative companies, accelerating a revolution in digital health.</p>\n<p>To learn more visit <a href=\"https://www.metriport.com/\">https://www.metriport.com/</a></p>\n<h1 id=\"extensionsettings\">Extension settings</h1>\n<p>In order to set up this extension, <strong>you will need to provide a Metriport API key</strong>. You can obtain an API key via the Metriport dashboard by selecting the <code>Developers tab</code>. To learn more on how to get started with Metriport visit our <a href=\"https://docs.metriport.com/medical-api/getting-started/quickstart\">quick start docs</a> for our Medical API. Also, to better understand how our API keys work check out the <a href=\"https://docs.metriport.com/home/api-info/api-keys\">API Keys section</a> of our docs as well.</p>\n<h1 id=\"customactions\">Custom Actions</h1>\n<p><strong>GENERAL NOTE: Make sure to create Organizations and Facilities in Metriport before using this extension. A Patient must be associated with a Facility by providing the facilityId when stated in the actions.</strong></p>\n<h2 id=\"createpatient\">Create Patient</h2>\n<p>Creates a Patient in Metriport for the specified Facility where the Patient is receiving care.</p>\n<p>Visit <a href=\"https://docs.metriport.com/medical-api/api-reference/patient/create-patient\">endpoint docs</a> for more info.</p>\n<h2 id=\"updatepatient\">Update Patient</h2>\n<p>Updates the specified Patient.</p>\n<p>Visit <a href=\"https://docs.metriport.com/medical-api/api-reference/patient/update-patient\">endpoint docs</a> for more info.</p>\n<h2 id=\"getpatient\">Get Patient</h2>\n<p>Retrieves the specified Patient.</p>\n<p>Visit <a href=\"https://docs.metriport.com/medical-api/api-reference/patient/get-patient\">endpoint docs</a> for more info.</p>\n<h2 id=\"removepatient\">Remove Patient</h2>\n<p>Removes a Patient at Metriport and at HIEs the Patient is linked to.</p>\n<p>Visit <a href=\"https://docs.metriport.com/medical-api/api-reference/patient/delete-patient\">endpoint docs</a> for more info.</p>\n<h2 id=\"listdocuments\">List Documents</h2>\n<p>Lists all Documents that can be retrieved for a Patient.</p>\n<p>Visit <a href=\"https://docs.metriport.com/medical-api/api-reference/document/list-documents\">endpoint docs</a> for more info.</p>\n<p><strong>NOTE: It also returns the status of querying Document references across HIEs, indicating whether there is an asynchronous query in progress (status processing) or not (status completed). If the query is in progress, you will also receive the total number of Documents to be queried as well as the ones that have already been completed.</strong></p>\n<h2 id=\"querydocuments\">Query Documents</h2>\n<p>Triggers a Document query for the specified Patient across HIEs.</p>\n<p>Visit <a href=\"https://docs.metriport.com/medical-api/api-reference/document/start-document-query\">endpoint docs</a> for more info.</p>\n<p><strong>NOTE: When executed, this endpoint triggers an asynchronous Document query with HIEs and immediately returns the status of Document query, processing .</strong></p>\n<h2 id=\"getdocumenturl\">Get Document Url</h2>\n<p>Gets a presigned URL for downloading the specified Document.</p>\n<p>Visit <a href=\"https://docs.metriport.com/medical-api/api-reference/document/get-document\">endpoint docs</a> for more info.</p>\n<p><strong>NOTE: This endpoint returns a URL which you can use to download the specified Document using the file name provided from the List Documents endpoint.</strong></p>\n<h2 id=\"moreinfo\">More Info</h2>\n<p>For more information on how to integrate with Metriport please visit our <a href=\"https://docs.metriport.com/medical-api/getting-started/quickstart\">Medical API docs</a></p>","changelog":"<h1 id=\"metriportchangelog\">Metriport changelog</h1>","actions":{"getPatient":{"key":"getPatient","title":"Get Patient","description":"Gets a Patient.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The Patient ID","type":"string","required":true}},"previewable":true,"dataPoints":{"firstName":{"key":"firstName","valueType":"string"},"lastName":{"key":"lastName","valueType":"string"},"dob":{"key":"dob","valueType":"date"},"genderAtBirth":{"key":"genderAtBirth","valueType":"string"},"driversLicenseValue":{"key":"driversLicenseValue","valueType":"string"},"driversLicenseState":{"key":"driversLicenseState","valueType":"string"},"addressLine1":{"key":"addressLine1","valueType":"string"},"addressLine2":{"key":"addressLine2","valueType":"string"},"city":{"key":"city","valueType":"string"},"state":{"key":"state","valueType":"string"},"zip":{"key":"zip","valueType":"string"},"country":{"key":"country","valueType":"string"},"phone":{"key":"phone","valueType":"string"},"email":{"key":"email","valueType":"string"}}},"createPatient":{"key":"createPatient","title":"Create Patient","description":"Creates a Patient in Metriport for the specified Facility where the Patient is receiving care.","category":"EHR Integrations","fields":{"facilityId":{"id":"facilityId","label":"Facility ID","description":"The ID of the facility to create the Patient in","type":"string","required":true},"firstName":{"id":"firstName","label":"First Name","description":"The Patient's first name","type":"string","required":true},"lastName":{"id":"lastName","label":"Last Name","description":"The Patient's last name","type":"string","required":true},"dob":{"id":"dob","label":"Date of Birth","description":"The Patient's date of birth (DOB), formatted YYYY-MM-DD","type":"string","required":true},"genderAtBirth":{"id":"genderAtBirth","label":"Gender at Birth","description":"The Patient's gender at birth, can be one of M or F","type":"string","required":true},"driversLicenseValue":{"id":"driversLicenseValue","label":"Drivers License Value","description":"The Patient's driver's license number","type":"string"},"driversLicenseState":{"id":"driversLicenseState","label":"Drivers License State","description":"The 2 letter state acronym where this ID was issued, for example: CA","type":"string"},"addressLine1":{"id":"addressLine1","label":"Address Line 1","description":"The address","type":"string","required":true},"addressLine2":{"id":"addressLine2","label":"Address Line 2","description":"The address details","type":"string"},"city":{"id":"city","label":"City","description":"The city","type":"string","required":true},"state":{"id":"state","label":"State","description":"The 2 letter state acronym, for example: CA","type":"string","required":true},"zip":{"id":"zip","label":"Zip","description":"5 digit zip code","type":"string","required":true},"country":{"id":"country","label":"Country","description":"Must be “USA”","type":"string","required":true},"phone":{"id":"phone","label":"Phone","description":"The Patient's 10 digit phone number, formatted 1234567899","type":"string"},"email":{"id":"email","label":"Email","description":"The Patient's email address","type":"string"}},"previewable":true,"dataPoints":{"patientId":{"key":"patientId","valueType":"string"}}},"updatePatient":{"key":"updatePatient","title":"Update Patient","description":"Updates the specified Patient.","category":"EHR Integrations","fields":{"id":{"id":"id","label":"Patient ID","description":"The ID of the Patient to update","type":"string","required":true},"facilityId":{"id":"facilityId","label":"Facility ID","description":"The ID of the facility to create the Patient in","type":"string","required":true},"firstName":{"id":"firstName","label":"First Name","description":"The Patient's first name","type":"string","required":true},"lastName":{"id":"lastName","label":"Last Name","description":"The Patient's last name","type":"string","required":true},"dob":{"id":"dob","label":"Date of Birth","description":"The Patient's date of birth (DOB), formatted YYYY-MM-DD","type":"string","required":true},"genderAtBirth":{"id":"genderAtBirth","label":"Gender at Birth","description":"The Patient's gender at birth, can be one of M or F","type":"string","required":true},"driversLicenseValue":{"id":"driversLicenseValue","label":"Drivers License Value","description":"The Patient's driver's license number","type":"string"},"driversLicenseState":{"id":"driversLicenseState","label":"Drivers License State","description":"The 2 letter state acronym where this ID was issued, for example: CA","type":"string"},"addressLine1":{"id":"addressLine1","label":"Address Line 1","description":"The address","type":"string","required":true},"addressLine2":{"id":"addressLine2","label":"Address Line 2","description":"The address details","type":"string"},"city":{"id":"city","label":"City","description":"The city","type":"string","required":true},"state":{"id":"state","label":"State","description":"The 2 letter state acronym, for example: CA","type":"string","required":true},"zip":{"id":"zip","label":"Zip","description":"5 digit zip code","type":"string","required":true},"country":{"id":"country","label":"Country","description":"Must be “USA”","type":"string","required":true},"phone":{"id":"phone","label":"Phone","description":"The Patient's 10 digit phone number, formatted 1234567899","type":"string"},"email":{"id":"email","label":"Email","description":"The Patient's email address","type":"string"}},"previewable":true},"deletePatient":{"key":"deletePatient","title":"Delete Patient","description":"Removes the specified Patient.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The Patient ID","type":"string","required":true},"facilityId":{"id":"facilityId","label":"Facility ID","description":"The facility ID","type":"string","required":true}},"previewable":true},"listDocuments":{"key":"listDocs","title":"List Documents","description":"Queries for all available document metadata for the specified patient across HIEs.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the Patient for which to list their available Documents","type":"string","required":true}},"previewable":true,"dataPoints":{"documents":{"key":"documents","valueType":"json"}}},"queryDocs":{"key":"queryDocs","title":"Start Document Query","description":"Triggers a document query for the specified patient across HIEs.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the Patient for which to query Documents across HIEs","type":"string","required":true},"facilityId":{"id":"facilityId","label":"Facility ID","description":"The facility providing the NPI to support this operation. Optional if the patient has only one facility.","type":"string"}},"previewable":true,"dataPoints":{"downloadStatus":{"key":"downloadStatus","valueType":"string"},"downloadTotal":{"key":"downloadTotal","valueType":"number"},"downloadSuccessful":{"key":"downloadSuccessful","valueType":"number"},"requestId":{"key":"requestId","valueType":"string"}}},"getUrl":{"key":"getUrl","title":"Get Document URL","description":"Fetches the document from S3 and sends a presigned URL.","category":"EHR Integrations","fields":{"fileName":{"id":"fileName","label":"File Name","description":"The file name of the document","type":"string","required":true}},"previewable":true,"dataPoints":{"url":{"key":"url","valueType":"string"}}},"startNetworkQuery":{"key":"startNetworkQuery","title":"Start Network Query","description":"Triggers an asynchronous query for the specified Patient across available health data networks (HIEs, pharmacies, labs). Results are sent via webhooks.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the Patient for which to query health data","type":"string","required":true}},"previewable":false,"dataPoints":{"requestId":{"key":"requestId","valueType":"string"},"status":{"key":"status","valueType":"string"}}},"startConsolidatedQuery":{"key":"startConsolidatedQuery","title":"Start Consolidated Data Query","description":"Starts an asynchronous query for the Patient's consolidated FHIR data. Results are sent via webhooks.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the Patient whose consolidated data to query","type":"string","required":true},"resources":{"id":"resources","label":"Resource Types","description":"Optional comma-separated list of FHIR resource types to filter by (e.g. \"Condition,Observation,MedicationRequest\"). If empty, all resource types are returned.","type":"string"},"dateFrom":{"id":"dateFrom","label":"Date From","description":"Optional start date to filter resources by (inclusive), formatted YYYY-MM-DD","type":"string"},"dateTo":{"id":"dateTo","label":"Date To","description":"Optional end date to filter resources by (inclusive), formatted YYYY-MM-DD","type":"string"},"conversionType":{"id":"conversionType","label":"Conversion Type","description":"How to render the medical record: \"json\" (default), \"pdf\", or \"html\"","type":"string"}},"previewable":false,"dataPoints":{"status":{"key":"status","valueType":"string"},"requestId":{"key":"requestId","valueType":"string"}}},"getConsolidatedQueryStatus":{"key":"getConsolidatedQueryStatus","title":"Get Consolidated Data Query Status","description":"Gets the status of a consolidated data query for a Patient. Use after starting a consolidated query to check if results are ready.","category":"EHR Integrations","fields":{"patientId":{"id":"patientId","label":"Patient ID","description":"The ID of the Patient whose consolidated data query status to check","type":"string","required":true}},"previewable":true,"dataPoints":{"status":{"key":"status","valueType":"string"},"queries":{"key":"queries","valueType":"json"}}}},"webhooks":[],"description":"Metriport helps digital health companies access and manage health and medical data, through a single universal API.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1689856160/Awell%20Extensions/metriport.png","title":"Metriport","category":"EHR Integrations","author":{"authorType":"External","authorName":"Metriport"},"settings":{"apiKey":{"key":"apiKey","label":"API Key","obfuscated":true,"description":"The API Key for the Metriport Medical API.","required":true},"baseUrl":{"key":"baseUrl","label":"Base URL","obfuscated":false,"description":"The base URL of the Metriport Medical API.","required":false}}},{"key":"nexuzhealth","htmlDocs":"<hr />\n<p>title: nexuzhealth</p>\n<h2 id=\"descriptiondemoextensionfornexuzhealth\">description: Demo extension for nexuzhealth</h2>\n<p>This is an extension that can only be used for demo purposes.</p>","changelog":"<h1 id=\"nexuzhealthchangelog\">nexuzhealth changelog</h1>","actions":{"sendQuestionnaire":{"key":"sendQuestionnaire","title":"Stuur vragenlijst (mynexuzhealth)","description":"Trigger a questionaire in the mynexuzhealth app","category":"Communication","fields":{"questionnaireId":{"id":"questionnaireId","label":"Vragenlijst","type":"string","description":"Selecteer de vragenlijst die de patiënt moet invullen","required":true}},"previewable":false},"sendMessage":{"key":"sendMessage","title":"Stuur bericht (mynexuzhealth)","description":"Trigger a message in the mynexuzhealth app","category":"Communication","fields":{"subject":{"id":"subject","label":"Onderwerp","type":"string","required":true},"body":{"id":"body","label":"Bericht","type":"html","required":true}},"previewable":false},"sendDocumentation":{"key":"sendDocumentation","title":"Stuur documentatie (mynexuzhealth)","description":"Trigger documentation in the mynexuzhealth app","category":"Communication","fields":{"documentationId":{"id":"documentationId","label":"Documentation","type":"string","description":"Selecteer de documentatie die je beschikbaar wil maken","required":true}},"previewable":false}},"webhooks":[],"description":"Nexuzhealth develops KWS (Klinisch Werkstation), an EHR for hospitals, healthcare institutions, home nursing, and general practitioners.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1702299062/Awell%20Extensions/nexuzhealth.png","title":"nexuzhealth","category":"Demo","author":{"authorType":"Awell"},"settings":{}},{"key":"rest","htmlDocs":"<hr />\n<p>title: REST</p>\n<h2 id=\"descriptionautilityextensionwithmoreadvancedoptionstomakerestapicalls\">description: A utility extension with more advanced options to make REST API calls</h2>\n<h1 id=\"rest\">REST</h1>\n<p>This is a utility extension with more advanced options to make REST API calls.</p>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"post\">POST</h3>\n<p>Makes a POST request using fetch to the provided endpoint.</p>","changelog":"<h1 id=\"restchangelog\">REST changelog</h1>","actions":{"post":{"key":"post","title":"POST request","description":"Make a POST request","category":"Data","fields":{"endpoint":{"id":"endpoint","label":"Endpoint","description":"","type":"string","required":true},"headers":{"id":"headers","label":"Headers","description":"","type":"json","required":false},"jsonPayload":{"id":"jsonPayload","label":"JSON payload","description":"","type":"json","required":true},"additionalPayload":{"id":"additionalPayload","label":"Additional payload","description":"The JSON payload and additional payload will be merged into a single payload","type":"json","required":false}},"dataPoints":{"response":{"key":"response","valueType":"json"},"statusCode":{"key":"statusCode","valueType":"number"}},"previewable":true}},"webhooks":[],"description":"A utility extension with more advanced options to make REST API calls","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1724322431/Awell%20Extensions/REST_socialmedia.webp","title":"REST","category":"Data","author":{"authorType":"Awell"},"settings":{}},{"key":"sendbird","htmlDocs":"<hr />\n<p>title: Sendbird</p>\n<h2 id=\"descriptionsendbirdisacloudbasedchatandmessagingplatformthatenablesdeveloperstointegraterealtimemessagingfunctionalityintotheirapplications\">description: Sendbird is a cloud-based chat and messaging platform that enables developers to integrate real-time messaging functionality into their applications.</h2>\n<h1 id=\"sendbird\">Sendbird</h1>\n<p>Sendbird is a cloud-based chat and messaging platform that enables developers to integrate real-time messaging functionality into their applications.</p>\n<p>Sendbird offers a range of features, including real-time chat, group chat, one-on-one messaging, push notifications, and file sharing. It supports various platforms and programming languages, making it flexible and accessible for developers to integrate with different applications.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will need:</p>\n<ol>\n<li>An <strong>Application ID</strong> - visit https://dashboard.sendbird.com/ to retrieve <strong>Application ID</strong> for the app of your choosing</li>\n<li>A <strong>Chat API token</strong> - visit Application's settings and go to <strong>Settings > Application > General > API tokens</strong> to retrieve either Master API token or Secondary API token</li>\n<li>A <strong>Desk API token</strong> - visit Application's settings and go to <strong>Settings > Desk > Credentials</strong> to retrieve Desk API token</li>\n</ol>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"createuser\">Create user</h3>\n<p>Creates a user in Sendbird using the Chat API. See <a href=\"#update-metadata\">Update metadata</a> to check metadata field details. The <code>userId</code> of the newly created user is then saved as a data point.</p>\n<h3 id=\"updateuser\">Update user</h3>\n<p>Updates a user using the Chat API.</p>\n<p>Please note that updating <code>metadata</code> of a user needs to be done with the <a href=\"#update-metadata\">Update metadata action</a>.</p>\n<h3 id=\"deleteuser\">Delete user</h3>\n<p>Deletes a user in Sendbird using the Chat API.</p>\n<h3 id=\"getuser\">Get user</h3>\n<p>Retrieve information about a user using the Chat API. The following fields are saved as a data point:</p>\n<ul>\n<li>Nickname</li>\n<li>Access token</li>\n<li>Is active</li>\n<li>Created at</li>\n<li>Last seen at</li>\n<li>Has ever logged in</li>\n<li>Metadata (stored as string)</li>\n</ul>\n<h3 id=\"updatemetadata\">Update metadata</h3>\n<p>Updates the user's metadata using the Chat API. Only updates existing or adds new fields to metadata. To delete some metedata fields, check the <a href=\"#delete-metadata\">Delete metadata action</a>.</p>\n<p>Metadata is a JSON object that can store up to five key-value items of additional user information such as a phone number, an email address, or a long description of the user. The key must not have a comma (,) and its length is limited to 128 characters. The value must be a string and its length is limited to 190 characters.</p>\n<h3 id=\"deletemetadata\">Delete metadata</h3>\n<p>Deletes user metadata using the Chat API. Takes the key of a metadata item to be deleted (deletes one key at a time if a key is provided). If not specified, all items of the metadata are deleted.</p>\n<h3 id=\"deactivateuser\">Deactivate user</h3>\n<p>Deactivates a user, using the \"Update user\" endpoint, in the Chat API. Optionally, it can be set for the user to <code>Leave all group channels upon deactivation</code>.</p>\n<p>The user is deactivated by setting <code>is_active</code> to false.</p>\n<h3 id=\"activateuser\">Activate user</h3>\n<p>Activates a user, using the \"Update user\" endpoint, in the Chat API. The user is activated by setting <code>is_active</code> to true.</p>\n<h3 id=\"createcustomer\">Create customer</h3>\n<p>Creates a customer using the Desk API. Only the <code>sendbirdId</code> is passed and it must be an ID that already exists in Sendbird's Chat platform (eg: the <code>userId</code> of an existing user). The <code>customerId</code> of the newly created customer is stored as data point.</p>\n<p>To add custom fields to your customer, use the <a href=\"#update-customers-custom-fields\">Update custom fields action</a>.</p>\n<h3 id=\"getcustomer\">Get customer</h3>\n<p>Retrieves information on a specific customer using the Desk API. The following fields are saved as a data point:</p>\n<ul>\n<li>Sendbird ID</li>\n<li>Channel Type</li>\n<li>Project</li>\n<li>Created At</li>\n<li>Display Name</li>\n<li>Custom Fields (stored as string)</li>\n</ul>\n<h3 id=\"updatecustomerscustomfields\">Update customer's custom fields</h3>\n<p>Updates a customer's custom fields using the Desk API.</p>\n<p>Custom fields is a JSON object that can store up to twenty key-value items for additional customer information such as a phone number, an email address, or a long description of the customer.</p>\n<p>The specified keys must be registered as a custom field in Settings &gt; Customer fields of your dashboard beforehand. The key must not have a comma (,) and its length is limited to 20 characters. The value's length is limited to 190 characters.</p>\n<h3 id=\"createticket\">Create ticket</h3>\n<p>Creates a ticket using the Desk API. The <code>ticketId</code> of the newly created ticket is stored as data point.</p>\n<p>Please note that the Ticket won't be shown in the Sendbird console <strong>until</strong> the user for which that Ticket was created writes a message inside the Chat.</p>","changelog":"<h1 id=\"sendbirdchangelog\">Sendbird changelog</h1>\n<h2 id=\"20230822\">2023-08-22</h2>\n<ul>\n<li>add <code>relatedChannelUrls</code> field to <code>Create ticket</code> action</li>\n</ul>","actions":{"createUser":{"key":"createUser","title":"Create user","description":"Creates a user using the Chat API.","category":"Communication","fields":{"userId":{"label":"User ID","id":"userId","type":"string","required":true,"description":"Specify a unique ID for the user, maximum length is 80 characters. Don't use personally identifiable information (PII) for the ID."},"nickname":{"id":"nickname","label":"Nickname","type":"string","description":"The user's nickname. Maximum length is 80 characters. If left empty, we will use the patient's first and last name.","required":false},"issueAccessToken":{"id":"issueAccessToken","label":"Issue access token","description":"Determines whether to create an access token for the user.","type":"boolean","required":false},"profileUrl":{"id":"profileUrl","label":"Profile URL","description":"The URL of the user's profile image.","type":"string","stringType":"url","required":false},"metadata":{"id":"metadata","label":"Metadata","description":"Specifies a JSON object to store up to five key-value items for additional user information such as a phone number, an email address, or a long description of the user. The key must not have a comma (,) and its length is limited to 128 characters. The value must be a string and its length is limited to 190 characters.","type":"json","required":false}},"dataPoints":{"userId":{"key":"userId","valueType":"string"}},"previewable":true},"getUser":{"key":"getUser","title":"Get user","description":"Gets user using Chat API.","category":"Communication","fields":{"userId":{"label":"User ID","id":"userId","type":"string","required":true,"description":"The user's unique ID in Sendbird."}},"dataPoints":{"nickname":{"key":"nickname","valueType":"string"},"accessToken":{"key":"accessToken","valueType":"string"},"isActive":{"key":"isActive","valueType":"boolean"},"createdAt":{"key":"createdAt","valueType":"date"},"lastSeenAt":{"key":"lastSeenAt","valueType":"date"},"hasEverLoggedIn":{"key":"hasEverLoggedIn","valueType":"boolean"},"metadata":{"key":"metadata","valueType":"string"}},"previewable":true},"updateUser":{"key":"updateUser","title":"Update user","description":"Updates a user using the Chat API.","category":"Communication","fields":{"userId":{"label":"User ID","id":"userId","type":"string","required":true,"description":"The user's unique ID in Sendbird."},"nickname":{"id":"nickname","label":"Nickname","type":"string","description":"The user's nickname. Maximum length is 80 characters.","required":false},"issueAccessToken":{"id":"issueAccessToken","label":"Issue access token","description":"Determines whether to revoke the existing access token and create a new one for the user.","type":"boolean","required":false},"profileUrl":{"id":"profileUrl","label":"Profile URL","description":"The URL of the user's profile image.","type":"string","stringType":"url","required":false}},"previewable":true},"deleteUser":{"key":"deleteUser","title":"Delete user","description":"Deletes a user using the Chat API.","category":"Communication","fields":{"userId":{"label":"User ID","id":"userId","type":"string","required":true,"description":"The user's unique ID in Sendbird."}},"previewable":true},"updateMetadata":{"key":"updateMetadata","title":"Update metadata","description":"Updates user metadata using Chat API.","category":"Communication","fields":{"userId":{"label":"User ID","id":"userId","type":"string","required":true,"description":"The user's unique ID in Sendbird."},"metadata":{"id":"metadata","label":"Metadata","description":"A JSON object that can store up to five key-value items for additional user information.","type":"json","required":true}},"previewable":true},"deleteMetadata":{"key":"deleteMetadata","title":"Delete metadata","description":"Deletes metadata from a user using the Chat API.","category":"Communication","fields":{"userId":{"label":"User ID","id":"userId","type":"string","required":true,"description":"The user's unique ID in Sendbird."},"metadataKey":{"label":"Metadata key","id":"metadataKey","type":"string","required":false,"description":"The key of the metadata item to delete. If not specified, all items of the metadata are deleted."}},"previewable":true},"deactivateUser":{"key":"deactivateUser","title":"Deactivate user","description":"Deactivates a user using the Chat API.","category":"Communication","fields":{"userId":{"label":"User ID","id":"userId","type":"string","required":true,"description":"The user's unique ID in Sendbird."},"leaveAllGroupChannelsUponDeactivation":{"label":"Leave all group channels upon deactivation","id":"leaveAllGroupChannelsUponDeactivation","type":"boolean","required":false,"description":"Determines whether the user leaves all joined group channels upon deactivation. Defaults to true if not specified."}},"previewable":true},"activateUser":{"key":"activateUser","title":"Activate user","description":"Activates a user using the Chat API.","category":"Communication","fields":{"userId":{"label":"User ID","id":"userId","type":"string","required":true,"description":"The user's unique ID in Sendbird."}},"previewable":true},"createCustomer":{"key":"createCustomer","title":"Create customer","description":"Creates a customer using the Desk API.","category":"Communication","fields":{"sendbirdId":{"label":"Sendbird ID","id":"sendbirdId","type":"string","required":true,"description":"The Sendbird ID of a customer which must be an ID that already exists in Sendbird (eg: user id)."}},"dataPoints":{"customerId":{"key":"customerId","valueType":"number"}},"previewable":true},"getCustomer":{"key":"getCustomer","title":"Get customer","description":"Retrieve information about a customer using the Desk API.","category":"Communication","fields":{"customerId":{"label":"Customer ID","id":"customerId","type":"numeric","required":true,"description":"The customer's unique ID in Sendbird."}},"dataPoints":{"sendbirdId":{"key":"sendbirdId","valueType":"string"},"channelType":{"key":"channelType","valueType":"string"},"project":{"key":"project","valueType":"number"},"createdAt":{"key":"createdAt","valueType":"date"},"displayName":{"key":"displayName","valueType":"string"},"customFields":{"key":"customFields","valueType":"string"}},"previewable":true},"updateCustomerCustomFields":{"key":"updateCustomerCustomFields","title":"Update customer's custom fields","description":"Updates custom fields of a customer using the Desk API.","category":"Communication","fields":{"customerId":{"label":"Customer ID","id":"customerId","type":"numeric","required":true,"description":"The customer's unique ID in Sendbird."},"customFields":{"id":"customFields","label":"Custom fields","description":"A JSON object that can store up to twenty key-value items for additional customer information. The specified keys must be registered as a custom field in Sendbird.","type":"json","required":true}},"previewable":true},"createTicket":{"key":"createTicket","title":"Create ticket","description":"Creates a ticket using the Desk API.","category":"Communication","fields":{"customerId":{"label":"Customer ID","id":"customerId","type":"numeric","required":true,"description":"A customer's unique ID."},"channelName":{"label":"Channel name","id":"channelName","type":"string","required":true,"description":"Specifies the title of a ticket, which will be the group channel name in Sendbird Chat platform as well. Maximum length is 100 characters."},"relatedChannelUrls":{"label":"Related channel URLs","id":"relatedChannelUrls","type":"string","required":false,"description":"A comma-separated string of group channel URLs for reference, where the corresponding customer belongs. Can have up to 3 group channel URLs."},"groupKey":{"label":"Group key","id":"groupKey","type":"string","required":false,"description":"Specifies the unique key of a group for ticket assignment. The key can be a mix of lowercase letters, hyphens, underscores, or numbers."},"priority":{"label":"Priority","id":"priority","type":"string","required":false,"description":"Specifies the priority of a ticket. Acceptable values are the following: \"LOW\", \"MEDIUM\", \"HIGH\", and \"URGENT\". Defaults to: \"MEDIUM\"."},"customFields":{"id":"customFields","label":"Custom fields","description":"A JSON object that can store up to twenty key-value items for additional customer information. The specified keys must be registered as a custom field in Sendbird.","type":"json","required":false}},"dataPoints":{"ticketId":{"key":"ticketId","valueType":"number"},"channelUrl":{"key":"channelUrl","valueType":"string"},"relatedChannelUrls":{"key":"relatedChannelUrls","valueType":"string"}},"previewable":true},"updateTicket":{"key":"updateTicket","title":"Update ticket","description":"Update a ticket using the Desk API.","category":"Communication","fields":{"ticketId":{"label":"Ticket ID","id":"ticketId","type":"numeric","required":true,"description":"A customer's unique ID."},"priority":{"label":"Priority","id":"priority","type":"string","required":false,"description":"Specifies the priority of a ticket. Acceptable values are the following: \"LOW\", \"MEDIUM\", \"HIGH\", and \"URGENT\". Defaults to: \"MEDIUM\"."},"relatedChannelUrls":{"label":"Related channel URLs","id":"relatedChannelUrls","type":"string","required":false,"description":"A comma-separated string of group channel URLs for reference, where the corresponding customer belongs. Can have up to 3 group channel URLs."}},"previewable":true}},"webhooks":[],"description":"Sendbird is a cloud-based chat and messaging platform.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1690880046/Awell%20Extensions/1688588894238.jpg","title":"Sendbird","category":"Communication","author":{"authorType":"Awell"},"settings":{"applicationId":{"label":"Application ID","key":"applicationId","obfuscated":true,"required":true,"description":"Visit https://dashboard.sendbird.com/ to retrieve Application ID for the app of your choosing"},"chatApiToken":{"label":"Chat API token","key":"chatApiToken","obfuscated":true,"required":true,"description":"Visit Application's settings and go to Settings > Application > General > API tokens to retrieve either Master API token or Secondary API token"},"deskApiToken":{"label":"Desk API token","key":"deskApiToken","obfuscated":true,"required":true,"description":"Visit Application's settings and go to Settings > Desk > Credentials to retrieve Desk API token"}}},{"key":"sendgrid-extension","htmlDocs":"<hr />\n<p>title: Sendgrid</p>\n<h2 id=\"descriptionsendgridisacloudbasedemaildeliveryplatformthatprovidesservicesforsendingandmanagingemailcampaignstransactionalemailsandothertypesofmessages\">description: SendGrid is a cloud-based email delivery platform that provides services for sending and managing email campaigns, transactional emails, and other types of messages.</h2>\n<h1 id=\"sendgrid\">Sendgrid</h1>\n<p>SendGrid is a cloud-based email delivery platform that provides services for sending and managing email campaigns, transactional emails, and other types of messages.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will need to provide:</p>\n<ol>\n<li>An API key</li>\n<li>A from name</li>\n<li>A from email</li>\n</ol>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"sendemail\">Send email</h3>\n<p>Allows for sending a plain email to a recipient.</p>\n<h3 id=\"sendemailwithatemplate\">Send email with a template</h3>\n<p>Allows for sending an email based on a template to a recipient. You can also insert variables so they are rendered in your template.</p>\n<h3 id=\"addorupdatecontact\">Add or update contact</h3>\n<p>Allows adding or updating contacts. The contact to update will be determined only by the email field and any fields omitted from the request will remain as they were. A contact's ID cannot be used to update the contact.</p>\n<p>Please note that custom fields need to have been already created if you wish to set their values for the contacts being upserted. To do this, please use the \"Create Custom Field Definition\" endpoint. They also can be created in <strong>Marketing -> Custom Fields</strong> section in Sendgrid.</p>\n<h3 id=\"addandremoveemailsfromsuppressionlists\">Add and remove emails from suppression lists</h3>\n<p>Suppression lists (<a href=\"https://docs.sendgrid.com/api-reference/suppressions-suppressions/add-suppressions-to-a-suppression-group\">link on SendGrid's website</a>) are unsubscribe groups. Use these actions to add an email address to any number of unsubscribe groups. You can apply a suppression add/remove to multiple groups by using comma-separated lists for the groups. Only a single email can be used. <strong>This functionality is different from SendGrid's API, which allows multiple email addresses for a single group</strong>.</p>\n<h3 id=\"checkanimportstatus\">Check an import status</h3>\n<p>Allows user to check the status of contact import jobs when given a jobID. Statuses are either: <code>pending</code>, <code>completed</code>, <code>failed</code>, or <code>errored</code>.</p>","changelog":"<h1 id=\"sendgridchangelog\">Sendgrid changelog</h1>\n<h2 id=\"july72023\">July 7, 2023</h2>\n<p>Added \"Add Email to Suppression Lists\" and \"Remove Email from Suppression Lists\" actions.</p>\n<h2 id=\"july152023\">July 15, 2023</h2>\n<p>Updated \"Add or Update Contact\" acction to create a datapoint of the Job ID.</p>\n<p>Added \"Check Import Status\" action.</p>\n<h2 id=\"july272023\">July 27, 2023</h2>\n<p>Adds \"Finished At\" data point to the importStatus action.</p>","actions":{"sendEmail":{"key":"sendEmail","title":"Send email","description":"Send an email.","category":"Communication","fields":{"fromName":{"id":"fromName","label":"From name","description":"The name that will be used for the \"From\" header. When left blank, the value specified in the extension settings will be used.","type":"string","required":false},"fromEmail":{"id":"fromEmail","label":"From email","description":"The email address that will be used for the \"From\" header. When left blank, the value specified in the extension settings will be used.","type":"string","required":false},"to":{"id":"to","label":"To","description":"The email address of the recipient.","type":"string","required":true},"subject":{"id":"subject","label":"Subject","description":"The subject of your email.","type":"string","required":true},"body":{"id":"body","label":"Body","description":"The content of your message.","type":"html","required":true}},"previewable":false},"sendEmailWithTemplate":{"key":"sendEmailWithTemplate","title":"Send email with template","description":"Send an email based on a template to a recipient of your choice.","category":"Communication","fields":{"fromName":{"id":"fromName","label":"From name","description":"The name that will be used for the \"From\" header. When left blank, the value specified in the extension settings will be used.","type":"string","required":false},"fromEmail":{"id":"fromEmail","label":"From email","description":"The email address that will be used for the \"From\" header. When left blank, the value specified in the extension settings will be used.","type":"string","required":false},"to":{"id":"to","label":"To","description":"The email address of the recipient.","type":"string","required":true},"templateId":{"id":"templateId","label":"Template ID","description":"The immutable ID of a template that exists in your account.","type":"string","required":true},"subject":{"id":"subject","label":"Subject","description":"The subject of your email. If you would like to compose a dynamic subject line then pass a subject field with the template content below.","type":"string","required":false},"dynamicTemplateData":{"id":"dynamicTemplateData","label":"Template content","description":"Specify a JSON blob containing the dynamic data of your template. Read the Sendgrid documentation to learn more about dynamic template data.","type":"json","required":false}},"previewable":false},"addOrUpdateContact":{"key":"addOrUpdateContact","title":"Add or update contact","description":"Add or update contact","category":"Communication","fields":{"listIds":{"id":"listIds","label":"List IDs","description":"A comma-separated string of list IDs the contact will be added to.","type":"string","required":true},"email":{"id":"email","label":"Email","description":"The contact's primary email.","type":"string","required":true},"firstName":{"id":"firstName","label":"First Name","description":"The contact's first name.","type":"string","required":false},"lastName":{"id":"lastName","label":"Last Name","description":"The contact's last name.","type":"string","required":false},"customFields":{"id":"customFields","label":"Custom fields","description":"An object of custom field IDs and the values you want to associate with those custom fields.","type":"json","required":false}},"dataPoints":{"jobId":{"key":"jobId","valueType":"string"}},"previewable":true},"removeSuppressions":{"key":"removeSuppressions","title":"Remove Email from Suppression Lists","description":"Remove an email address from one or more suppression lists.","category":"Communication","fields":{"email":{"id":"email","label":"Email","description":"The email address you would like to remove from the suppression list","type":"string","required":true},"groups":{"id":"groups","label":"Groups","description":"A comma-separated list of group IDs (e.g. `12345, 12346`)","type":"string","required":true}},"previewable":true},"addSuppressions":{"key":"addSuppressions","title":"Add Email to Suppression Lists","description":"Adds an email to one or more suppression lists.","category":"Communication","fields":{"email":{"id":"email","label":"Email","description":"The email address you would like to suppress","type":"string","required":true},"groups":{"id":"groups","label":"Groups","description":"A comma-separated list of group IDs (e.g. `12345, 12346`)","type":"string","required":true}},"previewable":true},"importStatus":{"key":"importStatus","title":"Status of Import","description":"Get the status of an Import job","category":"Communication","fields":{"jobId":{"id":"jobId","label":"Job ID","description":"The ID of the Sendgrid Job (usually obtained from the Add or Update Contact action)","type":"string","stringType":"text","required":true},"wait_for_finished":{"id":"wait_for_finished","label":"Wait for finished","description":"If true, the action will wait for the import job to finish before completing.","type":"boolean","required":false}},"dataPoints":{"importStatus":{"key":"importStatus","valueType":"string"},"finishedAt":{"key":"finishedAt","valueType":"date"},"startedAt":{"key":"startedAt","valueType":"date"},"jobType":{"key":"jobType","valueType":"string"},"id":{"key":"id","valueType":"string"}},"previewable":true}},"webhooks":[],"description":"SendGrid is a cloud-based email delivery platform that provides services for sending and managing email campaigns, transactional emails, and other types of messages.","icon_url":"https://www.vectorlogo.zone/logos/sendgrid/sendgrid-icon.svg","title":"Sendgrid","category":"Communication","author":{"authorType":"Awell"},"settings":{"apiKey":{"key":"apiKey","label":"API Key","obfuscated":true,"required":true,"description":"Your Sendgrid API Key so the extension can authenticate with the Sendgrid API."},"fromName":{"key":"fromName","label":"From name","obfuscated":false,"required":false,"description":"The name that will be used for the \"From\" header."},"fromEmail":{"key":"fromEmail","label":"From email","obfuscated":false,"required":false,"description":"The email address that will be used for the \"From\" header."}}},{"key":"sfdc","htmlDocs":"<hr />\n<p>title: Salesforce</p>\n<h2 id=\"descriptionsfdcisacloudbasedcustomerrelationshipmanagementcrmsoftwareusedtomanagecustomerdatasalesprocessesmarketingcampaignsandcustomerserviceactivities\">description: SFDC is a cloud-based customer relationship management (CRM) software used to manage customer data, sales processes, marketing campaigns, and customer service activities</h2>\n<h2 id=\"salesforce\">Salesforce</h2>\n<p>SFDC is a cloud-based customer relationship management (CRM) software used to manage customer data, sales processes, marketing campaigns, and customer service activities</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>For this extension to work, you will need to provide the below settings:</p>\n<ul>\n<li>Salesforce subdomain (https://<SUBDOMAIN>.my.salesforce.com/services/oauth2/token)</li>\n<li>Client ID</li>\n<li>Client secret</li>\n<li>Username*</li>\n<li>Password*</li>\n</ul>\n<p>Username and password are optional. When specified, the Password grant will be used to authenticate with the Salesforce API. When left blank, the Client Credentials grant will be used.</p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"createalead\">Create a Lead</h3>\n<p>A lead is a standard Salesforce object (sObject). You can use this action to create a Lead object.</p>\n<h3 id=\"updatealead\">Update a lead</h3>\n<p>Updates a Lead record based on the specified data and provided Lead record ID. Field values provided replace the existing values in the Lead record (PATCH).</p>","changelog":"<h1 id=\"salesforcechangelog\">Salesforce changelog</h1>","actions":{"createLead":{"key":"createLead","title":"Create lead","description":"Creates a new lead object in Salesforce","category":"Customer Support","fields":{"data":{"id":"data","label":"Data","description":"Information used to create the Lead","type":"json","required":true},"careFlowIdField":{"id":"careFlowIdField","label":"Care Flow ID Field","description":"The field name in Salesforce that contains the Care Flow ID. If left blank, the Care Flow ID will not be included in the update.","type":"string","required":false}},"previewable":false,"dataPoints":{"createdLeadId":{"key":"createdLeadId","valueType":"string"}}},"updateLead":{"key":"updateLead","title":"Update lead","description":"Updates an existing lead object in Salesforce","category":"Customer Support","fields":{"sObjectId":{"id":"sObjectId","label":"Lead ID","description":"The object ID of the Lead in Salesforce to update","type":"string","required":true},"data":{"id":"data","label":"Data","description":"Information used to update the Lead","type":"json","required":true}},"previewable":true,"supports_automated_retries":true,"dataPoints":{}},"getLead":{"key":"getLead","title":"Get lead","description":"Retrieve a Lead from Salesforce","category":"Customer Support","fields":{"leadId":{"id":"leadId","label":"Lead ID","description":"","type":"string","required":true}},"previewable":true,"dataPoints":{"leadData":{"key":"leadData","valueType":"json"}}}},"webhooks":[],"description":"Salesforce.com is a cloud-based customer relationship management (CRM) software used to manage customer data, sales processes, marketing campaigns, and customer service activities","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1723280338/Awell%20Extensions/logo-sfdc-netherlands-b-v-salesforce-com.jpg","title":"Salesforce","category":"Customer Support","author":{"authorType":"Awell"},"settings":{"salesforceSubdomain":{"key":"salesforceSubdomain","label":"Domain name","obfuscated":false,"required":true,"description":"The subdomain of your Salesforce tenant (e.g. \"awell\" or \"awell.sandbox\")"},"clientId":{"key":"clientId","label":"Client ID","obfuscated":false,"required":true,"description":""},"clientSecret":{"key":"clientSecret","label":"Client secret","obfuscated":true,"required":true,"description":""},"username":{"key":"username","label":"Username ","obfuscated":false,"required":false,"description":"The username of the user that the connected app is imitating. A username is only needed when using the Password grant, leave blank to use client credentials grant."},"password":{"key":"password","label":"Password ","obfuscated":true,"required":false,"description":"The password of the user that the connected app is imitating. A password is only needed when using the Password grant, leave blank to use client credentials grant"},"apiVersion":{"key":"apiVersion","label":"API version ","obfuscated":false,"required":false,"description":"Defaults to v61.0"}}},{"key":"shelly","htmlDocs":"<hr />\n<p>title: Shelly</p>\n<h2 id=\"descriptionsmarttoolstohelpwithcommunicationinformationandsummariesinyourcareflow\">description: Smart tools to help with communication, information, and summaries in your care flow.</h2>\n<h1 id=\"shelly\">Shelly</h1>\n<p>Shelly provides a set of smart tools that use artificial intelligence (most precisely Large Language Models) to help automate tasks and manage information within your care flow.</p>\n<h2 id=\"actions\">Actions</h2>\n<p>Below is a detailed look at each tool Shelly offers, what it needs to work, what it gives you back, and how to use it best.</p>\n<h3 id=\"categorizemessage\">Categorize Message</h3>\n<p>This tool automatically analyzes and categorizes incoming messages based on a set of predefined categories that you specify. It's particularly useful for triaging patient communications and routing them to the appropriate part of your care flow based on content and urgency.</p>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Message</code> (Required): The text of the message that needs categorization.</li>\n<li><code>Categories</code> (Required): A list of predefined categories to classify against, separated by commas (e.g., \"Medication Refill,Appointment Request,Symptom Report,Insurance Question,Urgent Medical Issue\").</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Category</code>: The determined ONE category from your predefined list. If no suitable match is found, it returns \"None\".</li>\n<li><code>Explanation</code>: A concise explanation (in HTML format) of the reasoning behind the categorization, which can be displayed to care team or used for auditing.</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>Use distinct categories that align with your clinical workflows.</li>\n<li>Categories should reflect common patient communication types in your practice.</li>\n<li>Avoid ambiguity as current Categorize Message selects only one suitable category.</li>\n</ul>\n<p><strong>Example:</strong></p>\n<pre><code>Input:\n  Message: \"Hello, I need a refill for my blood pressure medication (Lisinopril 20mg). I've been taking it for the past year, and I'm down to my last few pills. My prescription number is RX43821. Can you please send a refill request to my usual pharmacy? I haven't had any side effects or issues with this medication.\"\n  Categories: \"Medication Refill Request,Appointment Scheduling,Non-urgent Symptom Report,Insurance/Billing Question,Urgent Medical Concern\"\n\nOutput:\n  Category: \"Medication Refill Request\"\n  Explanation: \"This message clearly states a need for medication refill, specifically for Lisinopril. The patient provides prescription details and mentions having no side effects or issues. The communication is straightforward and fits perfectly into the 'Medication Refill Request' category as the patient is explicitly asking for a prescription renewal rather than scheduling an appointment, reporting symptoms, asking about insurance, or expressing an urgent concern.\"\n</code></pre>\n<h3 id=\"generatemessage\">Generate Message</h3>\n<p>This tool creates contextually appropriate, personalized communications for patients or healthcare team members based on specific clinical situations and communication needs.</p>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Communication Objective</code> (Required): The clinical purpose and context of the message (e.g., \"Welcome the patient to our chronic care management program\", \"Gather initial health information before the first appointment\", \"Remind the patient about their upcoming medication refill deadline,\" \"Provide detailed preparation instructions for the upcoming colonoscopy procedure\").</li>\n<li><code>Personalization Input</code> (Optional): Clinical and demographic information to personalize the message (e.g., patient name, patient demographics, any other relevant information).</li>\n<li><code>Stakeholder</code> (Optional): The intended recipient's role (e.g., \"Patient\", \"Caregiver\", \"Primary Care Provider\", \"Specialist\"). Defaults to \"Patient\".</li>\n<li><code>Language</code> (Optional): The language for the message. Defaults to English.</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Subject</code>: A clinically appropriate subject line for the message.</li>\n<li><code>Message</code>: The complete message content (in HTML format).</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>Include relevant context in the communication objective.</li>\n<li>Make sure to include all personalization details for better personalized outreach.</li>\n</ul>\n<p><strong>Example:</strong></p>\n<pre><code>Input:\n  Communication Objective: \"Remind the patient about their upcoming appointment and provide preparation instructions (fasting 8 hours before, come 15 minutes early).\"\n  Personalization Input: \"Patient Name: Emma Johnson, Appointment Date: July 15, 2023, Appointment Time: 2:30 PM, Provider: Dr. Sarah Chen, Appointment Type: Annual Physical Exam, Fasting Required: Yes (8 hours)\"\n  Stakeholder: \"Patient\"\n  Language: \"English\"\n\nOutput:\n  Subject: \"Reminder: Your Appointment with Dr. Chen on July 15\"\n  Message: \"&lt;p&gt;Dear Emma,&lt;/p&gt;&lt;p&gt;This is a friendly reminder about your upcoming appointment:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Date:&lt;/strong&gt; July 15, 2023&lt;br&gt;&lt;strong&gt;Time:&lt;/strong&gt; 2:30 PM&lt;br&gt;&lt;strong&gt;Provider:&lt;/strong&gt; Dr. Sarah Chen&lt;br&gt;&lt;strong&gt;Type:&lt;/strong&gt; Annual Physical Exam&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Important Preparation Instructions:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Please fast for 8 hours before your appointment (water is permitted)&lt;/li&gt;&lt;li&gt;Arrive 15 minutes early to complete any necessary paperwork&lt;/li&gt;&lt;li&gt;Bring your identification and insurance information&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We look forward to seeing you!&lt;/p&gt;&lt;p&gt;Best regards,&lt;br&gt;The Care Team&lt;/p&gt;\"\n</code></pre>\n<h3 id=\"medicationfromimageexperimental\">Medication From Image (Experimental)</h3>\n<p>This tool uses advanced image processing and AI to extract structured medication information from images of prescription labels, medication packaging, or pill bottles.</p>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Image URL</code> (Required): The URL of the medication image to be processed.</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Data</code>: Structured medication information in JSON format, including elements like medication name, dosage, frequency, and instructions.</li>\n<li><code>Medication As Text</code>: A formatted plain text version of the extracted medication information for easier human readability.</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>Ensure adequate lighting and focus when capturing images.</li>\n<li>Position the camera to capture the entire medication label clearly.</li>\n<li>The tool can process various image types:</li>\n<li>Prescription labels and bottles</li>\n<li>Medication packaging and boxes</li>\n<li>Handwritten or printed medication lists</li>\n<li>Photos of medication tables or charts</li>\n<li>Images containing multiple medications</li>\n<li>For medication lists, ensure the text is clearly visible and the image is not blurry.</li>\n<li>Multiple medications in a single image will be identified and separated when possible.</li>\n</ul>\n<p><strong>Example:</strong></p>\n<pre><code>Input:\n  Image URL: \"https://example.com/rx_image.jpg\"\n\nOutput:\n  Data: '{\"medications\":[{\"name\":\"Atorvastatin\",\"dosage\":\"40 mg\",\"frequency\":\"Once daily\",\"instructions\":\"Take in the evening\",\"prescriber\":\"Dr. Jennifer Wilson\",\"pharmacy\":\"CityHealth Pharmacy\",\"rxNumber\":\"RX80442553\",\"dateIssued\":\"2023-05-15\",\"refills\":\"2 remaining\"}]}'\n  Medication As Text: \"Name: Atorvastatin\\nDosage: 40 mg\\nFrequency: Once daily\\nInstructions: Take in the evening\\nPrescriber: Dr. Jennifer Wilson\\nPharmacy: CityHealth Pharmacy\\nRx Number: RX80442553\\nDate Issued: 2023-05-15\\nRefills: 2 remaining\"\n</code></pre>\n<h3 id=\"reviewmedicationextraction\">Review Medication Extraction</h3>\n<p>This tool enables qualified clinical staff to review, validate, and if necessary, correct medication information extracted from images.</p>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Image URL</code> (Required): The URL of the medication image that was processed.</li>\n<li><code>Extracted Medication</code> (Required): The structured medication data generated by the Medication From Image action.</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Reviewed Data</code>: The validated or corrected medication information in JSON format.</li>\n<li><code>Review Status</code>: The verification status (e.g., \"Verified Without Changes\", \"Corrected\", \"Rejected\").</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>Assign this task to staff members with clinical medication knowledge.</li>\n<li>The interface presents both the original image and extracted data side-by-side.</li>\n<li>Corrections made during review are captured for quality improvement.</li>\n<li>Consider implementing this as part of a medication reconciliation workflow.</li>\n</ul>\n<h3 id=\"summarizecareflow\">Summarize Care Flow</h3>\n<p>This tool generates comprehensive, contextualized summaries of a patient's progress through their care flow, highlighting key activities, routes taken, and outcomes.</p>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Additional Instructions</code> (Optional): Specific focus areas for the summary (e.g., \"Focus on form completions and reminder effectiveness,\" \"Summarize patient engagement patterns\").</li>\n<li><code>Stakeholder</code> (Optional): The intended audience (e.g., \"Care Coordinator\", \"Administrator\", \"Patient\", \"Provider\"). This affects terminology and detail level.</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Summary</code>: A comprehensive summary of the care flow progress (in HTML format). All summaries include an AI-generated disclaimer for transparency and regulatory compliance.</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>Use additional instructions to focus on specific care flow parts.</li>\n<li>Specify the stakeholder to ensure appropriate terminology and detail level.</li>\n</ul>\n<p><strong>Example:</strong></p>\n<pre><code>Input:\n  Additional Instructions: \"Focus on patient engagement with the intake forms, summarize the reminder sequence and when forms were completed.\"\n  Stakeholder: \"Care Coordinator\"\n\nOutput:\n  Summary: \"&lt;p&gt;&lt;strong&gt;Important Notice:&lt;/strong&gt; This is an AI-generated summary for the 'New Patient Intake' care flow (ID: cf_12345).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Summary: Patient Intake Process&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Patient Alex Morgan (38) was enrolled in the New Patient Intake process on June 3, 2023. The care flow included three required forms: Personal Information, Medical History, and Insurance Verification.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Form Completion Timeline:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Personal Information Form:&lt;/strong&gt; Completed immediately during enrollment (June 3)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Medical History Form:&lt;/strong&gt; Not completed initially&lt;ul&gt;&lt;li&gt;First reminder sent: June 5 via email&lt;/li&gt;&lt;li&gt;Second reminder sent: June 8 via text message&lt;/li&gt;&lt;li&gt;Form completed: June 9 (after 2 reminders)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Insurance Verification Form:&lt;/strong&gt; Not completed initially&lt;ul&gt;&lt;li&gt;First reminder sent: June 5 via email&lt;/li&gt;&lt;li&gt;Second reminder sent: June 8 via text message&lt;/li&gt;&lt;li&gt;Third reminder sent: June 12 via phone call&lt;/li&gt;&lt;li&gt;Form completed: June 12 (after 3 reminders during call)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Engagement Analysis:&lt;/strong&gt; Patient responded to text message reminders most effectively (completed Medical History form within 24 hours of text reminder). The Insurance Verification form required additional support, which was successfully provided during the phone call reminder.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt; All required intake forms have been completed. Patient is now ready for their first appointment on June 15, 2023.&lt;/p&gt;\"\n</code></pre>\n<h3 id=\"summarizeform\">Summarize Form</h3>\n<p>This tool analyzes patient-reported data from forms and generates concise, relevant summaries that highlight key findings in question-answer pairs. It focuses on the last form in the step before this AI Action is included in.</p>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Summary Format</code> (Required): Preferred format for the summary (\"Bullet Points\" or \"Paragraph\").</li>\n<li><code>Language</code> (Optional): Desired language for the summary. If not set, it automatically detects the form's language.</li>\n<li><code>Additional Instructions</code> (Optional): Any additional instructions like specific questions to focus on, desired level of detail, information to emphasize or exclude, etc.</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Summary</code>: A formatted summary of form responses (in HTML format). All summaries include an AI-generated disclaimer for transparency and regulatory compliance.</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>Use bullet point format for symptom reports and clinical findings.</li>\n<li>Use paragraph format for narrative elements like patient experiences.</li>\n<li>Additional instructions can help prioritize significant responses and level of details for your use case needs.</li>\n<li>Remember this is a summary, not a transcript - question-answer pairs from the form won't appear verbatim, and the AI will intelligently condense unnecessary details while preserving important information.</li>\n</ul>\n<p><strong>Example:</strong></p>\n<pre><code>Input:\n  Summary Format: \"Bullet Points\"\n  Language: \"English\"\n  Additional Instructions: \"Highlight any pain scores &gt;5, medication side effects, and changes since last assessment. Flag any responses requiring urgent clinical attention.\"\n\nOutput:\n  Summary: \"&lt;p&gt;&lt;strong&gt;Important Notice:&lt;/strong&gt; This is an AI-generated summary for form responses in version 2.3 of the 'Post-Surgical Follow-up' care flow (ID: cf_789).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Post-Operative Assessment Summary:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Pain Assessment&lt;/strong&gt;: Reports pain level of 7/10 at surgical site &lt;span style='color:red'&gt;(CLINICAL ATTENTION ADVISED)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Pain characteristics: Described as 'sharp and throbbing,' worse with movement&lt;/li&gt;&lt;li&gt;Pain management: Taking prescribed oxycodone-acetaminophen as directed, but reporting inadequate relief&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Incision Site&lt;/strong&gt;: Reports increasing redness and warmth around incision since yesterday &lt;span style='color:red'&gt;(CLINICAL ATTENTION ADVISED)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Drainage: Minimal serous drainage, no purulence reported&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Functional Status&lt;/strong&gt;: Ambulating with assistance, able to perform basic ADLs with moderate difficulty&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Medication Side Effects&lt;/strong&gt;: Reports nausea and constipation with pain medication&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Vital Signs&lt;/strong&gt; (self-reported): Temperature 99.8°F (37.7°C), slightly elevated from last assessment (98.6°F)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Change Since Last Assessment&lt;/strong&gt;: Patient reports increased pain and incision site changes over past 24 hours&lt;/li&gt;&lt;/ul&gt;\"\n</code></pre>\n<h3 id=\"summarizeformsinstep\">Summarize Forms in Step</h3>\n<p>This tool analyzes data from multiple forms completed in a single step and creates summaries for each form. It processes all forms in the current step where this AI Action is included and organizes them by form title.</p>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Summary Format</code> (Required): Preferred format for the summary (\"Bullet Points\" or \"Paragraph\").</li>\n<li><code>Language</code> (Optional): Desired language for the summary. If not set, it automatically detects the predominant language.</li>\n<li><code>Additional Instructions</code> (Optional): Any additional instructions like specific questions to focus on, desired level of detail, information to emphasize or exclude, etc.</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Summary</code>: A formatted collection of all form responses in the step, organized by form title (in HTML format). All summaries include an AI-generated disclaimer for transparency and regulatory compliance.</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>Particularly valuable for multi-form assessments that gather related information.</li>\n<li>Reduces the need to read through multiple form submissions separately.</li>\n<li>Remember this is a summary, not a transcript - question-answer pairs from the forms won't appear verbatim, and the AI will intelligently condense unnecessary details while preserving important information.</li>\n</ul>\n<p><strong>Example:</strong></p>\n<pre><code>Input:\n  Summary Format: \"Bullet Points\"\n  Language: \"Default\"\n  Additional Instructions: \"Highlight key symptoms and lifestyle factors that might affect the patient's condition.\"\n\nOutput:\n  Summary: \"&lt;p&gt;&lt;strong&gt;Important Notice:&lt;/strong&gt; This is an AI-generated summary for form responses in the 'Diabetes Management' care flow (ID: cf_789).&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Blood Glucose Monitoring Form:&lt;/strong&gt;&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Morning readings averaging 145 mg/dL (target: &lt;120 mg/dL)&lt;/li&gt;\n&lt;li&gt;Evening readings within normal range (average 115 mg/dL)&lt;/li&gt;\n&lt;li&gt;Two hypoglycemic events reported this week (both after exercise)&lt;/li&gt;\n&lt;li&gt;Consistent monitoring schedule (14/14 planned measurements completed)&lt;/li&gt;\n&lt;/ul&gt;\n\n&lt;p&gt;&lt;strong&gt;Nutrition Assessment Form:&lt;/strong&gt;&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Carbohydrate intake: 45-60g per meal, within recommended range&lt;/li&gt;\n&lt;li&gt;Reported difficulty avoiding carbs at dinner social events&lt;/li&gt;\n&lt;li&gt;Successfully increased vegetable consumption to 3-4 servings daily&lt;/li&gt;\n&lt;li&gt;Water intake below recommendation (4 glasses vs. recommended 8)&lt;/li&gt;\n&lt;/ul&gt;\n\n&lt;p&gt;&lt;strong&gt;Physical Activity Log:&lt;/strong&gt;&lt;/p&gt;\n&lt;ul&gt;\n&lt;li&gt;Walking: 20 minutes daily (consistent pattern)&lt;/li&gt;\n&lt;li&gt;Strength training: 2 sessions this week (target: 3 sessions)&lt;/li&gt;\n&lt;li&gt;Reports joint pain in knees after longer walking sessions&lt;/li&gt;\n&lt;li&gt;Activity level increases on weekends, with lower glucose readings noted after weekend activities&lt;/li&gt;\n&lt;/ul&gt;\"\n</code></pre>\n<h3 id=\"summarizetrackoutcome\">Summarize Track Outcome</h3>\n<p>This tool analyzes the progression through a specific track in a care flow, highlighting key routes taken and outcomes.</p>\n<p><strong>What it needs (Inputs):</strong></p>\n<ul>\n<li><code>Instructions</code> (Optional): Specific focus for the analysis (e.g., \"Summarize outcome, focus on semantic information in form and messages\").</li>\n</ul>\n<p><strong>What it gives back (Outputs):</strong></p>\n<ul>\n<li><code>Outcome Summary</code>: A comprehensive summary of the track's progression and outcomes (in HTML format).</li>\n</ul>\n<p><strong>Tips for best results:</strong></p>\n<ul>\n<li>Make sure you build a care flow in a way that AI action can leverage semantic information (meaningful names of steps, labels, meaningful names of actions)</li>\n<li>NOTE: AI action does not have access to transition logic; it only can see which routes were taken and which steps were discarded.</li>\n</ul>\n<p><strong>Example:</strong></p>\n<pre><code>Input:\n  Instructions: \"Summarize outcome, focus on semantic information in form and messages\"\n\nOutput:\n  Outcome Summary: \"&lt;p&gt;&lt;strong&gt;Important Notice:&lt;/strong&gt; This is an AI-generated summary for the 'Patient Symptom Assessment' care flow (ID: cf_567).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Track Outcome Summary:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt; The initial assessment form was completed, summarizing the patient's symptoms and concerns.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Details Supporting the Outcome:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The initial assessment form was presented to the patient, Samantha Joe, who provided responses indicating symptoms of fever, fatigue, and shortness of breath, with a severity level of 8.&lt;/li&gt;&lt;li&gt;The patient confirmed having experienced these symptoms before and expressed a need for help with anxiety.&lt;/li&gt;&lt;li&gt;The form responses were summarized, highlighting the patient's primary concerns and symptom details.&lt;/li&gt;&lt;li&gt;The process concluded with the successful completion of the form summary.&lt;/li&gt;&lt;/ul&gt;\"\n</code></pre>","changelog":"<h1 id=\"shellychangelog\">Shelly changelog</h1>","actions":{"categorizeMessage":{"key":"categorizeMessage","title":"Categorize Message","description":"Categorizes messages into predefined categories with explanation.","category":"Workflow","fields":{"messageDataPoint":{"id":"messageDataPoint","label":"Message Data Point","description":"The message to be categorized. Use this if you want to use a data point for the message.","type":"string","required":false},"message":{"id":"message","label":"Message","description":"The message to be categorized. Use this if you want to use a text for the message.","type":"text","required":false},"categories":{"id":"categories","label":"Categories","description":"List of categories (comma-separated, no spaces)","type":"string","required":true},"instructions":{"id":"instructions","label":"Instructions","description":"Add additional instructions prompt for the LLM","type":"text","required":false}},"previewable":true,"dataPoints":{"category":{"key":"category","valueType":"string"},"explanation":{"key":"explanation","valueType":"string"}}},"generateMessage":{"key":"generateMessage","title":"Generate Message","description":"Generate a personalized message","category":"Workflow","fields":{"communicationObjective":{"id":"communicationObjective","label":"Communication Objective","description":"Provide the main purpose of the message. Add any important message context.","type":"string","required":true},"personalizationInput":{"id":"personalizationInput","label":"Personalization Input","description":"[Optional] Specify the personalization input for the message (name, age, gender, date of the last checkup, etc). This is used to personalize the message to the recipient.","type":"string","required":false},"stakeholder":{"id":"stakeholder","label":"Stakeholder","description":"[Optional]Specify the recipient role; defaults to \"Patient.\" Used for personalization.","type":"string","required":false},"language":{"id":"language","label":"Language","description":"[Optional]Specify the language of the message; defaults to English.","type":"string","required":false}},"previewable":true,"dataPoints":{"subject":{"key":"subject","valueType":"string"},"message":{"key":"message","valueType":"string"}}},"medicationFromImage":{"key":"medicationFromImage","title":"Extract medication from image (Experimental)","description":"Generates structured medication list from picture ","category":"Workflow","fields":{"imageUrl":{"id":"imageUrl","label":"Image URL","description":"The URL to the uploaded image","type":"string","required":true}},"previewable":false,"dataPoints":{"data":{"key":"data","valueType":"json"},"medicationAsText":{"key":"medicationAsText","valueType":"string"}}},"parseStructuredData":{"key":"parseStructuredData","title":"Parse Structured Data","description":"Extracts structured data from unstructured text messages using a provided JSON schema.","category":"Workflow","fields":{"messageDataPoint":{"id":"messageDataPoint","label":"Message Data Point","description":"The message to parse. Use this if you want to use a data point for the message.","type":"string","required":false},"message":{"id":"message","label":"Message","description":"The message to parse. Use this if you want to use a text for the message.","type":"text","required":false},"schema":{"id":"schema","label":"Schema","description":"JSON schema defining the structure to extract from the message. Example: {\"name\": \"string\", \"age\": \"number\", \"email\": \"string\"}","type":"json","required":true},"instructions":{"id":"instructions","label":"Instructions","description":"Add additional instructions prompt for the LLM","type":"text","required":false}},"previewable":true,"dataPoints":{"parsedData":{"key":"parsedData","valueType":"json"},"explanation":{"key":"explanation","valueType":"string"},"confidenceLevel":{"key":"confidenceLevel","valueType":"number"}}},"reviewMedicationExtraction":{"key":"reviewMedicationExtraction","title":"Review medication extraction","description":"Allow a stakeholder to review the medication extraction","category":"Workflow","fields":{"imageUrl":{"id":"imageUrl","label":"Image URL","description":"The URL to the uploaded image","type":"string","required":true},"medicationData":{"id":"medicationData","label":"Medication data","description":"The medication data to review","type":"json","required":true}},"previewable":false,"dataPoints":{"validatedData":{"key":"validatedData","valueType":"json"}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}}},"summarizeCareFlow":{"key":"summarizeCareFlow","title":"Summarize Care Flow","description":"Summarize the care flow up until now","category":"Workflow","fields":{"additionalInstructions":{"id":"additionalInstructions","label":"Additional instructions","description":"Specify additional instructions for summarization, for example format, length, what to focus on etc. If not specified, default instructions will be used.","type":"string","required":false},"stakeholder":{"id":"stakeholder","label":"Stakeholder","description":"Indicates who the summarization is intended for. Defaults to \"Clinician\"","type":"string","required":false}},"previewable":false,"dataPoints":{"summary":{"key":"summary","valueType":"string"}}},"summarizeForm":{"key":"summarizeForm","title":"Summarize Form","description":"Summarize form responses with AI. Defaults to the latest form in the current step, but can summarize all forms in the step or across the track.","category":"Workflow","fields":{"scope":{"id":"scope","label":"Scope","description":"The scope in which to look for forms. Default is \"Step\" (current step only).","type":"string","required":false,"options":{"dropdownOptions":[{"label":"Step","value":"Step"},{"label":"Track","value":"Track"}]}},"formSelection":{"id":"formSelection","label":"Form selection","description":"Whether to summarize the most recent form or all forms in the scope. Default is \"Latest\".","type":"string","required":false,"options":{"dropdownOptions":[{"label":"Latest","value":"Latest"},{"label":"All","value":"All"}]}},"summaryFormat":{"id":"summaryFormat","label":"Summary Format","description":"Format of the summary. Acceptable values are \"Bullet-points\" and \"Text paragraph\". Defaults to Bullet-points.","type":"string","required":false,"options":{"dropdownOptions":[{"label":"Bullet-points","value":"Bullet-points"},{"label":"Text paragraph","value":"Text paragraph"}]}},"language":{"id":"language","label":"Language","description":"[Optional] Language of the summarization. Defaults to the language of the form.","type":"string","required":false},"additionalInstructions":{"id":"additionalInstructions","label":"Additional Instructions","description":"[Optional] Specify additional instructions for the AI to generate the form summary. You can include details about: specific questions to focus on, desired level of detail, information to emphasize or exclude, etc.","type":"text","required":false}},"previewable":false,"dataPoints":{"summary":{"key":"summary","valueType":"string"}}},"summarizeFormsInStep":{"key":"summarizeFormsInStep","title":"Summarize Forms in Step","description":"Summarize the responses of all forms in the step with AI.","category":"Workflow","fields":{"summaryFormat":{"id":"summaryFormat","label":"Summary Format","description":"Specify the format of the summary. Acceptable values are \"Bullet-points\" and \"Text paragraph\". Defaults to Bullet-points.","type":"string","required":false},"language":{"id":"language","label":"Language","description":"[Optional] Indicates the language of the summarization. Defaults to the language of the form.","type":"string","required":false}},"previewable":false,"dataPoints":{"summary":{"key":"summary","valueType":"string"}}},"summarizeTrackOutcome":{"key":"summarizeTrackOutcome","title":"Summarize Track Outcome","description":"Summarize the care flow track outcome and activities that led to the outcome","category":"Workflow","fields":{"instructions":{"id":"instructions","label":"Instructions","description":"Specify instructions for the AI to generate the track outcome summary. You can include details about: what outcome to focus on, where to find it in the track, specific forms to analyze, desired length and format, parts of the track to exclude, level of detail for decision paths, etc.","type":"text","required":false}},"previewable":false,"dataPoints":{"outcomeSummary":{"key":"outcomeSummary","valueType":"string"}}}},"webhooks":[],"description":"Library of AI-powered actions","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1726037275/Awell%20Extensions/shelly_logo.png","title":"Shelly","category":"Workflow","author":{"authorType":"Awell"},"settings":{}},{"key":"slack","htmlDocs":"<hr />\n<p>title: Slack</p>\n<h2 id=\"descriptionslackisamessagingplatformforteamsthatbringsallyourcommunicationtogethergivingeveryoneasharedworkspacewhereconversationsareorganizedandaccessible\">description: Slack is a messaging platform for teams that brings all your communication together, giving everyone a shared workspace where conversations are organized and accessible.</h2>\n<h1 id=\"slack\">Slack</h1>\n<p>Slack is a messaging platform for teams that brings all your communication together, giving everyone a shared workspace where conversations are organized and accessible.</p>\n<p>This extension allows you to send messages to Slack channels from your care flows, keeping your team informed about important events and updates.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will need:</p>\n<ol>\n<li>A Slack App with a Bot User OAuth Token (starts with <code>xoxb-</code>)</li>\n<li>The bot must have the <code>chat:write</code> OAuth scope</li>\n</ol>\n<h3 id=\"settingupyourslackapp\">Setting up your Slack App</h3>\n<ol>\n<li>Go to <a href=\"https://api.slack.com/apps\">https://api.slack.com/apps</a> and click \"Create New App\"</li>\n<li>Choose \"From scratch\" and give your app a name</li>\n<li>Navigate to \"OAuth &amp; Permissions\" in the sidebar</li>\n<li>Under \"Scopes\", add the <code>chat:write</code> Bot Token Scope</li>\n<li>Click \"Install to Workspace\" at the top of the page</li>\n<li>Copy the \"Bot User OAuth Token\" (starts with <code>xoxb-</code>)</li>\n<li>Use this token in the extension settings</li>\n</ol>\n<h3 id=\"invitingthebottochannels\">Inviting the bot to channels</h3>\n<p>Before the bot can post messages to a channel, it must be invited to that channel. You can do this by:</p>\n<ol>\n<li>Going to the channel in Slack</li>\n<li>Typing <code>/invite @YourBotName</code></li>\n</ol>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"sendmessagetochannel\">Send Message to Channel</h3>\n<p>Send a message to a Slack channel.</p>\n<p><strong>Input fields:</strong></p>\n<ul>\n<li><strong>Channel</strong> (required): The Slack channel to send the message to. You can use either the channel ID (e.g., <code>C1234567890</code>) or the channel name (e.g., <code>#general</code>). The bot must be invited to the channel.</li>\n<li><strong>Message</strong> (required): The message content to send to the channel.</li>\n</ul>\n<p><strong>Output data points:</strong></p>\n<ul>\n<li><strong>messageTs</strong>: The timestamp/ID of the posted message. This can be used for threading or updating the message later.</li>\n<li><strong>channelId</strong>: The channel ID where the message was posted.</li>\n</ul>","changelog":"<h1 id=\"slackextensionchangelog\">Slack extension changelog</h1>\n<h2 id=\"initialrelease\">Initial release</h2>\n<p>Initial release of the Slack extension with the following action:</p>\n<ul>\n<li><strong>Send Message to Channel</strong>: Send a message to a Slack channel from your care flow.</li>\n</ul>","actions":{"sendMessageToChannel":{"key":"sendMessageToChannel","title":"Send Message to Channel","description":"Send a message to a Slack channel.","category":"Communication","fields":{"channel":{"id":"channel","label":"Channel","description":"The Slack channel to send the message to. Use the channel ID (e.g., C1234567890) or channel name (e.g., #general). The bot must be invited to the channel.","type":"string","required":true},"message":{"id":"message","label":"Message","description":"The message content to send to the channel.","type":"text","required":true}},"dataPoints":{"messageTs":{"key":"messageTs","valueType":"string"},"channelId":{"key":"channelId","valueType":"string"}},"previewable":true}},"webhooks":[],"description":"Send messages to Slack channels from your care flows to keep your team informed.","icon_url":"https://res.cloudinary.com/dre4xxcrk/image/upload/v1769185115/Slack_icon_2019_jr0cmr.svg","title":"Slack","category":"Communication","author":{"authorType":"Awell"},"settings":{"botToken":{"key":"botToken","label":"Bot Token","obfuscated":true,"required":true,"description":"Your Slack Bot User OAuth Token (starts with xoxb-). You can find this in your Slack App settings under \"OAuth & Permissions\". The bot needs the chat:write scope."}}},{"key":"stedi","htmlDocs":"<hr />\n<p>title: Stedi\ndescription: Automate healthcare transactions like real-time eligibility checks and claims processing with APIs that support thousands of payers.</p>\n<hr />\n<h1 id=\"stedi\">Stedi</h1>\n<p>Automate healthcare transactions like real-time eligibility checks and claims processing with APIs that support thousands of payers.</p>","changelog":"<h1 id=\"changelog\">CHANGELOG</h1>","actions":{"checkEligibility":{"key":"checkEligibility","title":"Check eligibility","description":"This is a dummy action that checks eligibility for a given request.","category":"Billing","fields":{"data":{"id":"data","label":"Data","description":"Paste example JSON here that mocks the data Stedi would return","type":"string","required":true}},"previewable":false,"dataPoints":{"data":{"key":"data","valueType":"string"}}}},"webhooks":[],"description":"Automate healthcare transactions like real-time eligibility checks and claims processing with APIs that support thousands of payers.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1753954684/Awell%20Extensions/skaoypelxrnkigpymjye.webp","title":"Stedi","category":"Billing","author":{"authorType":"Awell"},"settings":{}},{"key":"stripe","htmlDocs":"<hr />\n<p>title: Stripe</p>\n<h2 id=\"descriptionstripepowersonlineandinpersonpaymentprocessingandfinancialsolutionsforbusinessesofallsizes\">description: Stripe powers online and in-person payment processing and financial solutions for businesses of all sizes.</h2>\n<h2 id=\"stripe\">Stripe</h2>\n<p>Stripe powers online and in-person payment processing and financial solutions for businesses of all sizes.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>For the extension to function correctly, you must configure the following settings:</p>\n<ul>\n<li>Secret key (test and live mode)</li>\n<li>Publishable key (test and live mode)</li>\n<li>Mode (\"Test\" or \"Live\")</li>\n</ul>","changelog":"<h1 id=\"stripechangelog\">Stripe changelog</h1>","actions":{"createSubscription":{"key":"createSubscription","title":"Create subscription","description":"Create a subscription in Stripe","category":"Billing","fields":{"customer":{"id":"customer","label":"Customer","description":"The identifier of the customer to subscribe","type":"string","required":true},"item":{"id":"item","label":"Item","description":"The ID of the price object","type":"string","required":true}},"previewable":false,"dataPoints":{"subscriptionId":{"key":"subscriptionId","valueType":"string"}}},"createCustomer":{"key":"createCustomer","title":"Create customer","description":"Create a customer in Stripe","category":"Billing","fields":{"email":{"id":"email","label":"Email","description":"Customer’s email address. It’s displayed alongside the customer in your dashboard and can be useful for searching and tracking.","type":"string","required":false},"name":{"id":"name","label":"Name","description":"The customer’s full name or business name.","type":"string","required":false}},"previewable":true,"dataPoints":{"customerId":{"key":"customerId","valueType":"string"}}},"embeddedCheckout":{"key":"embeddedCheckout","title":"Embedded checkout","description":"Embedded checkout in Awell Hosted Pages","category":"Billing","fields":{"mode":{"id":"mode","label":"Mode","description":"The mode of the checkout session which can be 'payment', 'setup', and 'subscription'","type":"string","required":true,"options":{"dropdownOptions":[{"label":"Payment","value":"payment"},{"label":"Setup","value":"setup"},{"label":"Subscription","value":"subscription"}]}},"item":{"id":"item","label":"Item","description":"The id of the item (price ID) the customer is purchasing","type":"string","required":true}},"previewable":false,"dataPoints":{"success":{"key":"success","valueType":"boolean"}},"options":{"stakeholders":{"label":"Stakeholder","mode":"single"}}}},"webhooks":[],"description":"Stripe powers online and in-person payment processing and financial solutions for businesses of all sizes.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1715008389/Awell%20Extensions/images_1.png","title":"Stripe (alpha)","category":"Billing","author":{"authorType":"Awell"},"settings":{"testModeSecretKey":{"key":"testModeSecretKey","label":"Test mode secret key","obfuscated":true,"required":true,"description":"This key is used to authenticate requests on your server when in test mode"},"testModePublishableKey":{"key":"testModePublishableKey","label":"Test mode publishable key","obfuscated":false,"required":true,"description":"This key is used for testing Embedded checkout in Awell Hosted Pages"},"liveModeSecretKey":{"key":"liveModeSecretKey","label":"Live mode secret key","obfuscated":true,"required":true,"description":"This key is used to authenticate requests on your server when in live mode"},"liveModePublishableKey":{"key":"liveModePublishableKey","label":"Live mode publishable key","obfuscated":false,"required":true,"description":"This key is used for testing Embedded checkout in Awell Hosted Pages"},"mode":{"key":"mode","label":"Mode","obfuscated":false,"required":true,"description":"\"Test\" or \"Live\", defaults to \"Test\". Make sure to have a secret key set for live mode when enabling it."},"hostedPagesEnvironmentVariable":{"key":"hostedPagesEnvironmentVariable","label":"Hosted Pages environment variable","obfuscated":false,"required":true,"description":"This will be removed once the extension is out of alpha mode. This needs to be configured by an Awell developer."}}},{"key":"talkDesk","htmlDocs":"<hr />\n<p>title: Talkdesk</p>\n<h2 id=\"descriptiontalkdeskisacloudbasedcustomerexperienceandcontactcentersoftwarecompanyitprovidesaplatformthatenablesbusinessestosetupandmanagetheircustomerserviceandsupportoperations\">description: Talkdesk is a cloud-based customer experience and contact center software company. It provides a platform that enables businesses to set up and manage their customer service and support operations.</h2>\n<h1 id=\"talkdesk\">TalkDesk</h1>\n<p>Talkdesk is a cloud-based customer experience and contact center software company. It provides a platform that enables businesses to set up and manage their customer service and support operations. Talkdesk offers a range of features and tools to streamline and enhance communication between businesses and their customers.</p>\n<h2 id=\"setup\">Setup</h2>\n<p>To set up the extension, you'll need your Talkdesk account name along with a client ID and client secret. Please ensure that the credentials you provide are associated with the necessary permissions, or \"scopes,\" to run the extension:</p>\n<ul>\n<li>flows-interactions:start</li>\n</ul>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"triggerflow\">Trigger flow</h3>\n<p>Enables the initiation of a Talkdesk flow directly from an Awell careflow. This feature triggers an interaction using the most recent published version of a specific Studio flow. You'll need to supply the ID of the flow and the data (as a JSON object) that you want to input into the flow.</p>\n<p>Important: Please note that Talkdesk sets a restriction of up to two API requests per second (rps) for each account using their Flows API.</p>\n<p><a href=\"https://studio.talkdesk.com/docs/sending-notifications-to-contacts-via-api-request\">Click here</a> to learn more about triggering flows via the Talkdesk API and here to read the <a href=\"https://docs.talkdesk.com/reference/flows-api-ref\">API docs</a>.</p>","changelog":"<h1 id=\"talkdeskchangelog\">TalkDesk changelog</h1>","actions":{"triggerFlow":{"key":"triggerFlow","title":"Trigger flow","description":"Trigger a flow in Talkdesk","category":"Communication","fields":{"flowId":{"id":"flowId","label":"Flow ID","description":"The ID of the flow you would like to trigger","type":"string","required":true},"autoComplete":{"id":"autoComplete","label":"Autocomplete","description":"If true, the activity will not wait for the flow to complete (default: false)","type":"boolean","required":false},"data":{"id":"data","label":"Data","description":"Data to be ingested when triggering the flow, including the `awell_activity_id` so the flow can perform the appropriate completeExtensionActivity callback.","type":"json","required":true}},"previewable":false,"dataPoints":{"interactionId":{"key":"interactionId","valueType":"string"},"flowVersionId":{"key":"flowVersionId","valueType":"string"},"call_start_time":{"key":"call_start_time","valueType":"date"},"call_end_time":{"key":"call_end_time","valueType":"date"},"call_duration_ms":{"key":"call_duration_ms","valueType":"number"},"call_status":{"key":"call_status","valueType":"string"},"disposition":{"key":"disposition","valueType":"string"},"agent":{"key":"agent","valueType":"string"}}}},"webhooks":[],"description":"Talkdesk is a cloud-based customer experience and contact center software company.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1689344292/Awell%20Extensions/talkdesk_logo.jpg","title":"Talkdesk","category":"Communication","author":{"authorType":"Awell"},"settings":{"talkDeskAccountName":{"key":"talkDeskAccountName","label":"Talkdesk account name","obfuscated":false,"description":"","required":true},"region":{"key":"region","label":"Region","obfuscated":false,"description":"US, EU, or Canada. Defaults to US.","required":false},"clientId":{"key":"clientId","label":"Client ID","obfuscated":false,"description":"The client ID for OAuth2 Password authentication.","required":true},"clientSecret":{"key":"clientSecret","label":"Client Secret","obfuscated":true,"description":"The client secret for OAuth2 Password authentication.","required":true}}},{"key":"textline","htmlDocs":"<hr />\n<p>title: TextLine</p>\n<h2 id=\"descriptiontextlinesbusinesstextingsoftwareofferssolutionsforsalesmarketingcustomerserviceandbeyondutilizethepowerofsmstogrowquickly\">description: Textline's business texting software offers solutions for sales, marketing, customer service and beyond. Utilize the power of SMS to grow quickly.</h2>\n<h1 id=\"textline\">TextLine</h1>\n<p>TextLine is a customer engagement platform used by hundreds of thousands of businesses and more than ten million developers worldwide to build unique, personalized experiences for their customers.</p>\n<p>They are known for democratizing channels like voice, text, chat, video, and email through APIs, making it easy for every organization to build meaningful interactions with customers on the channels they prefer.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will need:</p>\n<ol>\n<li>A TextLine API key or auth token which can be found in the TextLine console.</li>\n<li>Your account SID which can be found in the TextLine console.</li>\n<li>A phone number to send the message from. This must be a TextLine phone number that you own.</li>\n</ol>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"sendsms\">Send SMS</h3>\n<p>Send an SMS with TextLine to a recipient of your liking.</p>\n<h3 id=\"getmessages\">Get messages</h3>\n<p>This action retrieves received messages. One can apply the <code>phoneNumber</code> filter to this action to display only received messages from that <code>phoneNumber</code>.\nOnly the last 30 messages are returned.</p>\n<h3 id=\"setcontactconsent\">Set Contact Consent</h3>\n<p>For HIPAA and Pro accounts setup with Contact Consent, this action can set contact's consent status. To do this, your account must have API import allowed and the user making the API request must have the \"Can manually set consent\" permission on for their role. You must then use the Contact's phone number and their consent status (true or false).</p>\n<h4 id=\"simpleusecase\">Simple Use Case</h4>\n<p><strong>Initiating a Conversation</strong>: A user sends a message to \"Number A\", initiating a conversation.</p>\n<p><strong>Receiving a Response</strong>: \"Number A\" responds to the message, contributing to the ongoing conversation.</p>\n<p><strong>Searching Messages & Applying Filters</strong>: To focus on the responses from \"Number A\", `phoneNumber`` filter can be applied to only show received messages from \"Number A\" within the conversation. This allows users to easily review and manage responses from \"Number A\", without the clutter of other received messages.</p>","changelog":"<h1 id=\"textlinechangelog\">TextLine changelog</h1>\n<h2 id=\"20240311\">2024-03-11</h2>\n<ol>\n<li>Add option to set department ID when sending messages and when retrieving messages. Check official documentation here: https://textline.docs.apiary.io/#reference/conversations/phone-numbers/message-a-phone-number</li>\n</ol>\n<h2 id=\"2024035\">2024-03-5</h2>\n<ol>\n<li>Add capability to set contact consent status (https://textline.docs.apiary.io/#reference/customers/set-contact-consent/set-contact-consent)</li>\n<li>Add several fixes and tweaks to improve current actions</li>\n</ol>\n<h2 id=\"20240226\">2024-02-26</h2>\n<ol>\n<li>Add capability to search for messages using all the allowed filters provided by TextLine API.</li>\n<li>Add \"Send SMS\" action</li>\n</ol>","actions":{"sendSms":{"key":"sendSms","title":"Send SMS","description":"Send a text message from a given telephone number to a recipient of your choice.","category":"Communication","fields":{"recipient":{"id":"recipient","label":"\"To\" phone number","type":"string","stringType":"phone","description":"The phone number you would like to send the text message to.","required":true},"message":{"id":"message","label":"Message","description":"The message you would like to send.","type":"text","required":true},"departmentId":{"id":"departmentId","label":"Department Id","description":"The department from which you want to send the message. Defaults to to your first department.","type":"string","required":false}},"previewable":true,"dataPoints":{"conversationId":{"key":"conversationId","valueType":"string"},"messageId":{"key":"messageId","valueType":"string"}}},"getMessages":{"key":"getMessages","title":"Get messages","description":"\n    Get a list of text messages matching the given criteria.\n    You can also filter the Messages by providing one of the allowed filters.\n    ","category":"Communication","fields":{"phoneNumber":{"id":"phoneNumber","label":"Phone number to filter","type":"string","stringType":"phone","description":"Search for text messages received from this phone number","required":false},"afterMessageId":{"id":"afterMessageId","label":"Messages after","type":"string","description":"The id of a message to use as non inclusive lower bound of post results.","required":false},"departmentId":{"id":"departmentId","label":"Department Id","description":"The ID of the department from which you want to retrieve the message. Defaults to to your first department.","type":"string","required":false}},"dataPoints":{"numberOfMessages":{"key":"numberOfMessages","valueType":"number"},"allMessages":{"key":"allMessages","valueType":"strings_array"},"latestMessage":{"key":"latestMessage","valueType":"string"}},"previewable":true},"setContactConsent":{"key":"setContactConsent","title":"Set Contact Consent","description":"Set contact consent status. You can set consent as true or false. ","category":"Communication","fields":{"recipient":{"id":"recipient","label":"\"To\" phone number","type":"string","stringType":"phone","description":"The phone number you would like set the consent status.","required":true},"consentStatus":{"id":"consentStatus","label":"Set customer consent","description":"A true or false value to set the consent status of a contact.","type":"boolean","required":true}},"previewable":true}},"webhooks":[],"description":"Textline's business texting software offers solutions for sales, marketing, customer service, and beyond. Utilize the power of SMS to grow quickly.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1709035140/Awell%20Extensions/OkNMApXr_400x400.jpg","title":"TextLine","category":"Communication","author":{"authorType":"Awell"},"settings":{"accessToken":{"label":"Access Token","key":"accessToken","obfuscated":true,"required":true,"description":"Find your Access Token at https://application.textline.com/organization/api_settings."}}},{"key":"text-em-all","htmlDocs":"<hr />\n<p>title: Text-Em-All</p>\n<h2 id=\"descriptiontextemallisatextingandautomatedcallingservicethatenablesorganizationstocommunicatewithpatients\">description: Text-Em-All is a texting and automated calling service that enables organizations to communicate with patients.</h2>\n<h1 id=\"textemall\">Text-Em-All</h1>\n<p>Text-Em-All is a texting and automated calling service that enables organizations to communicate with patients.</p>\n<h2 id=\"supportedactions\">Supported Actions</h2>\n<ul>\n<li><strong>sendSMSBroadcast</strong> - Schedule SMS message to a specified user</li>\n<li><strong>sendCallBroadcast</strong> - Schedule an Call message to a specified user</li>\n</ul>\n<h2 id=\"webhooks\">Webhooks</h2>\n<h1 id=\"broadcaststatuschange\">Broadcast Status Change</h1>\n<p>Triggered when the status of a call or text broadcast changes to one of the following states:</p>\n<table>\n<thead>\n<tr>\n<th>Status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>created</code></td>\n<td>A broadcast has been created on your Call-Em-All account. It may be scheduled to run in the future and it may not have all the information set up to run yet.</td>\n</tr>\n<tr>\n<td><code>ready</code></td>\n<td>The broadcast has all information necessary to run and is waiting for its start time.</td>\n</tr>\n<tr>\n<td><code>broadcasting</code></td>\n<td>The broadcast started to send out phone calls or text messages.</td>\n</tr>\n<tr>\n<td><code>completed</code></td>\n<td>The broadcast has finished sending out all phone calls or text messages.</td>\n</tr>\n<tr>\n<td><code>paused</code></td>\n<td>The broadcast has been paused and no calls or texts are going out.</td>\n</tr>\n<tr>\n<td><code>resumed</code></td>\n<td>A paused broadcast resumes.</td>\n</tr>\n<tr>\n<td><code>canceled</code></td>\n<td>The broadcast was canceled.</td>\n</tr>\n<tr>\n<td><code>expired</code></td>\n<td>The window that was set up for the broadcast by the user was insufficient to send out all the calls or texts. The broadcast has been expired and some of the calls and texts are not delivered.</td>\n</tr>\n</tbody>\n</table>\n<p>Webhook includes:</p>\n<ul>\n<li>Broadcast ID</li>\n<li>Broadcast status</li>\n</ul>\n<h2 id=\"setup\">Setup</h2>\n<p>The Text-Em-All extension requires the following settings to be configured:</p>\n<table>\n<thead>\n<tr>\n<th>Setting name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>customerKey</code></td>\n<td>Yes</td>\n<td>Your Text-Em-All customer key</td>\n</tr>\n<tr>\n<td><code>customerSecret</code></td>\n<td>Yes</td>\n<td>Your Text-Em-All customer secret</td>\n</tr>\n<tr>\n<td><code>token</code></td>\n<td>Yes</td>\n<td>Your Text-Em-All token</td>\n</tr>\n<tr>\n<td><code>baseUrl</code></td>\n<td>Yes</td>\n<td>Your Text-Em-All base URL</td>\n</tr>\n</tbody>\n</table>\n<h1 id=\"findoutmore\">Find out more</h1>\n<p>For detailed information about setting up webhooks, notification formats, and additional event types, please visit the <a href=\"https://dev.text-em-all.com/Webhooks#events\">Text-Em-All Webhooks documentation</a>.</p>","changelog":"<h1 id=\"textemallchangelog\">Text-em-all changelog</h1>","actions":{"createSMSBroadcast":{"key":"createSMSBroadcast","title":"Send a new SMS broadcast","description":"Send a text message to a recipient. Returns the delivery result (sent, invalid_number, failed, etc.) for triage purposes.","category":"Communication","fields":{"broadcastName":{"id":"broadcastName","label":"Broadcast Name","type":"string","required":true,"description":"The name of the broadcast."},"phoneNumber":{"id":"phoneNumber","label":"Phone Number","type":"string","stringType":"phone","required":false,"description":"The primary phone number of the recipient. Must be a valid NANP phone number. If omitted, falls back to the patient mobile phone from their profile."},"firstName":{"id":"firstName","label":"First Name","type":"string","required":false,"description":"The first name of the contact. If omitted, falls back to the patient first name from their profile."},"lastName":{"id":"lastName","label":"Last Name","type":"string","required":false,"description":"The last name of the contact. If omitted, falls back to the patient last name from their profile."},"notes":{"id":"notes","label":"Notes","type":"string","required":false,"description":"Notes about the contact (e.g., \"Eligibility form from Awell\")."},"integrationData":{"id":"integrationData","label":"Integration Data","type":"string","required":false,"description":"Extra field for integration information."},"textMessage":{"id":"textMessage","label":"Text Message","type":"text","required":true,"description":"The text of the message for a text type broadcast. The max length is based on the setting in your account."},"textNumberID":{"id":"textNumberID","label":"Text Number ID","type":"numeric","required":false,"description":"The ID of the text number your messages will be sent from. If omitted, the default text number on your account will be used."},"startDate":{"id":"startDate","label":"Start Date","type":"date","required":false,"description":"The time the broadcast should start. Will default to start immediately. If provided must be a datetime as ISO 8601 string and time to send the message in UTC"},"checkCallingWindow":{"id":"checkCallingWindow","label":"Check Calling Window","type":"boolean","required":false,"description":"Whether to enforce the calling window restrictions. Defaults to false."}},"dataPoints":{"success":{"key":"success","valueType":"boolean"},"broadcastId":{"key":"broadcastId","valueType":"number"},"broadcastStatus":{"key":"broadcastStatus","valueType":"string"},"uriBroadcastDetails":{"key":"uriBroadcastDetails","valueType":"string"},"broadcastStatusCategory":{"key":"broadcastStatusCategory","valueType":"string"},"broadcastStartDate":{"key":"broadcastStartDate","valueType":"string"},"deliveryResult":{"key":"deliveryResult","valueType":"string"},"deliveryResultDetails":{"key":"deliveryResultDetails","valueType":"string"}},"previewable":true}},"webhooks":[{"key":"broadcastStatusChange","dataPoints":{"broadcastId":{"key":"broadcastId","valueType":"number"},"broadcastStatus":{"key":"broadcastStatus","valueType":"string"}}}],"description":"Send text messages to your patients.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/c_thumb,w_200,g_face/v1740592441/text-em-all-logo_ljty2t.png","category":"Communication","title":"Text-em-all","author":{"authorType":"Awell"},"settings":{"customerKey":{"label":"Customer Key","key":"customerKey","obfuscated":true,"required":true,"description":"Your Text-Em-All customer key."},"customerSecret":{"label":"Customer Secret","key":"customerSecret","obfuscated":true,"required":true,"description":"Your Text-Em-All customer secret."},"token":{"label":"Token","key":"token","obfuscated":true,"required":true,"description":"Your Text-Em-All token."}}},{"key":"transform","htmlDocs":"<hr />\n<p>title: Transform</p>\n<h2 id=\"descriptiontransformisanextensionwithutilityfunctionsthatallowsyoutotransformorparsedatatoaformatofyourliking\">description: Transform is an extension with utility functions that allows you to transform or parse data to a format of your liking</h2>\n<h1 id=\"transform\">Transform</h1>\n<p>Transform is an extension on Awell's Marketplace with utility functions that allows you to transform data from one type to another. These functions are particularly useful e.g. when system A works with IDs that are numbers but system B works with IDs that are strings.</p>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"parsenumbertotext\">Parse number to text</h3>\n<p>Transform or parse a number to text (string).</p>\n<h3 id=\"parsetexttonumber\">Parse text to number</h3>\n<p>Transform or parse text (string) to a number. Will return NaN if the input data is not an actual number.</p>\n<h3 id=\"parsedatetounixtimestamp\">Parse date to unix timestamp</h3>\n<p>Transform or parse a date to a unix timestamp.</p>\n<h3 id=\"parseunixtimestamptounixdate\">Parse unix timestamp to unix date</h3>\n<p>Transform or parse a unix timestamp to a date.</p>\n<h2 id=\"parsenumbertotextwithdictionary\">Parse number to text with dictionary</h2>\n<p>Transform or parse a number to a string using a dictionary. Useful for when you have numeric data points but want to map them to strings based on a dictionary. When the action is called with a number that does not have a corresponding mapping in the provided dictionary, it simply returns the number itself as a string. </p>\n<p>The dictionary should be structured in JSON format with string keys mapping to string values. Each key represents a number (as a string), and each value is the corresponding text representation.</p>\n<p><strong>Example:</strong></p>\n<pre><code class=\"json language-json\">{\n  \"0\": \"Male\",\n  \"1\": \"Female\",\n  \"2\": \"Not known\",\n  // ... other number mappings ...\n}\n</code></pre>\n<h2 id=\"generatedynamicurl\">Generate dynamic URL</h2>\n<p>Generate a dynamic URL based on a URL template with placeholder and a data point value.</p>\n<pre><code>urlTemplate   https://your-url.com/{{placeholder}}\nvalue         hello-world\noutcome       https://your-url.com/hello-world\n</code></pre>\n<h2 id=\"feetandinchestoinches\">Feet and inches to inches</h2>\n<p>Converts a measurement in feet and inches to just inches.</p>\n<h2 id=\"combinedateandtime\">Combine date and time</h2>\n<p>Combines a reference date with a time string to create a complete datetime in UTC format. This action supports two input formats for the time string:</p>\n<ol>\n<li><strong>Simple time format (HH:mm:ss)</strong>: Combines the reference date with the specified time in ISO format (e.g., \"14:30:00\" not \"2PM\")</li>\n<li><strong>Full datetime with timezone</strong>: Accepts ISO8601 datetime strings with timezone offsets and converts them to UTC</li>\n</ol>\n<p><strong>Examples:</strong></p>\n<p><strong>Example 1 - Simple time combination:</strong></p>\n<pre><code>Reference date: 2025-09-13\nTime string: 17:45:00\nResult: 2025-09-13T17:45:00Z\n</code></pre>\n<p><strong>Example 2 - Reference date precedence with timezone-aware datetime:</strong></p>\n<pre><code>Reference date: 2025-09-01\nTime string: 2025-09-06T15:34:44+02:00\nResult: 2025-09-01T13:34:44Z (reference date takes precedence, time converted from +02:00 to UTC)\n</code></pre>\n<p><strong>Example 3 - Different timezone offset:</strong></p>\n<pre><code>Reference date: 2025-09-06\nTime string: 2025-09-06T10:30:00-05:00\nResult: 2025-09-06T15:30:00Z (converted from -05:00 to UTC)\n</code></pre>\n<p>This action is particularly useful for scheduling systems like Bland API where you need to combine dates and times from different sources, or when working with timezone-aware scheduling data that needs to be normalized to UTC.</p>","changelog":"<h1 id=\"transformchangelog\">Transform changelog</h1>\n<h2 id=\"june2024\">June 2024</h2>\n<ul>\n<li>Added \"Feet and inches to inches\" action</li>\n</ul>\n<h2 id=\"march2024\">March 2024</h2>\n<ul>\n<li>Added \"Generate dynamic URL\" action</li>\n</ul>\n<h2 id=\"january2024\">January 2024</h2>\n<ul>\n<li>Added \"Parse number to text with dictionary\" action</li>\n</ul>","actions":{"feetAndInchesToInches":{"key":"feetAndInchesToInches","title":"Feet and inches to inches","description":"Transform feet and inches to inches","category":"Data","fields":{"feet":{"id":"feet","label":"Feet","type":"numeric","required":true},"inches":{"id":"inches","label":"Inches","type":"numeric","required":true}},"dataPoints":{"inches":{"key":"inches","valueType":"number"}},"previewable":true},"generateDynamicUrl":{"key":"generateDynamicUrl","title":"Generate dynamic URL","description":"Generate a dynamic URL based on a URL template with a placeholder and a data point","category":"Data","fields":{"urlTemplate":{"id":"urlTemplate","label":"URL template","description":"The URL with the placeholder marked by double curly braces like (e.g. https://your-url.com/[placeholder]).","type":"string","required":true},"value":{"id":"value","label":"Value","description":"The actual value to replace the placeholder with. When left blank, we will use the id of orchestrated care flow.","type":"string","required":false}},"dataPoints":{"url":{"key":"url","valueType":"string"}},"previewable":false},"htmlToPdf":{"key":"htmlToPdf","title":"HTML to PDF","description":"Convert an HTML string to a PDF base64 string, to be uploaded or sent in a future action","category":"Data","fields":{"htmlString":{"id":"htmlString","label":"HTML string","description":"The HTML string to convert to a PDF.","type":"string","required":true},"options":{"id":"options","label":"Options","description":"The options for the PDF. See https://pptr.dev/api/puppeteer.pdfoptions","type":"json","required":false}},"dataPoints":{"base64Pdf":{"key":"base64Pdf","valueType":"string"}},"previewable":false},"parseDateToUnixTimestamp":{"key":"parseDateToUnixTimestamp","title":"Parse date to unix timestamp","description":"Transform or parse a date to a unix timestamp.","category":"Data","fields":{"date":{"id":"date","label":"Date","description":"The date you want to parse to a unix timestamp.","type":"date","required":true}},"dataPoints":{"unixTimestamp":{"key":"unixTimestamp","valueType":"string"}},"previewable":true},"parseNumberToText":{"key":"parseNumberToText","title":"Parse number to text","description":"Transform or parse number to text (string).","category":"Data","fields":{"number":{"id":"number","label":"Number","description":"The number you want to parse to a text (string).","type":"numeric","required":true}},"dataPoints":{"text":{"key":"text","valueType":"string"}},"previewable":true},"parseNumberToTextWithDictionary":{"key":"parseNumberToTextWithDictionary","title":"Parse number to text with dictionary","description":"Transform or parse a number to text based on a dictionary.","category":"Data","fields":{"number":{"id":"number","label":"Number","description":"The number you want to parse to a text (string)","type":"numeric","required":true},"dictionary":{"id":"dictionary","label":"Dictionary","description":"A JSON dictionary where each string key represents a number and maps to a corresponding string/text value","type":"json","required":true}},"dataPoints":{"text":{"key":"text","valueType":"string"}},"previewable":true},"parseStringToPhoneNumber":{"key":"parseStringToPhoneNumber","title":"Parse text to phone number","description":"Transform or parse text to a phone number.","category":"Data","fields":{"text":{"id":"text","label":"Text","description":"The text you want to parse to a phone number","type":"string","required":true},"countryCallingCode":{"id":"countryCallingCode","label":"Country calling code","description":"The country calling code you want to use for the phone number in case the phone number is not in E164 format. Enter the country calling code as a number.","type":"numeric","required":false}},"dataPoints":{"phoneNumber":{"key":"phoneNumber","valueType":"telephone"}},"previewable":true},"parseTextToNumber":{"key":"parseTextToNumber","title":"Parse text to number","description":"Transform or parse text (string) to a number. Will return NaN if the input data is not a number.","category":"Data","fields":{"text":{"id":"text","label":"Text","description":"The text you want to parse to a number. Will return NaN if the input is not an actual number.","type":"string","required":true}},"dataPoints":{"number":{"key":"number","valueType":"number"}},"previewable":true},"parseUnixTimestampToDate":{"key":"parseUnixTimestampToDate","title":"Parse unix timestamp to date","description":"Transform or parse a unix timestamp to a date.","category":"Data","fields":{"unixTimeStamp":{"id":"unixTimeStamp","label":"Unix timestamp","description":"The unix timestamp you want to parse to a date.","type":"numeric","required":true}},"dataPoints":{"date":{"key":"date","valueType":"date"}},"previewable":true},"serializeJson":{"key":"serializeJson","title":"Serialize JSON","description":"Serialize a JSON object","category":"Data","fields":{"json":{"id":"json","label":"JSON","description":"The data object you would like to stringify","type":"json","required":true}},"dataPoints":{"serializedJson":{"key":"serializedJson","valueType":"string"}},"previewable":true},"combineDateAndTime":{"key":"combineDateAndTime","title":"Combine date and time","description":"Combine a reference date with a time string to create an ISO8601 datetime in UTC.","category":"Data","fields":{"referenceDate":{"id":"referenceDate","label":"Reference date","description":"The date you want to use as the base for the combined datetime.","type":"date","required":true},"timeString":{"id":"timeString","label":"Time string","description":"The time in ISO format HH:mm:ss (e.g., \"14:30:00\" not \"2PM\") or full ISO8601 datetime with timezone (e.g., \"2025-09-06T15:34:44+02:00\").","type":"string","required":true}},"dataPoints":{"combinedDateTime":{"key":"combinedDateTime","valueType":"date"}},"previewable":true},"listToCommaSeparatedText":{"key":"listToCommaSeparatedText","title":"List to comma separated text","description":"Transform or parse list (string array) to a comma separated text.","category":"Data","fields":{"list":{"id":"list","label":"List","description":"The list you want to transform to a comma separated text.","type":"string_array","required":true}},"dataPoints":{"listText":{"key":"listText","valueType":"string"}},"previewable":false}},"webhooks":[],"description":"Transform is an extension on Awell's Marketplace with utility functions that allows you to transform data from one type to another.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1696493305/Awell%20Extensions/imgbin-computer-icons-data-migration-extract-transform-load-others-z1r9GD10ftiy2XXyhy7kWi413.jpg","title":"Transform","category":"Data","author":{"authorType":"Awell"},"settings":{}},{"key":"twilio","htmlDocs":"<hr />\n<p>title: Twilio</p>\n<h2 id=\"descriptiontwilioisacustomerengagementplatformusedbyhundredsofthousandsofbusinessesandmorethantenmilliondevelopersworldwidetobuilduniquepersonalizedexperiencesfortheircustomers\">description: Twilio is a customer engagement platform used by hundreds of thousands of businesses and more than ten million developers worldwide to build unique, personalized experiences for their customers.</h2>\n<h1 id=\"twilio\">Twilio</h1>\n<p>Twilio is a customer engagement platform used by hundreds of thousands of businesses and more than ten million developers worldwide to build unique, personalized experiences for their customers.</p>\n<p>They are known for democratizing channels like voice, text, chat, video, and email through APIs, making it easy for every organization to build meaningful interactions with customers on the channels they prefer.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will need:</p>\n<ol>\n<li>A Twilio API key or auth token which can be found in the Twilio console.</li>\n<li>Your account SID which can be found in the Twilio console.</li>\n<li>A phone number to send the message from. This must be a Twilio phone number that you own.</li>\n</ol>\n<h2 id=\"userconsent\">User consent</h2>\n<p>The extension has some built-in mechanisms to enforce compliance with <a href=\"https://www.twilio.com/en-us/legal/messaging-policy\">Twilio's messaging policy</a>.</p>\n<h3 id=\"optout\">Opt-out</h3>\n<p>By default, every text message will be appended with standard opt-out language (\"Reply STOP to unsubscribe.\"). You can specify custom opt-out language within the settings of the extension but make sure the opt-out keywords used are supported. STOP, UNSTOP, UNSUBSCRIBE or CANCEL are the default opt-out keywords supported but Twilio also supports defining custom stop keywords.</p>\n<p>If you don't want to append opt-out language to your text messages, set the \"Add opt-out language\" setting to \"Off\".</p>\n<p>For more information, please visit the Twilio docs.</p>\n<h3 id=\"sendingtextmessagestorecipientsthatoptedout\">Sending text messages to recipients that opted out</h3>\n<p>If you attempt to send a text message to a recipient who has opted out, the message will fail to be delivered and the action will be marked as failed. This is the default behavior of Twilio's API, which prevents sending texts to anyone who has chosen to opt out.</p>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"sendsms\">Send SMS</h3>\n<p>Send an SMS with Twilio to a recipient of your liking.</p>\n<h3 id=\"getmessages\">Get messages</h3>\n<p>Get a list of text messages matching the given criteria. Only the last 50 messages are returned.</p>\n<h2 id=\"sendsmsduringworkinghours\">Send SMS during working hours</h2>\n<p>This action allows for the scheduling of SMS messages to be sent within the \"daily operational hours\" of 9 AM to 5 PM. It ensures that text messages are dispatched at appropriate times during the day, avoiding early morning or late-night disturbances to recipients.</p>\n<p><strong>Here's how it works:</strong></p>\n<ul>\n<li>If the action is activate during business hours (9 AM to 5 PM), the SMS is sent immediately.</li>\n<li>If activated before 9 AM, the SMS is scheduled to be sent at 9 AM on the same day.</li>\n<li>If activated after 5 PM, the SMS is scheduled to be sent at 9 AM the following day.</li>\n</ul>\n<p>This setup ensures that all messages reach your respondents during reasonable daytime hours, enhancing the likelihood of a timely and considerate communication. It's important to mention that messages will still be dispatched over the weekend, but they will adhere to the \"business hours\" schedule of 9 AM to 5 PM.</p>\n<p>Note that scheduling messages with Twilio is only possible if you send text messages using a MessagingServiceSid.</p>","changelog":"<h1 id=\"twiliochangelog\">Twilio changelog</h1>\n<h2 id=\"v220240222\">v2 2024-02-22</h2>\n<ol>\n<li>Add capability to search for messages using all the allowed filters provided by Twilio API. Check here: https://www.twilio.com/docs/messaging/api/message-resource#read-multiple-message-resources</li>\n</ol>\n<h2 id=\"v220230623\">v2 2023-06-23</h2>\n<p>Full description: https://github.com/awell-health/awell-extensions/issues/157</p>\n<ol>\n<li>\"Send SMS\" action</li>\n<li>Change label from \"Send SMS\" to \"Send SMS (with from number)\"</li>\n<li>Throw error when \"From\" number in both settings and in fields is not provided</li>\n<li>Add new action \"Send SMS (with Messaging Service)\"</li>\n</ol>\n<h2 id=\"v2\">v2</h2>\n<p>Compared to v1 (pre-beta release), the extension only has one custom action \"Send SMS\" instead of two. The Custom Action allows for:</p>\n<ol>\n<li>Sending a text message to a recipient (phone number) stored in a data point, including patient profile data points.</li>\n<li>Sending a text message to a fixed recipient (phone number).</li>\n</ol>","actions":{"sendSms":{"key":"sendSms","title":"Send SMS (with from number)","description":"Send a text message from a given telephone number to a recipient of your choice.","category":"Communication","fields":{"from":{"label":"\"From\" number","id":"from","type":"string","stringType":"phone","required":false,"description":"The phone number that will send the text messages, it must be a Twilio phone number that you own. When left blank, the \"From\" number from the extension settings will be used."},"recipient":{"id":"recipient","label":"\"To\" phone number","type":"string","stringType":"phone","description":"The phone number you would like to send the text message to.","required":true},"message":{"id":"message","label":"Message","description":"The message you would like to send.","type":"text","required":true}},"dataPoints":{"messageSid":{"key":"messageSid","valueType":"string"}},"previewable":true},"sendSmsWithMessagingService":{"key":"sendSmsWithMessagingService","title":"Send SMS (with Messaging Service)","description":"Send a text message from a Messaging Service to a recipient of your choice.","category":"Communication","fields":{"messagingServiceSid":{"label":"Messaging Service SID","id":"messagingServiceSid","type":"string","required":false,"description":"The SID of the Messaging Service you want to associate with the Message. If left blank, the SID specified in the settings will be used."},"recipient":{"id":"recipient","label":"\"To\" phone number","type":"string","stringType":"phone","description":"The phone number you would like to send the text message to.","required":true},"message":{"id":"message","label":"Message","description":"The message you would like to send.","type":"text","required":true}},"dataPoints":{"messageSid":{"key":"messageSid","valueType":"string"}},"previewable":true},"getMessages":{"key":"getMessages","title":"Get messages","description":"\n    Get a list of text messages matching the given criteria.\n    You can also filter the Messages by providing one of the allowed filters.\n    ","category":"Communication","fields":{"from":{"label":"\"From\" number","id":"from","type":"string","stringType":"phone","required":false,"description":"Search for text messages sent from a specific phone number"},"recipient":{"id":"recipient","label":"\"To\" number","type":"string","stringType":"phone","description":"Search for text messages sent to a specific phone number","required":false},"page_size":{"id":"page_size","label":"Page Size","description":"The number of results per page. Minimum is 1 and maximum is 1000.","type":"numeric","required":false},"date_sent_after":{"id":"date_sent_after","label":"Sent date after than","description":"Search for messages sent after a given date","type":"date","required":false},"date_sent_before":{"id":"date_sent_before","label":"Sent date before than","description":"Search for messages sent before a given date","type":"date","required":false},"date_sent":{"id":"date_sent","label":"Sent date","description":"Search for messages sent on a given date","type":"date","required":false}},"dataPoints":{"numberOfMessages":{"key":"numberOfMessages","valueType":"number"},"allMessages":{"key":"allMessages","valueType":"strings_array"},"latestMessage":{"key":"latestMessage","valueType":"string"}},"previewable":true},"sendSmsDuringBusinessHours":{"key":"sendSmsDuringBusinessHours","title":"Send SMS during business hours","description":"Send a text message during business hours from a given telephone number to a recipient of your choice.","category":"Communication","fields":{"messagingServiceSid":{"label":"Messaging Service SID","id":"messagingServiceSid","type":"string","required":false,"description":"The SID of the Messaging Service you want to associate with the Message. If left blank, the SID specified in the settings will be used."},"recipient":{"id":"recipient","label":"\"To\" phone number","type":"string","stringType":"phone","description":"The phone number you would like to send the text message to.","required":true},"message":{"id":"message","label":"Message","description":"The message you would like to send.","type":"text","required":true},"timeZone":{"id":"timeZone","label":"Timezone","description":"Specify the IANA time zone to determine if the current time (in UTC) falls within business hours in your timezone. The default time zone used for this check is UTC.","type":"text","required":false}},"dataPoints":{"messageSid":{"key":"messageSid","valueType":"string"},"scheduled":{"key":"scheduled","valueType":"boolean"},"sendAt":{"key":"sendAt","valueType":"date"}},"previewable":true},"createFlowExecution":{"key":"createFlowExecution","title":"Start a new execution of a pre-existing flow","description":"Send a text message from a given telephone number to a recipient of your choice.","category":"Communication","fields":{"from":{"label":"\"From\" number","id":"from","type":"string","stringType":"phone","required":false,"description":"The phone number that will send the text messages, it must be a Twilio phone number that you own. When left blank, the \"From\" number from the extension settings will be used."},"recipient":{"id":"recipient","label":"\"To\" phone number","type":"string","stringType":"phone","description":"The phone number you would like to send the text message to.","required":true},"flow_id":{"id":"flow_id","label":"Flow ID","type":"string","description":"Flow ID (FWXXXXX...)","required":true},"parameters":{"id":"parameters","label":"Parameters","description":"Context to be passed into the flow (as an flat object)","type":"json","required":true}},"dataPoints":{"executionId":{"key":"executionId","valueType":"string"}},"previewable":true}},"webhooks":[],"description":"Add robust messaging capabilities to your care flow.","icon_url":"https://www.vectorlogo.zone/logos/twilio/twilio-icon.svg","title":"Twilio","category":"Communication","author":{"authorType":"Awell"},"settings":{"accountSid":{"label":"Account SID","key":"accountSid","obfuscated":true,"required":true,"description":"Find your Account SID at twilio.com/console."},"authToken":{"label":"Auth token","key":"authToken","obfuscated":true,"required":true,"description":"Find your Auth Token at twilio.com/console."},"clientId":{"label":"Client ID","key":"clientId","obfuscated":true,"required":false,"description":"Find your Client ID at twilio.com/console."},"region":{"label":"Region","key":"region","obfuscated":false,"required":false,"description":"Possible options: IE1, AU1, US1 - Default is IE1."},"fromNumber":{"label":"\"From\" number","key":"fromNumber","obfuscated":false,"required":false,"description":"A Twilio phone number that you own in E.164 format which will be used to send text messages. If you are using a Messaging Service you can leave this field empty."},"messagingServiceSid":{"label":"Messaging Service SID","key":"messagingServiceSid","obfuscated":false,"required":false,"description":"The SID of the Messaging Service you want to associate with the Message. If you are not using a Messaging Service but a \"from\" number, then you can leave this field empty."},"addOptOutLanguage":{"label":"Add opt-out language","key":"addOptOutLanguage","obfuscated":false,"required":false,"description":"On by default, set to \"Off\" if you don't want to add opt-out language to your text messages."},"optOutLanguage":{"label":"Opt-out language","key":"optOutLanguage","obfuscated":false,"required":false,"description":"The sentence that is appended at the end of your text messages that informs recipients of how they can opt out. If not specified, standard opt-out language is appended to your messages."},"language":{"label":"Language","key":"language","obfuscated":false,"required":false,"description":"The language you are sending text messages in. Possible options: fr, en (default), nl."}}},{"key":"westFax","htmlDocs":"<hr />\n<p>title: WestFax</p>\n<h2 id=\"descriptionwestfaxisaleadingproviderofhipaacompliantcloudfaxfaxtoemailprinttofax\">description: WestFax is a leading provider of HIPAA Compliant Cloud Fax / Fax to Email, Print to Fax</h2>\n<h1 id=\"westfax\">WestFax</h1>\n<p><a href=\"https://westfax.com/\">WestFax</a> is a cloud-based faxing service that offers a variety of features, including:</p>\n<ul>\n<li>Secure faxing: WestFax uses end-to-end encryption to protect your documents from unauthorized access.</li>\n<li>HIPAA compliance: WestFax is HIPAA compliant, so you can be sure that your medical records are safe.</li>\n<li>Integration with other applications: WestFax can be integrated with your existing email, CRM, and other applications.</li>\n<li>Mobile app: You can send and receive faxes from your mobile device with the WestFax mobile app.</li>\n<li>Paperless faxing: WestFax can store your faxes in the cloud, so you can access them from anywhere.</li>\n</ul>\n<h2 id=\"westfaxxawell\">WestFax x Awell</h2>\n<p>This extension allows you to let a stakeholder (eg: a patient) send a fax as part of a care flow.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, <strong>you will need to provide a WestFax Username and Password</strong>. You will need as well to provide the ProductId when setting up the action - check how <a href=\"https://westfax.com/how-to-get-productid/\">here</a>.</p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"getfaxdocument\">Get Fax document</h3>\n<p>Retrieve a fax document using a fax ID, sometimes also referred to as a job ID.</p>\n<h2 id=\"webhooks\">Webhooks</h2>\n<h3 id=\"faxreceived\">Fax received</h3>\n<p>Trigger a care flow when a fax is received. Currently only works together with https://github.com/awell-health/westfax-webhook-handler</p>","changelog":"<h1 id=\"westfaxchangelog\">WestFax changelog</h1>\n<h2 id=\"february2024\">February 2024</h2>\n<ul>\n<li>Initial action to send an fax to an email</li>\n</ul>","actions":{"sendFax":{"key":"sendFax","title":"Send fax","description":"Send fax with WestFax.","category":"Communication","fields":{"productId":{"id":"productId","label":"Product Id","description":"E.g. 12345678-1234-1234-1234-123456789abc","type":"string","required":true},"feedbackEmail":{"id":"feedbackEmail","label":"Feedback Email","description":"Send a report to this address when the fax is sent","type":"string","required":false},"number":{"id":"number","label":"Number","description":"Destination fax number","type":"string","required":true},"addFaceSheet":{"id":"addFaceSheet","label":"Add face sheet","description":"Add cover sheet that precedes the actual message or document","type":"boolean","required":false},"content":{"id":"content","label":"Fax content","description":"Content of the fax","type":"html","required":false}},"dataPoints":{"faxId":{"key":"faxId","valueType":"string"}},"previewable":true},"getFaxDocument":{"key":"getFaxDocument","title":"Get fax document","description":"Get fax document with WestFax.","category":"Communication","fields":{"faxId":{"id":"faxId","label":"Fax Id","description":"Sometimes also referred to as the job ID","type":"string","required":true}},"dataPoints":{"direction":{"key":"direction","valueType":"string"},"date":{"key":"date","valueType":"date"},"status":{"key":"status","valueType":"string"},"format":{"key":"format","valueType":"string"},"pageCount":{"key":"pageCount","valueType":"number"}},"previewable":true},"getFaxDocumentWithOCR":{"key":"getFaxDocumentWithOCR","title":"Get fax document with OCR","description":"Get fax document with WestFax and extract structured data with OCR","category":"Document Management","fields":{"faxId":{"id":"faxId","label":"Fax Id","description":"Sometimes also referred to as the job ID","type":"string","required":true},"ocrProvider":{"id":"ocrProvider","label":"OCR Provider","description":"The provider or service used for OCR","type":"string","required":true,"options":{"dropdownOptions":[{"label":"Awell (Landing.ai)","value":"awell-landing-ai"}]}},"ocrProviderApiKey":{"id":"ocrProviderApiKey","label":"OCR Provider API Key","description":"We advise using a obfuscated constant","type":"string","required":true},"fieldsSchema":{"id":"fieldsSchema","label":"Fields schema","description":"Defines the structure of the fields to extract from the document. Providing a schema is optional but strongly recommended, as it significantly improves the accuracy of the extracted data.","type":"json","required":false}},"dataPoints":{"markdown":{"key":"markdown","valueType":"string"},"chunks":{"key":"chunks","valueType":"json"},"extractedDataBasedOnSchema":{"key":"extractedDataBasedOnSchema","valueType":"json"},"extractedMetadata":{"key":"extractedMetadata","valueType":"json"},"direction":{"key":"direction","valueType":"string"},"date":{"key":"date","valueType":"date"},"status":{"key":"status","valueType":"string"},"format":{"key":"format","valueType":"string"},"pageCount":{"key":"pageCount","valueType":"number"}},"previewable":false}},"webhooks":[{"key":"faxReceived","dataPoints":{"jobId":{"key":"jobId","valueType":"string"},"prod":{"key":"prod","valueType":"string"},"dir":{"key":"dir","valueType":"string"}}}],"description":"Send faxes securely and in compliance with HIPAA regulations using WestFax.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1707739199/Awell%20Extensions/Screenshot_2024-02-12_at_12.59.08.png","category":"Communication","title":"WestFax","author":{"authorType":"Awell"},"settings":{"username":{"key":"username","label":"Username","obfuscated":false,"required":true,"description":"Your WestFax username"},"password":{"key":"password","label":"Password","obfuscated":true,"required":true,"description":"Your WestFax password"},"productId":{"key":"productId","label":"Product ID","obfuscated":false,"required":false,"description":"Your WestFax product ID. Required for some functionality in the extension."},"faceSheetUrl":{"key":"faceSheetUrl","label":"URL to facesheet (PDF)","obfuscated":true,"required":false,"description":"An optional URL for a face sheet document (in PDF format) which will be attached at the beginning of your actual message or document for faxes. This face sheet will only be included if it has been enabled at the action level."}}},{"key":"workramp","htmlDocs":"<hr />\n<p>title: Workramp</p>\n<h2 id=\"descriptionworkrampistheallinonelmsplatformforemployeescustomersandpartners\">description: WorkRamp is the all-in-one LMS platform for employees, customers, and partners. </h2>\n<h1 id=\"workramp\">Workramp</h1>\n<p>Workramp is a learning management platform helping to upskill employees and educate partners and customers.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>There are no extension settings (e.g. API keys) to set. Simply enable the extension and then utilize the EventPayload webhook to subscribe to events.</p>\n<h2 id=\"webhooks\">Webhooks</h2>\n<h3 id=\"eventpayload\">EventPayload</h3>\n<p>Listens to an event and starts a care flow, using the <code>user.id</code> field as a unique patient identifier.</p>\n<p>To learn more about webhooks, visit <a href=\"https://developers.workramp.com/reference/introduction-to-webhooks\">their developer site</a>.</p>","changelog":"<h1 id=\"workrampchangelog\">Workramp changelog</h1>\n<h2 id=\"20240828\">2024-08-28</h2>\n<p>Created the extension.</p>","actions":{},"webhooks":[{"key":"eventWebhook","dataPoints":{"eventType":{"key":"eventType","valueType":"string"}}}],"description":"An LMS platform. The system identifier used is https://www.workramp.com/","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1724917358/Awell%20Extensions/workramp_logo.jpg","title":"Workramp","category":"Content & Files","author":{"authorType":"Awell"},"settings":{}},{"key":"zendeskSell","htmlDocs":"<hr />\n<p>title: Zendesk Sell</p>\n<h2 id=\"descriptionzendesksellisacustomerserviceandsupportplatformthatprovidesasuiteoftoolsandsoftwareforbusinessestomanagetheircustomerinteractions\">description: Zendesk Sell is a customer service and support platform that provides a suite of tools and software for businesses to manage their customer interactions.</h2>\n<h1 id=\"zendesksell\">Zendesk Sell</h1>\n<p>Zendesk Sell is a customer service and support platform that provides a suite of tools and software for businesses to manage their customer interactions. It offers a range of customer service solutions, including help desk ticketing systems, customer support and engagement, and self-service options. Zendesk is designed to help companies streamline their customer support processes, improve communication with their customers, and resolve issues more efficiently.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>In order to set up this extension, you will to authenticate with the Sell API and need an API token. You can visit Zendesk Sales CRM dashboard and go to <strong>Settings > Integration > OAuth</strong> to enable and create an API token. Read more about how to get an access token for the Sell API <a href=\"https://developer.zendesk.com/documentation/sales-crm/first-call/\">here</a>.</p>\n<h2 id=\"customactions\">Custom Actions</h2>\n<h3 id=\"createtask\">Create task</h3>\n<p>Creates a new task. You can create either a floating task or create a related task and associate it with one of the resource types: Leads, Contacts, Deals.</p>\n<h3 id=\"completetask\">Complete task</h3>\n<p>Marks a task as completed.</p>","changelog":"<h1 id=\"zendeskchangelog\">Zendesk changelog</h1>","actions":{"createTask":{"key":"createTask","title":"Create task","description":"Creates a new task in Zendesk","category":"Customer Support","fields":{"content":{"label":"Content","id":"content","type":"string","stringType":"text","required":true,"description":"Content of the task."},"dueDate":{"label":"Due date","id":"dueDate","type":"date","required":false,"description":""},"ownerId":{"label":"Owner ID","id":"ownerId","type":"numeric","required":false,"description":"Unique identifier of the user the task is assigned to, defaults to the user who created the task"},"resourceType":{"label":"Resource type","id":"resourceType","type":"string","required":false,"description":"Name of the resource type the task is attached to. Possible values: \"lead\", \"contact\", \"deal\"."},"resourceId":{"label":"Resource ID","id":"resourceId","type":"numeric","required":false,"description":"Unique identifier of the resource the task is attached to."},"completed":{"label":"Completed?","id":"completed","type":"boolean","required":false,"description":"Indicator of whether the task is completed or not."},"remindAt":{"label":"Remind at","id":"remindAt","type":"date","required":false,"description":"The date at which Zendesk should send you a reminder about the task."}},"dataPoints":{"taskId":{"key":"taskId","valueType":"number"}},"previewable":true},"completeTask":{"key":"completeTask","title":"Complete a task","description":"Completes a task in Zendesk","category":"Customer Support","fields":{"taskId":{"label":"Task ID","id":"taskId","type":"numeric","required":true,"description":"The ID of the task to complete in Zendesk"}},"previewable":true}},"webhooks":[],"description":"Zendesk Sell is a customer service and support platform that provides a suite of tools and software for businesses to manage their customer interactions.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1697013804/Awell%20Extensions/ezgif.com-webp-to-png.png","title":"Zendesk Sell","category":"Customer Support","author":{"authorType":"Awell"},"settings":{"salesApiToken":{"label":"Sales API token","key":"salesApiToken","obfuscated":true,"required":true,"description":"Visit Zendesk Sales CRM dashboard and go to Settings > Integration > OAuth to enable and create an API token"}}},{"key":"zendesk","htmlDocs":"<h1 id=\"zendesksupport\">Zendesk Support</h1>\n<p>Zendesk Support is a customer service platform that provides ticketing, knowledge base, and customer communication tools.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>To set up this extension, you will need to provide the following:</p>\n<ol>\n<li><strong>Zendesk Subdomain:</strong> your Zendesk subdomain (e.g., \"company\" for company.zendesk.com)</li>\n<li><strong>User Email:</strong> your Zendesk user email address</li>\n<li><strong>API Token:</strong> your Zendesk API token</li>\n</ol>\n<p>You can generate an API token in your Zendesk admin settings under API &gt; Zendesk API.</p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"createticket\">Create Ticket</h3>\n<p>Creates a new support ticket in Zendesk with the specified details.</p>\n<p><strong>Required fields:</strong></p>\n<ul>\n<li>Subject: The subject line of the ticket</li>\n<li>Comment: The initial comment/description for the ticket</li>\n</ul>\n<p><strong>Optional fields:</strong></p>\n<ul>\n<li>Group ID: The ID of the group to assign the ticket to</li>\n<li>Priority: The priority level (urgent, high, normal, or low)</li>\n<li>External ID: An external identifier to link this ticket to your system</li>\n<li>Tag: A tag to add to the ticket</li>\n</ul>\n<p><strong>Returns:</strong></p>\n<ul>\n<li>Ticket ID: The unique identifier of the created ticket</li>\n<li>Ticket URL: Direct link to the ticket in Zendesk agent interface</li>\n</ul>\n<h3 id=\"deleteticket\">Delete Ticket</h3>\n<p>Deletes a support ticket in Zendesk. This action permanently removes the ticket from your Zendesk instance.</p>\n<p><strong>Required fields:</strong></p>\n<ul>\n<li>Ticket ID: The unique identifier of the ticket to delete</li>\n</ul>\n<p><strong>Note:</strong> This action cannot be undone. Deleted tickets are permanently removed from Zendesk.</p>","changelog":"<h1 id=\"changelog\">Changelog</h1>\n<p>All notable changes to this project will be documented in this file.</p>\n<h2 id=\"10020250110\">[1.0.0] - 2025-01-10</h2>\n<h3 id=\"added\">Added</h3>\n<ul>\n<li>Initial release of Zendesk Support extension</li>\n<li>Create Ticket action with OAuth authentication</li>\n<li>Support for all major ticket fields: subject, comment, group_id, priority, external_id, tags</li>\n</ul>","actions":{"createTicket":{"key":"createTicket","title":"Create ticket","description":"Creates a new support ticket in Zendesk","category":"Customer Support","fields":{"subject":{"label":"Subject","id":"subject","type":"string","stringType":"text","required":true,"description":"The subject line of the ticket."},"comment":{"label":"Comment","id":"comment","type":"string","stringType":"text","required":true,"description":"The initial comment/description for the ticket."},"group_id":{"label":"Group ID","id":"group_id","type":"numeric","required":false,"description":"The ID of the group to assign the ticket to."},"priority":{"label":"Priority","id":"priority","type":"string","required":false,"description":"The priority level: urgent, high, normal, or low.","options":{"dropdownOptions":[{"label":"urgent","value":"urgent"},{"label":"high","value":"high"},{"label":"normal","value":"normal"},{"label":"low","value":"low"}]}},"external_id":{"label":"External ID","id":"external_id","type":"string","required":false,"description":"An external identifier to link this ticket to your system."},"tag":{"label":"Tag","id":"tag","type":"string","required":false,"description":"A tag to add to the ticket."}},"dataPoints":{"ticketId":{"key":"ticketId","valueType":"number"},"ticketUrl":{"key":"ticketUrl","valueType":"string"}},"previewable":true},"deleteTicket":{"key":"deleteTicket","title":"Delete ticket","description":"Deletes a support ticket in Zendesk","category":"Customer Support","fields":{"ticketId":{"label":"Ticket ID","id":"ticketId","type":"numeric","required":true,"description":"The ID of the ticket to delete."}},"previewable":true},"updateTicket":{"key":"updateTicket","title":"Update ticket","description":"Updates an existing support ticket in Zendesk","category":"Customer Support","fields":{"ticket_id":{"label":"Ticket ID","id":"ticket_id","type":"numeric","required":true,"description":"The ID of the ticket to update."},"comment":{"label":"Comment","id":"comment","type":"string","stringType":"text","required":false,"description":"Add a comment to the ticket."},"priority":{"label":"Priority","id":"priority","type":"string","required":false,"description":"The priority level: urgent, high, normal, or low.","options":{"dropdownOptions":[{"label":"urgent","value":"urgent"},{"label":"high","value":"high"},{"label":"normal","value":"normal"},{"label":"low","value":"low"}]}},"status":{"label":"Status","id":"status","type":"string","required":false,"description":"The status: new, open, pending, hold, solved, or closed.","options":{"dropdownOptions":[{"label":"new","value":"new"},{"label":"open","value":"open"},{"label":"pending","value":"pending"},{"label":"hold","value":"hold"},{"label":"solved","value":"solved"},{"label":"closed","value":"closed"}]}}},"previewable":true}},"webhooks":[],"description":"Zendesk Support is a customer service platform that provides ticketing, knowledge base, and customer communication tools.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1697013804/Awell%20Extensions/ezgif.com-webp-to-png.png","title":"Zendesk Support","category":"Customer Support","author":{"authorType":"Awell"},"settings":{"subdomain":{"label":"Zendesk Subdomain","key":"subdomain","obfuscated":false,"required":true,"description":"Your Zendesk subdomain (e.g., \"company\" for company.zendesk.com)"},"user_email":{"label":"User Email","key":"user_email","obfuscated":false,"required":true,"description":"Your Zendesk user email address"},"api_token":{"label":"API Token","key":"api_token","obfuscated":true,"required":true,"description":"Your Zendesk API token"}}},{"key":"zoom","htmlDocs":"<hr />\n<p>title: Zoom</p>\n<h2 id=\"descriptionzoomisacommunicationsplatformthatallowsuserstoconnectwithvideoaudiophoneandchat\">description: Zoom is a communications platform that allows users to connect with video, audio, phone, and chat.</h2>\n<h1 id=\"zoom\">Zoom</h1>\n<p>Zoom is a communications platform that allows users to connect with video, audio, phone, and chat.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<p>To set up this extension, you will need to provide the following:</p>\n<ol>\n<li><strong>Account ID:</strong> your Zoom account ID, found on the Server to Server app build page.</li>\n<li><strong>Client ID:</strong> the client ID of the OAuth app you created in Zoom</li>\n<li><strong>Client secret:</strong> the client secret of the OAuth app you created in Zoom</li>\n</ol>\n<p>You'll have to set up a <a href=\"https://developers.zoom.us/docs/internal-apps/create/\">Server-to-Server OAuth app</a> in Zoom to provision a client ID and secret.</p>\n<h2 id=\"actions\">Actions</h2>\n<h3 id=\"sendsms\">Send SMS</h3>\n<p>Send an SMS to a recipient.</p>\n<p>Ensure your Server-to-Server OAuth app has the following scopes set:</p>\n<ul>\n<li>Scopes: <code>contact_center_sms:write:admin</code></li>\n<li>Granular Scopes: <code>contact_center:write:sms:admin</code></li>\n</ul>\n<h4 id=\"resultcodes\">Result codes</h4>\n<p>On completion, the action returns a <code>code</code> data point indicating the outcome:</p>\n<ul>\n<li><strong>SUCCESS</strong>: SMS was sent successfully.</li>\n<li><strong>INVALID_CONSUMER_NUMBER_FORMAT</strong>: Invalid consumer number; E.164 format is required.</li>\n<li><strong>CONTACT_CENTER_NUMBER_USED</strong>: Zoom Contact Center numbers cannot be used as consumer numbers.</li>\n<li><strong>CONSUMER_NOT_OPTED_IN</strong>: The consumer number you have messaged has not opted in.</li>\n<li><strong>CONSUMER_OPTED_OUT</strong>: The consumer number has opted out of receiving SMS from this Zoom Contact Center number.</li>\n<li><strong>CONSUMER_BLOCK_LISTED</strong>: The consumer number is block-listed by your Zoom Contact Center administrator.</li>\n<li><strong>INTERNATIONAL_SMS_NOT_SUPPORTED</strong>: International messaging is not supported on this account.</li>\n<li><strong>BODY_TOO_LONG</strong>: Validation error — body exceeds 500 characters.</li>\n</ul>","changelog":"<h1 id=\"changelog\">CHANGELOG</h1>","actions":{"sendSms":{"key":"sendSms","title":"Send SMS","description":"Send an SMS","category":"Communication","fields":{"contactCenterNumber":{"id":"contactCenterNumber","label":"Contact center number","description":"This must be an SMS capable phone number allocated to Zoom Contact Center within your account.","type":"string","stringType":"phone","required":true},"to":{"id":"to","label":"To","description":"The phone number of the person receiving the SMS.","type":"string","stringType":"phone","required":true},"body":{"id":"body","label":"Body","description":"The content that needs to be sent as an SMS. Maximum length is 500 characters.","type":"text","required":true}},"previewable":true,"dataPoints":{"messageId":{"key":"messageId","valueType":"string"},"success":{"key":"success","valueType":"boolean"},"code":{"key":"code","valueType":"string"}}}},"webhooks":[],"description":"Zoom is a communications platform that allows users to connect with video, audio, phone, and chat.","icon_url":"https://res.cloudinary.com/da7x4rzl4/image/upload/v1746027815/Awell%20Extensions/zoom.svg","title":"Zoom","category":"Communication","author":{"authorType":"Awell"},"settings":{"accountId":{"key":"accountId","label":"Account ID","obfuscated":false,"description":"The account ID of your Zoom account.","required":true},"clientId":{"key":"clientId","label":"Client ID","obfuscated":false,"description":"The client ID issued by the Server-to-Server OAuth app.","required":true},"clientSecret":{"key":"clientSecret","label":"Client Secret","obfuscated":true,"description":"The client secret issued by the Server-to-Server OAuth app.","required":true}}},{"key":"srfax","htmlDocs":"<h1 id=\"srfax\">SRFax</h1>\n<p>Retrieve fax documents from SRFax and extract text via LandingAI OCR.</p>\n<h2 id=\"extensionsettings\">Extension settings</h2>\n<ul>\n<li>Account ID (required)</li>\n<li>Password (required)</li>\n<li>Base URL (optional, default: https://www.srfax.com/SRF_SecWebSvc.php)</li>\n</ul>\n<h2 id=\"actiongetfaxdocumentwithocr\">Action: Get fax document with OCR</h2>\n<ul>\n<li>Inputs</li>\n<li>faxId (string, required): SRFax FaxDetailsID (number after the <code>|</code>) or full FileName</li>\n<li>ocrProvider: <code>awell-landing-ai</code></li>\n<li>ocrProviderApiKey (string, required)</li>\n<li>fieldsSchema (JSON, optional)</li>\n<li>Outputs</li>\n<li>markdown (string)</li>\n<li>chunks (json)</li>\n<li>extractedDataBasedOnSchema (json)</li>\n<li>extractedMetadata (json)</li>\n<li>direction (string)</li>\n<li>date (date)</li>\n<li>status (string)</li>\n<li>format (string)</li>\n<li>pageCount (number)</li>\n</ul>","changelog":"<h1 id=\"changelog\">Changelog</h1>\n<p>All notable changes to the SRFax extension will be documented in this file.</p>\n<h2 id=\"100\">1.0.0</h2>\n<ul>\n<li>Initial release: getFaxDocumentWithOCR action using SRFax Retrieve_Fax and LandingAI OCR (base64 mode).</li>\n</ul>","actions":{"getFaxDocumentWithOCR":{"key":"getFaxDocumentWithOCR","title":"Get fax document with OCR","description":"Get fax document with SRFax and extract structured data with OCR","category":"Document Management","fields":{"faxId":{"id":"faxId","label":"Fax Id","description":"SRFax FaxDetailsID (the number after the \"|\" in FileName) or full FileName","type":"string","required":true},"ocrProvider":{"id":"ocrProvider","label":"OCR Provider","description":"The provider or service used for OCR","type":"string","required":true,"options":{"dropdownOptions":[{"label":"Awell (Landing.ai)","value":"awell-landing-ai"}]}},"ocrProviderApiKey":{"id":"ocrProviderApiKey","label":"OCR Provider API Key","description":"We advise using a obfuscated constant","type":"string","required":true},"fieldsSchema":{"id":"fieldsSchema","label":"Fields schema","description":"Defines the structure of the fields to extract from the document. Providing a schema is optional but strongly recommended, as it significantly improves the accuracy of the extracted data.","type":"json","required":false}},"dataPoints":{"markdown":{"key":"markdown","valueType":"string"},"chunks":{"key":"chunks","valueType":"json"},"extractedDataBasedOnSchema":{"key":"extractedDataBasedOnSchema","valueType":"json"},"extractedMetadata":{"key":"extractedMetadata","valueType":"json"},"direction":{"key":"direction","valueType":"string"},"date":{"key":"date","valueType":"date"},"status":{"key":"status","valueType":"string"},"format":{"key":"format","valueType":"string"},"pageCount":{"key":"pageCount","valueType":"number"}},"previewable":true}},"webhooks":[],"description":"Retrieve faxes from SRFax and extract text using LandingAI OCR.","icon_url":"https://res.cloudinary.com/dbhuqasw0/image/upload/v1754994599/1545794_648668791846553_275530089_n-300x300_gq9m32.jpg","title":"SRFax","category":"Document Management","author":{"authorType":"Awell"},"settings":{"accountId":{"key":"accountId","label":"Account ID","obfuscated":false,"required":true},"password":{"key":"password","label":"Password","obfuscated":true,"required":true},"baseUrl":{"key":"baseUrl","label":"Base URL","obfuscated":false,"required":false}}}]