{"id":2436,"date":"2021-09-02T12:54:55","date_gmt":"2021-09-02T17:54:55","guid":{"rendered":"https:\/\/www.teamdesk.net\/blog\/?p=2436"},"modified":"2021-09-28T03:49:41","modified_gmt":"2021-09-28T08:49:41","slug":"iterators-for-call-url-actions-and-webhooks","status":"publish","type":"post","link":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/","title":{"rendered":"Iterators for Call URL actions and Webhooks"},"content":{"rendered":"\n<p>As you know, Call URL actions and Webhooks serve to implement integrations with third-party systems in <a href=\"https:\/\/www.teamdesk.net\">TeamDesk<\/a>. Both are extremely effective for data exchange and both have one limitation &#8211; inability to easily process multiple data items. This is what we have addressed today with iterators.<\/p>\n\n\n\n<p>Let&#8217;s take <a href=\"https:\/\/www.xero.com\" target=\"_blank\" rel=\"noreferrer noopener\">Xero<\/a> accounting software as an example.<\/p>\n\n\n\n<p>When something changes in Xero it sends the event to your webhook, listing what was changed, type of change and identifier of the changed resource. Typical JSON payload it sends looks like this: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"events\": &#91;\n    {\n      \"resourceUrl\": \"https:\/\/api.xero.com\/api.xro\/2.0\/Invoices\/01234567-0123-4567-8901-012345678901\",\n      \"resourceId\": \"01234567-0123-4567-8901-012345678901\",\n      \"eventDateUtc\": \"2021-01-01T00:00:00.000\",\n      \"eventType\": \"UPDATE\",\n      \"eventCategory\": \"INVOICE\",\n      \"tenantId\": \"01234567-0123-4567-8901-012345678901\",\n      \"tenantType\": \"ORGANISATION\"\n    }\n  ],\n  \"firstEventSequence\": 1,\n  \"lastEventSequence\": 1,\n  \"entropy\": \"ABCDEFGHIJKLMNOPQRST\"\n}<\/code><\/pre>\n\n\n\n<p>In your webhook you should normally have:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>A column to store either resource  ID or URL<\/li><li>An assignment to that column, like this: <code>Response(\"$.events[0].resourceUrl\")<\/code><\/li><li>A change trigger that works when record is created <\/li><li>And a Call URL action that gets full resource information based on stored resource ID\/URL. <\/li><\/ul>\n\n\n\n<p>But you might have noticed &#8220;events&#8221; field is decorated as array (or list if you prefer). For the most part you&#8217;ll have the only item in the list, but depending on change rate or Xero load it may pack multiple events together. And Xero is not unique, there are many other APIs that pack events together to reduce server load.<\/p>\n\n\n\n<p>With multiple events packed together you&#8217;ll get the sort of:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"events\": &#91;\n    {\n      \"resourceUrl\": \"https:\/\/api.xero.com\/api.xro\/2.0\/Invoices\/01234567-0123-4567-8901-012345678901\",\n      \"resourceId\": \"01234567-0123-4567-8901-012345678901\",\n      \"eventDateUtc\": \"2021-01-01T00:00:00.000\",\n      \"eventType\": \"UPDATE\",\n      \"eventCategory\": \"INVOICE\",\n      \"tenantId\": \"01234567-0123-4567-8901-012345678901\",\n      \"tenantType\": \"ORGANISATION\"\n    }, \n    {\n      \"resourceUrl\": \"https:\/\/api.xero.com\/api.xro\/2.0\/Invoices\/98765432-3210-3210-3210-109876543210\",\n      \"resourceId\": \"98765432-3210-3210-3210-109876543210\",\n      \"eventDateUtc\": \"2021-01-01T00:00:01.000\",\n      \"eventType\": \"UPDATE\",\n      \"eventCategory\": \"INVOICE\",\n      \"tenantId\": \"01234567-0123-4567-8901-012345678901\",\n      \"tenantType\": \"ORGANISATION\"\n    }\n  ],\n  \"firstEventSequence\": 1,\n  \"lastEventSequence\": 1,\n  \"entropy\": \"ABCDEFGHIJKLMNOPQRST\"\n}<\/code><\/pre>\n\n\n\n<p>Our webhooks use &#8220;one request creates one record&#8221; model, so if you are going to handle multiple events you&#8217;ll have to duplicate the logic: another storage column and assignment and trigger and action for each event. But real problem is that you do not know how many items might be in the list &#8212; any number you are going to handle might not be enough. <\/p>\n\n\n\n<p>But now we have iterators to help!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Iterators in Webhooks<\/h2>\n\n\n\n<p>Iterators allow you to select repeating entries from JSON or XML payload and create a record in some table for each selected entry.<\/p>\n\n\n\n<p>In Xero case first you should declare you are going to iterate over the &#8220;events&#8221; fields. First, we&#8217;ll create &#8220;Xero Events&#8221; table and set up all the logic described above (column, trigger, action) there.<\/p>\n\n\n\n<p>Now to iterator setup. Let&#8217;s check incoming data and click on an value (&#8220;resourceUrl&#8221; field) we are interested in:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"408\" src=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-3-1024x408.png\" alt=\"Iterator's path and assignment expression\" class=\"wp-image-2442\" srcset=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-3-1024x408.png 1024w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-3-300x120.png 300w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-3-768x306.png 768w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-3.png 1424w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>You&#8217;ll see two new boxes we display for the content that might be iterated. Let&#8217;s copy the values. Now, let&#8217;s go back to webhook setup. There is also new Iterators section:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"562\" src=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-1-1024x562.png\" alt=\"Iterators in webhook setup \" class=\"wp-image-2440\" srcset=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-1-1024x562.png 1024w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-1-300x165.png 300w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-1-768x421.png 768w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-1.png 1488w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Let&#8217;s create new iterator and paste the expression from the top box there.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"351\" src=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-2-1024x351.png\" alt=\"New iterator's setup\" class=\"wp-image-2441\" srcset=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-2-1024x351.png 1024w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-2-300x103.png 300w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-2-768x263.png 768w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-2.png 1470w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Save, and create new assignment. The end result will look as:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"197\" src=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-4-1024x197.png\" alt=\"Iterators are configured\" class=\"wp-image-2443\" srcset=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-4-1024x197.png 1024w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-4-300x58.png 300w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-4-768x148.png 768w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-4.png 1473w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Voil\u00e0! We are capable to handle any arbitrary number of the events in Xero webhook! We will process each event uniformly and there is no need to duplicate the logic.<\/p>\n\n\n\n<p> <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Iterators in Call URL actions <\/h2>\n\n\n\n<p>As Xero reports Invoice information together with line items we can use iterators to copy all invoice data in one shot.  Xero&#8217;s invoice information is quite long, here is excerpt with some essential info:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Response&gt;\n  &lt;Invoices&gt;\n    &lt;Invoice&gt;\n      &lt;InvoiceID&gt;01234567-0123-4567-8901-012345678901&lt;\/InvoiceID&gt;\n      &lt;Date&gt;2021-01-01T00:00:00&lt;\/Date&gt;\n      &lt;Contact&gt;\n        &lt;Name&gt;John Doe&lt;\/Name&gt;\n      &lt;\/Contact&gt;\n      &lt;LineItems&gt;\n        &lt;LineItem&gt;\n          &lt;LineItemID&gt;01234567-0123-4567-8901-012345678901&lt;\/LineItemID&gt;\n          &lt;Description&gt;Acme Wild-Cat&lt;\/Description&gt;\n          &lt;UnitAmount&gt;100.00&lt;\/UnitAmount&gt;\n          &lt;Quantity&gt;2.0000&lt;\/Quantity&gt;\n        &lt;\/LineItem&gt;\n        &lt;LineItem&gt;\n          &lt;LineItemID&gt;98765432-3210-3210-3210-109876543210&lt;\/LineItemID&gt;\n          &lt;Description&gt;Weyland-Yutani Xenomorph&lt;\/Description&gt;\n          &lt;UnitAmount&gt;200.00&lt;\/UnitAmount&gt;\n          &lt;Quantity&gt;1.0000&lt;\/Quantity&gt;\n        &lt;\/LineItem&gt;\n      &lt;\/LineItems&gt;\n    &lt;\/Invoice&gt;\n  &lt;\/Invoices&gt;\n&lt;\/Response&gt;<\/code><\/pre>\n\n\n\n<p>Iterators in Call URL actions are organized the same way as in webhooks, so we won&#8217;t repeat step-by-step guide from above, just the final result:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"427\" src=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-5-1024x427.png\" alt=\"Iterators in Call URL actions\" class=\"wp-image-2444\" srcset=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-5-1024x427.png 1024w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-5-300x125.png 300w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-5-768x320.png 768w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-5-1536x640.png 1536w, https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/image-5.png 1794w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Please note the use of <code>ParentKey()<\/code> function &#8211; it will allow you to connect newly created line items to their parent invoice record.<\/p>\n\n\n\n<p>Enjoy! <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Iterators allow you to select repeating entries from JSON or XML payload and create a record in some table for each selected entry.<\/p>\n","protected":false},"author":4,"featured_media":2437,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[223,224,222],"class_list":["post-2436","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-whats-new","tag-call-url","tag-iterators","tag-webhooks"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Iterators for Call URL actions and Webhooks - TeamDesk Blog<\/title>\n<meta name=\"description\" content=\"Call URL and Webhook iterators simplify processing repeating entries in XML\/JSON response by creating a record for each selected entry.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Iterators for Call URL actions and Webhooks - TeamDesk Blog\" \/>\n<meta property=\"og:description\" content=\"Call URL and Webhook iterators simplify processing repeating entries in XML\/JSON response by creating a record for each selected entry.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/\" \/>\n<meta property=\"og:site_name\" content=\"TeamDesk Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-02T17:54:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-09-28T08:49:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/iterators.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1423\" \/>\n\t<meta property=\"og:image:height\" content=\"798\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kirill Bondar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirill Bondar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/\"},\"author\":{\"name\":\"Kirill Bondar\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/#\\\/schema\\\/person\\\/22c4c05bd657513c8b00122fa364c8d2\"},\"headline\":\"Iterators for Call URL actions and Webhooks\",\"datePublished\":\"2021-09-02T17:54:55+00:00\",\"dateModified\":\"2021-09-28T08:49:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/\"},\"wordCount\":535,\"commentCount\":3,\"image\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/iterators.png\",\"keywords\":[\"call url\",\"iterators\",\"webhooks\"],\"articleSection\":[\"What's New\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/\",\"url\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/\",\"name\":\"Iterators for Call URL actions and Webhooks - TeamDesk Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/iterators.png\",\"datePublished\":\"2021-09-02T17:54:55+00:00\",\"dateModified\":\"2021-09-28T08:49:41+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/#\\\/schema\\\/person\\\/22c4c05bd657513c8b00122fa364c8d2\"},\"description\":\"Call URL and Webhook iterators simplify processing repeating entries in XML\\\/JSON response by creating a record for each selected entry.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/iterators.png\",\"contentUrl\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/iterators.png\",\"width\":1423,\"height\":798,\"caption\":\"Call URL and Webhook Iterators\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/iterators-for-call-url-actions-and-webhooks\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Iterators for Call URL actions and Webhooks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/\",\"name\":\"TeamDesk Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/#\\\/schema\\\/person\\\/22c4c05bd657513c8b00122fa364c8d2\",\"name\":\"Kirill Bondar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc5bc844095b5753ccc73c589c028bf16615674f289668146bbd59205a08a52d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc5bc844095b5753ccc73c589c028bf16615674f289668146bbd59205a08a52d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc5bc844095b5753ccc73c589c028bf16615674f289668146bbd59205a08a52d?s=96&d=mm&r=g\",\"caption\":\"Kirill Bondar\"},\"url\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/author\\\/kirill-bondar\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Iterators for Call URL actions and Webhooks - TeamDesk Blog","description":"Call URL and Webhook iterators simplify processing repeating entries in XML\/JSON response by creating a record for each selected entry.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/","og_locale":"en_US","og_type":"article","og_title":"Iterators for Call URL actions and Webhooks - TeamDesk Blog","og_description":"Call URL and Webhook iterators simplify processing repeating entries in XML\/JSON response by creating a record for each selected entry.","og_url":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/","og_site_name":"TeamDesk Blog","article_published_time":"2021-09-02T17:54:55+00:00","article_modified_time":"2021-09-28T08:49:41+00:00","og_image":[{"width":1423,"height":798,"url":"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/iterators.png","type":"image\/png"}],"author":"Kirill Bondar","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirill Bondar","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/#article","isPartOf":{"@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/"},"author":{"name":"Kirill Bondar","@id":"https:\/\/www.teamdesk.net\/blog\/#\/schema\/person\/22c4c05bd657513c8b00122fa364c8d2"},"headline":"Iterators for Call URL actions and Webhooks","datePublished":"2021-09-02T17:54:55+00:00","dateModified":"2021-09-28T08:49:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/"},"wordCount":535,"commentCount":3,"image":{"@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/#primaryimage"},"thumbnailUrl":"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/iterators.png","keywords":["call url","iterators","webhooks"],"articleSection":["What's New"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/","url":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/","name":"Iterators for Call URL actions and Webhooks - TeamDesk Blog","isPartOf":{"@id":"https:\/\/www.teamdesk.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/#primaryimage"},"image":{"@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/#primaryimage"},"thumbnailUrl":"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/iterators.png","datePublished":"2021-09-02T17:54:55+00:00","dateModified":"2021-09-28T08:49:41+00:00","author":{"@id":"https:\/\/www.teamdesk.net\/blog\/#\/schema\/person\/22c4c05bd657513c8b00122fa364c8d2"},"description":"Call URL and Webhook iterators simplify processing repeating entries in XML\/JSON response by creating a record for each selected entry.","breadcrumb":{"@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/#primaryimage","url":"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/iterators.png","contentUrl":"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/09\/iterators.png","width":1423,"height":798,"caption":"Call URL and Webhook Iterators"},{"@type":"BreadcrumbList","@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/iterators-for-call-url-actions-and-webhooks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.teamdesk.net\/blog\/"},{"@type":"ListItem","position":2,"name":"Iterators for Call URL actions and Webhooks"}]},{"@type":"WebSite","@id":"https:\/\/www.teamdesk.net\/blog\/#website","url":"https:\/\/www.teamdesk.net\/blog\/","name":"TeamDesk Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.teamdesk.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.teamdesk.net\/blog\/#\/schema\/person\/22c4c05bd657513c8b00122fa364c8d2","name":"Kirill Bondar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dc5bc844095b5753ccc73c589c028bf16615674f289668146bbd59205a08a52d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dc5bc844095b5753ccc73c589c028bf16615674f289668146bbd59205a08a52d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dc5bc844095b5753ccc73c589c028bf16615674f289668146bbd59205a08a52d?s=96&d=mm&r=g","caption":"Kirill Bondar"},"url":"https:\/\/www.teamdesk.net\/blog\/author\/kirill-bondar\/"}]}},"_links":{"self":[{"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/posts\/2436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/comments?post=2436"}],"version-history":[{"count":5,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/posts\/2436\/revisions"}],"predecessor-version":[{"id":2449,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/posts\/2436\/revisions\/2449"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/media\/2437"}],"wp:attachment":[{"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/media?parent=2436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/categories?post=2436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/tags?post=2436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}