Reference

Source code


<?xml version="1.0" encoding="utf-8"?>
<ApiConfig Name="Zendesk" Id="085A7D73-DB03-49A7-BEAA-027DF769784B"
	EngineVersion="7"
    Version="9"
	Slug="zendesk-connector"
  Desc="Read and write Zendesk data effortlessly. Manage tickets, users, and organizations — almost no coding required."
	HelpLink="https://developer.zendesk.com/rest_api/docs/zendesk-apis/resources"
	Logo="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAqsSURBVHhe7Z15cFfVFcc7U7EVbXFpaW1rq9NWZ9pq63RRNCxhSVhCYrCylGXAVAQMxRCw4BjAQNUSCjgwA7Kow+oC1ZaKUFkEEaIgkhCIEMJuAyELSYTsnP7O602boSfJ+/1+79x37+93vjOff8hb7nnvE/KW++790pd/0xkEwWtELIEFEUtgQcQSWBCxBBZELIEFEUtgQcQSWBCxBBZELIEFEUtgQcQSWBCxBBZELIEFEUtgQcQSWBCxBBZELIEFEUtgQcQSWBCxBBZELIEFEUtgQcQSWBCxBBZELIEFEUtgQcQSWBCxBBZELIEFEUtgQcQSWBCxBBZELIEFEUtgQYtYWz7aayWrNm6G6x6IJWtCktKnkOvZwMR5C8iavEKLWKUVFWBjjp05C9c92J2sCXniz39RS9qVvYfzyXq8RItYRSWlqiS7cvBYIVlPEzaKdb60DL6fMICsx0u0iHXo+AlVll3ZsHMXWU8TNorVfcx4shav0SLWhzm5qiy78tL6t8l6mrBJrLr6ehg+LZOsgwMtYuFFsI3pn/YUWU8TtojV2HgFFgd+Sa65rwtZBwdaxEqc+EdVoj0pLitv80TYItbfdnygVSpEi1jtA3dWlZcuqTLtyPpt75O1NMcGsQ4VHodvxSWQ7edEi1jIyo2bVKl2JHX2XLKO5pguVnllFdw1YDDZdm60iZU8eaoq1/zU1zfAHUmPkHU0x2Sxauvq4SePDCXbrQNtYrWP6Q7nSu14njVz2atkDVdjslgT5swn26wLbWIhnUaNhpq6OlW6mamurYXv9X2IbP/VmCrWnJVryPbqRKtYX+nUDT7KO6zKNzPTX1pOtp3CRLH25X8GHbrFke3ViVaxkHuHjoKaWjP/18o/cRLa3d+VbDeFaWJ9dvIUXB/Tg2yrbrSLhYwz8De99GIF/Gp4CtneljBJLHwHeM+QEWQ7/cAXsZCsFWvgypUr6rD4n+RJU8l2toYpYtU3NEBC2mSyjX7hm1jYHeXw8ZPq0PgXlHvs81lkG9vCBLGw/UMzniXb5ye+iYV8vWuc84Tbz6TPXxDUdVVzTBBrxTubnJsiqn1+4qtYyFcfiIXZK1arw6QvZRWVMHBKBtkmt/gt1ta9+8h2mYDvYjUxaGoGVGl4n4h/Ok4WFcFdD4f/qsNPsU4VnYdbeyeS7TIBY8RCvtMnCdZufk8dOp6kz1sAN3fvQ+4/WPwSq6GhEe4ePJxskykYJVYTMSljnGsvvNvxIpeqqyFz6ctwR+Jvyf1R4HXLi2vfhJtie5M/R/wQq7qmBnqNe5Jsj0kYKVYTvx6RAvPXvgG5xwqDfqj6rwslsOtALmQsWgrfdfmKpjkzliyH82Vlrf7vplushsZGmLXc3XtMvzFarCawk9pNsfGB67BpsGjdW3D09Bl1qP+XC+XlsOOTTyFr5RqIfTzVudO7htiWG/CiHq/FTBPr1Q0byXaYiBViUXytSy/oGJfg4OXt9s8GDYeyykrnRJokFv7v69W1oQ6sFYsDvAY7e75YnUpzxDp97jx8O74/2QZTEbEU+CYg+2CeOpX/iQliVdfUwo+TB5H7NxkRS7Hq3f//ksgEsUZMn0nu23SiXqx293eBZxYtce64ro6fYuEnW9guar82EPVixaemtfi8zE+x3t2d7bzuovZrA1Et1r1DRzofHbQUv8TKPngIrg3xxbgpRK1Y3+jRx+kx2lr8EOvz4gvww6SB5P5sIirFah/TA3YdyFGnsuXoFgvHV4j5/VhyX7YRdWLhE/mFb6xXp7L16BSrMXDzEBe43qP2YyNRJ9bYF+aoU9l2dIo1f83r2sdX4CSqxEpMe8r5c+M2usTCrkLU9m0masS6NT4RikpK1Kl0Fx1iFZw5C9/s2Y/cvs1EhVjYgRC7IgcbbrHwZfcP+j9Mbtt2Il4sfMi4YeeH6lQGF06xqi5fhpiUyLgDpIh4sRa+vk6dyuDDJRZ2LcabCGqbkUJEi5WS+bw6laGFS6zMZa+Q24skIlaszo+Nc7qchBMOsd7L3ut0UqS2F0lEpFj3DB4B5VVV6lSGHq/FwmEbb+jSk9xWpBFxYt3QuSfkHD2mTmV48VKskosX4fb+7r8Ssp2IEgtf12zak61OZfjxUqze4yeS24hUIkYs7GaStWK100HOq3ghFj7pf2zWC+T6kUzEiDVyxp/UqfQuXoi1cuNm6/tWhUJEiPVgyhho8Oir6eYJV6xNu7NDHsnGdqwXq2OvfnCq6Jw6ld4mHLFw2Mbb+iaT60UDVouFJx1v4bkSqlhVly7DTwcOI9eJFqwV69pOXeGv23aoU8mTUMTCDzPwa2pq+WjCWrFwkH/uhCLWtMVLyWWjDevEwl6Wo2bM8myIo9YSrFg4dRu1XDRinVg4P4yumcRwiGu3YuUWFMKNsfHkcqGAn/x36BoH7SztrmyVWD96aKBzYawrbsUqPPs5dOgWulQ46D9+Sr/s7Q2wbut2OFtcDOdKSp2hmfBzsE/yjzj/PnXhYrjdko6B1oiFcx7iUD4640asi1VV8Mthj5I/b437Ro4OXCe+Ajv2H4AvLrv/ZcGvefBRBvaTx3G8ru9sxkwUV2ONWG9u2aYOrb60Jdbjz82GQU9PI39GgU/gcfaLd3btVnsIP9jGRzOfC7Sz5SEt/cAKsaYvWa4Oo960JVYw4MRJGz4IrYu0m5RWVELfCZOM+YTMeLGS0qdAo09To3ghFr7SmTR/wX9HCeQM/pnck5tnxDDdRouF8xtWfuHfXNLhioU9Reeueo0cIokzeYXHQ7ru8xJjxboxcJdVQAxiqzPhiHVLjz6e9g0LNjgfdK8n0nz702ikWPibnnO0QB0i/xKqWPjJGU5I6XdwNtvuY8aTbeTGOLFwBGQcdtqEKedCEQsfbK7dvEVtwf/gh7o4DhjVVk6MEwtn4zIloYg1+cWFam1z8umRo9CxVwLZXi6MEisu9UnnzsaUBCvWsIxnjWp/8+zcf0Dr9HPGiHXngCFwofyiOgxmJFixDhzx/7qwpdTXN2gd1M0IsW7rlwynz/H0Ag0nwYg15Onpai1zg3fZ+Hkc1X6v8V0svIP6Z/bHqnSz4lYsHIboUnWNWsvsDH1GzzS/vouFky6ZGrdi4bs6E+5i3QQnuKJq8BrfxMJ+Rn/ImueMvGJq3Ip1qPCEWsOO6Hi25ZtY3UanQm1dcHMQ6o4bse4cMFgtbU9waCeqFi/xRay7B48IeyQYHXEj1vjZc9XS9mR//hGyFi/RLhb2lswt8GbQDu64Eeut7bxfCnGkuraWfdQbrWLhHeDWj/ep8syPG7GwW7KN6TMhnazHK7SJhW/Z565+TZVlR9yIVVxWppa2K9wzi2kTK2VmeMM2+hE3Ytmal//+D7Ier9AiVvz4tFZn2TI1bYn1i9+NVEval/f37Sdr8gotYm0PFIEP5mxjz8E8p8MhVRPy84BY1Ho2kBO4gaJq8gqtF+9C9CBiCSyIWAILIpbAgoglsCBiCSyIWAILIpbAgoglsCBiCSyIWAILIpbAgoglsCBiCSyIWAILIpbAgoglsCBiCSyIWAILIpbAgoglsCBiCSyIWAILIpbAgoglsCBiCSyIWAILIpbAgoglsCBiCSyIWAILIpbAgoglsCBiCSyIWAILIpbAgoglMNAZ/g1YXwWYJuDnmQAAAABJRU5ErkJggg=="
	>
  <VersionHistory>
	
	<Change Date="2024-06-03" Type="New">Performance improvement for many endpoints such as get_tickets, get_tickets_incr, get_users, get_organizations, get_ticket_metrics and more.</Change>
    <Change Date="2024-06-03" Type="New">New endpoints for incremental fetch - get_users_incr, get_organizations_incr, get_ticket_metric_events_incr.</Change>
	<Change Date="2024-06-03" Type="New">New endpoint search_export to return more than 1000 records from search result. search endpoint returns only 1000 records but search_Export returns more than 1000.</Change>
    <Change Date="2024-06-03" Type="Modified">Changed default offset pagination method (OBP) to cursor based pagination (CBP) to allow more than 10000 records. Zendesk indicated they will discontinue Offset based pagination (OBP) in future. If new cursor based pagination method (CBP) not used then you may see this error {"errors":[{"code":"InvalidPaginationDepth","title":"Pagination requests using Offset Pagination are limited to page 100 or up to 10000 records (page * per_page)","detail":"There are limits to the page depth in Offset Pagination. Offset Pagination will be deprecated fully in the near future.\nPlease switch to Cursor Pagination at the earliest. Cursor Pagination does not have any limits.\nSee https://developer.zendesk.com/documentation/api-basics/pagination/comparing-cursor-pagination-and-offset-pagination\n","source":{"parameter":"page"},"status":"400","links":{"related":{"title":"Pagination | Zendesk Developer Docs","href":"https://developer.zendesk.com/api-reference/introduction/pagination"},"announcement":{"title":"New limits for offset-based pagination | Zendesk Article","href":"https://support.zendesk.com/hc/en-us/articles/5591904358938-New-limits-for-offset-based-pagination"}}}]}</Change>
	<Change Date="2024-01-08" Type="New">Added CRUD operations (Insert, Update, Delete and Upsert) for Users and Organizations table. For Users table you can do Upsert in Bulk mode.</Change>
    <Change Date="2023-11-15" Type="Modified">Added API call delay property NextUrlWaitInMs to avoid error 429 (too many requests) during Pagination</Change>
    <Change Date="2023-10-30" Type="Modified">Change Domain Label to Sub Domain to avoid confusion</Change>
    <Change Date="2022-11-22" Type="Fix">Added MaxRows=1000 for get_search endpoint to avoid error when more than 1000 rows returned in search</Change>
    <Change Date="2022-10-27" Type="New">Updated Read Tickets (Incremental) endpoint to support functions in Start Time Parameter. Now you can use date time function (i.e. yesterday, monthstart etc) along with static date (i.e. 2021-01-01 or 2021-01-01 23:59:59) to set incremental extract date.</Change>
    <Change Date="2022-10-27" Type="New">Added support for separate columns for custom_fields (Previous approach was limited to 5 fields only)</Change>
    <Change Date="2022-08-16" Type="New">Added comment feature on existing ticket along with html body (e.g. Update Tickets SET comment_body='Closing this ticket' where Id=1234 - you can also set comment_body_html, comment_author_id, comment_public)</Change>
    <Change Date="2022-02-15" Type="Fix">Tickets (Incremental) endpoint doesnt stop pagination</Change>
    <Change Date="2022-02-15" Type="New">Added Retry for API Limit errors (status code 429)</Change>
    <Change Date="2022-01-31">BREAKING: renamed some parameters, Added support for adding - removing tags in Bulk UPDATE operation using additional_tags, remove_tags input property</Change>
    <Change Date="2022-01-31">BREAKING: Added support for Updating, Creating, Deleting Single Ticket without using Bulk mode (faster)</Change>
    <Change Date="2021-03-25">Added new endpoint get_ticket_attachments, updated many ticket endpoints to use static columns</Change>
    <Change Date="2020-12-01">Initial version</Change>
  </VersionHistory>

  <ServiceUrls>
    <ServiceUrl Name="Zendesk API" Url="https://[$Domain$].zendesk.com/api/v2"/>
  </ServiceUrls>


  <!-- https://developer.zendesk.com/rest_api/docs/support/introduction -->
  <Auths>

    <Auth Type="HTTP" Name="token" Label="Token Authentication" Desc="Authenticate using Static Token instead of userid / password ([Token Access] option must be enabled under Admin Console &gt; Channel &gt; API &gt; Settings and then Click [ADD API Token] to generate new token. These settings typically found here https://YOUR-SUB-DOMAIN.zendesk.com/agent/admin/api/settings " HelpLink="https://developer.zendesk.com/rest_api/docs/support/introduction#api-token"
          ConnStr="CredentialType=Basic;UserName=[$UserId$]/token;Password=[$Password$];"  TestEndPoint="get_groups">
      <Params>
        <Param Name="Domain" Label="Sub Domain (e.g. mycompany)" Required="True" />
        <Param Name="UserId" Required="True"/>
        <Param Name="Password" Label="Token" Secret="True" Required="True"/>
      
        <!--below not exposed as root level property in HTTP Connection so use as placeholder-->
        <Param Name="RetryMode" Value="RetryWhenStatusCodeMatch" Options="None;RetryAny;RetryWhenStatusCodeMatch;" Hidden="True" />
        <Param Name="RetryStatusCodeList" Value="429" Hidden="True" />
        <Param Name="RetryCountMax" Value="5" Hidden="True" />
        <Param Name="RetryMultiplyWaitTime" Value="True" Hidden="True" />      
      </Params>
    </Auth>

    <Auth Type="OAuth" Name="oauth" Label="OAuth Authentication" Desc="OAuth App must be created under Admin Console &gt; Channel &gt; API &gt; Settings. These settings typically found here https://YOUR-SUB-DOMAIN.zendesk.com/agent/admin/api/oauth_clients "
      HelpLink="https://developer.zendesk.com/rest_api/docs/support/introduction#oauth-access-token"
      ConnStr="Provider=Custom;OAuthVersion=OAuth2;ScopeSeparator={space};ReturnUrl=[$RedirectUrl$];AuthUrl=https://[$Domain$].zendesk.com/oauth/authorizations/new;TokenUrl=https://[$Domain$].zendesk.com/oauth/tokens;ClientId=[$ClientId$];ClientSecret=[$ClientSecret$];Scope=[$Permissions$];ContentType=application/json"
      TestEndPoint="get_groups">
      <Params>
        <Param Name="Domain" Label="Sub Domain (e.g. mycompany)" Required="True" />
        <Param Name="ClientId" Required="True" />
        <Param Name="ClientSecret" Secret="True" Required="True"/>
        <Param Name="Permissions" Value="read write" Required="True" Desc="Permissions you like to use. Examples:"/>
        <Param Name="RedirectUrl" Value="https://zappysys.com/oauth" Required="True" />
        
        <!--below not exposed as root level property in OAuth Connection so use as placeholder-->
        <Param Name="RetryMode" Value="RetryWhenStatusCodeMatch" Options="None;RetryAny;RetryWhenStatusCodeMatch;" Hidden="True" />
        <Param Name="RetryStatusCodeList" Value="429" Hidden="True" />
        <Param Name="RetryCountMax" Value="5" Hidden="True" />
        <Param Name="RetryMultiplyWaitTime" Value="True" Hidden="True" />
      </Params>
    </Auth>
    <Auth Type="HTTP" Name="basic" Label="UserID/Password Authentication (2FA must be OFF)" Desc="Authenticate using your userid / password (2FA must be OFF and [Password Access] option must be enabled under Admin Console &gt; Channel &gt; API &gt; Settings. These settings typically found here https://YOUR-SUB-DOMAIN.zendesk.com/agent/admin/api/settings " HelpLink="https://developer.zendesk.com/rest_api/docs/support/introduction#basic-authentication."
          ConnStr="CredentialType=Basic;" TestEndPoint="get_groups">
      <Params>
        <Param Name="Domain" Label="Sub Domain (e.g. mycompany)" Required="True" />
        <Param Name="UserName" Label="UserName (2FA Must be OFF)" Required="True"/>
        <Param Name="Password" Secret="True"  Required="True"/>
        <!--below not exposed as root level property in HTTP Connection so use as placeholder-->
        <Param Name="RetryMode" Value="RetryWhenStatusCodeMatch" Options="None;RetryAny;RetryWhenStatusCodeMatch;" Hidden="True" />
        <Param Name="RetryStatusCodeList" Value="429" Hidden="True" />
        <Param Name="RetryCountMax" Value="5" Hidden="True" />
        <Param Name="RetryMultiplyWaitTime" Value="True" Hidden="True" />    
      </Params>
    </Auth>
  </Auths>


  <Template>
    <Param Name="t_query" Label="Search Criteria" Desc="The search query based on this syntax https://support.zendesk.com/hc/en-us/articles/203663226" Type="query" Required="True"
          Options="Example: Search by Ticket ID=112233;Example: Search by Ticket Status=status&lt;solved;Example: Search by Some Text=SomeText;Example: Search By Status=SomeText;Example: Search by Type and Status=type:ticket status:open;Example: Search by Type and Name=type:user &quot;Jane Doe&quot;;Example: Search by Type and CreationDate=type:organization created&lt; 2015-05-01;Example: Search organizations updated after some date=type:organization updated &gt; 2015-05-01;Example: Search users updated after some date=type:user updated &gt; 2015-05-01;Example: Search By Type and Tag=type:ticket tags:red tags:blue"
          />
	
	<Param Name="t_start_time" Label="Start Time (e.g. yyyy-MM-dd -OR- yyyy-MM-ddTHH:mm:ss)" 
	    Type="Query"
		Desc="Start DateTime for data fetch. Records modified after this date/time is fetched. You can enter date in yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss format. You can also use functions to get date. Supported functions now|today|yesterday|weekstart|weekend|monthstart|monthend|yearstart|yearend and supported intervals for add/subtract are ms|s|sec|min|h|hour|y|year|d|day|m|month|y|year. Example monthstart-3d (subtract 3days from month start), now-5h (current time minus 5 hours), today-1m (today minus one month)"
		Options="now;now-5h;today;yesterday;monthstart;monthend;yearstart;yearend;weekstart;weekend;yearstart-1y;yearend-1y;monthstart-1d;monthend+1d;2022-01-31;2022-01-31 23:59:59" 
		ValueTemplate="&lt;&lt;{$value$}||unix_timestamp,FUN_TO_DATETIME&gt;&gt;" 
		Required="True"/>
			
	<Param Name="t_exclude_deleted" Label="Exclude Deleted" Key="exclude_deleted" Type="Query" Options=";true;false" Desc="Whether or not you'd like to exclude deleted tickets from the response"/>
	
	<Param Name="t_per_page" Hidden="True" Label="Page Size (Default 1000)" Key="per_page" Type="Query" Desc="Number of results to return per page, up to a maximum of 1,000. If the parameter is not specified, the default number is 1,000."/>
	
    <!-- When name not specified in EndPoints node .. its considered as base for all other template -->
    <EndPoint>
      <Params>
		<Param Name="NextUrlAttributeOrExpr" Value="$.next_page" Type="Property" />
        <Param Name="EnableArrayFlattening" Value="False" Type="Property" Desc="Enables deep array flattening for selected filtered hierarchy. When you turn on this property it will flatten each property of each array item and expose as column (e.g. If you have array property called tags and value is ['red','blue','yellow'] and if you turn on array flatterning then may see columns tags.1, tags.2, tags.3... tags.N in the output. You can control how many array items you want to flatten by setting MaxArrayItemsToFlatten property." />
        <Param Name="MaxArrayItemsToFlatten" Value="5" Type="Property" />
		<Param Name="NextUrlWaitInMs" Value="0" Label="Wait time after each request (in milliseconds)" Desc="This setting is useful to avoid error 429 (too many requests) during pagination. By setting this it slows down data read operation and that way less chance of error 429." Type="Property" />		
      </Params>
    </EndPoint>	

	<!-- When dot used as parent Template it stops inheritance -->
    <EndPoint Name="tp_paginate_cursor" Template=".">
      <Params>
	    <Param Name="NextUrlAttributeOrExpr" Value="$.links.next" Type="Property" />
		<Param Name="PageSize" Label="Records Per Page (Max 100)" Key="page[size]" Type="Query" Value="100" Hidden="True" />
        <Param Name="NextUrlEndIndicator" Type="Property" Value="false" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.meta.has_more" />
			
        <Param Name="EnableArrayFlattening" Value="False" Type="Property" Desc="Enables deep array flattening for selected filtered hierarchy. When you turn on this property it will flatten each property of each array item and expose as column (e.g. If you have array property called tags and value is ['red','blue','yellow'] and if you turn on array flatterning then may see columns tags.1, tags.2, tags.3... tags.N in the output. You can control how many array items you want to flatten by setting MaxArrayItemsToFlatten property." />
        <Param Name="MaxArrayItemsToFlatten" Value="5" Type="Property" />
		<Param Name="NextUrlWaitInMs" Value="0" Label="Wait time after each request (in milliseconds)" Desc="This setting is useful to avoid error 429 (too many requests) during pagination. By setting this it slows down data read operation and that way less chance of error 429." Type="Property" />		
      </Params>
    </EndPoint>

    <EndPoint Name="tp_ticket">
      <Params>
        <Param Name="EnableArrayFlattening" Value="True" Type="Property" Desc="Enables deep array flattening for selected filtered hierarchy. When you turn on this property it will flatten each property of each array item and expose as column (e.g. If you have array property called tags and value is ['red','blue','yellow'] and if you turn on array flatterning then may see columns tags.1, tags.2, tags.3... tags.N in the output. You can control how many array items you want to flatten by setting MaxArrayItemsToFlatten property." />
      </Params>
      <OutputColumns>
        <Column Name="id" DataType="DT_I8" />
        <Column Name="recipient" DataType="DT_WSTR" Length="255" />
        <Column Name="subject" DataType="DT_WSTR" Length="1000" />
        <Column Name="status" DataType="DT_WSTR" Length="28" />
        <Column Name="type" DataType="DT_WSTR" Length="255" />
        <Column Name="priority" DataType="DT_WSTR" Length="24" />
        <Column Name="description" DataType="DT_NTEXT" />
        <Column Name="external_id" DataType="DT_WSTR" Length="255" />
        <Column Name="created_at" DataType="DT_DBTIMESTAMP" />
        <Column Name="updated_at" DataType="DT_DBTIMESTAMP" />
        <Column Name="raw_subject" DataType="DT_WSTR" Length="1000" />
        <Column Name="url" DataType="DT_WSTR" Length="500" />
        <Column Name="comment_count" DataType="DT_I8" />
        <Column Name="requester_id" DataType="DT_I8" />
        <Column Name="submitter_id" DataType="DT_I8" />
        <Column Name="assignee_id" DataType="DT_I8" />
        <Column Name="organization_id" DataType="DT_I8" />
        <Column Name="group_id" DataType="DT_I8" />
        <Column Name="collaborator_ids" DataType="DT_WSTR" Length="1000" />
        <Column Name="collaborator_ids.1" Label="collaborator_ids_1" DataType="DT_WSTR" Length="20" />
        <Column Name="collaborator_ids.2" Label="collaborator_ids_2" DataType="DT_WSTR" Length="20" />
        <Column Name="collaborator_ids.3" Label="collaborator_ids_3" DataType="DT_WSTR" Length="20" />

        <Column Name="follower_ids" DataType="DT_WSTR" Length="1000" />
        <Column Name="follower_ids.1" Label="follower_ids_1" DataType="DT_WSTR" Length="20" />
        <Column Name="follower_ids.2" Label="follower_ids_2" DataType="DT_WSTR" Length="20" />
        <Column Name="follower_ids.3" Label="follower_ids_3" DataType="DT_WSTR" Length="20" />

        <Column Name="email_cc_ids" DataType="DT_WSTR" Length="1000" />
        <Column Name="email_cc_ids.1" Label="email_cc_ids_1" DataType="DT_WSTR" Length="20" />
        <Column Name="email_cc_ids.2" Label="email_cc_ids_2" DataType="DT_WSTR" Length="20" />
        <Column Name="email_cc_ids.3" Label="email_cc_ids_3" DataType="DT_WSTR" Length="20" />


        <Column Name="forum_topic_id" DataType="DT_WSTR" Length="255" />
        <Column Name="problem_id" DataType="DT_WSTR" Length="255" />
        <Column Name="has_incidents" DataType="DT_BOOL"  />
        <Column Name="is_public" DataType="DT_BOOL"  />
        <Column Name="due_at" DataType="DT_DBTIMESTAMP"  />
        <Column Name="tags" DataType="DT_WSTR" Length="1000" />
        <Column Name="tags.1" Label="tags_1" DataType="DT_WSTR" Length="50" />
        <Column Name="tags.2" Label="tags_2" DataType="DT_WSTR" Length="50" />
        <Column Name="tags.3" Label="tags_3" DataType="DT_WSTR" Length="50" />
        <Column Name="tags.4" Label="tags_4" DataType="DT_WSTR" Length="50" />
        <Column Name="tags.5" Label="tags_5" DataType="DT_WSTR" Length="50" />

        <Column Name="custom_fields" DataType="DT_WSTR" Length="1000" />
        <Column Name="custom_fields.1.id" Label="custom_fields_1_id" DataType="DT_WSTR" Length="20" />
        <Column Name="custom_fields.1.value" Label="custom_fields_1_value" DataType="DT_WSTR" Length="1000" />
        <Column Name="custom_fields.2.id" Label="custom_fields_2_id" DataType="DT_WSTR" Length="20" />
        <Column Name="custom_fields.2.value" Label="custom_fields_2_value" DataType="DT_WSTR" Length="1000" />
        <Column Name="custom_fields.3.id" Label="custom_fields_3_id" DataType="DT_WSTR" Length="20" />
        <Column Name="custom_fields.3.value" Label="custom_fields_3_value" DataType="DT_WSTR" Length="1000" />
        <Column Name="custom_fields.4.id" Label="custom_fields_4_id" DataType="DT_WSTR" Length="20" />
        <Column Name="custom_fields.4.value" Label="custom_fields_4_value" DataType="DT_WSTR" Length="1000" />
        <Column Name="custom_fields.5.id" Label="custom_fields_5_id" DataType="DT_WSTR" Length="20" />
        <Column Name="custom_fields.5.value" Label="custom_fields_5_value" DataType="DT_WSTR" Length="1000" />

        <Column Name="via_followup_source_id" DataType="DT_I8" />
        <Column Name="satisfaction_rating.id" Label="satisfaction_rating_id" DataType="DT_I8" />
        <Column Name="satisfaction_rating.score" Label="satisfaction_rating_score" DataType="DT_WSTR" Length="20" />
        <Column Name="satisfaction_rating.comment" Label="satisfaction_rating_comment" DataType="DT_WSTR" Length="1000" />

        <Column Name="sharing_agreement_ids" DataType="DT_WSTR" Length="255" />
        <Column Name="fields" DataType="DT_WSTR" Length="1000" />
        <Column Name="followup_ids" DataType="DT_WSTR" Length="1000" />
        <Column Name="brand_id" DataType="DT_I8" />
        <Column Name="allow_channelback" DataType="DT_BOOL" />
        <Column Name="allow_attachments" DataType="DT_BOOL" />
        <Column Label="via_channel" Name="via.channel" DataType="DT_WSTR" Length="100" />
        <Column Label="via_source_rel" Name="via.source.rel" DataType="DT_WSTR" Length="255" />
        <Column Label="via_source_from_address" Name="via.source.from.address" DataType="DT_WSTR" Length="500" />
        <Column Label="via_source_from_name" Name="via.source.from.name" DataType="DT_WSTR" Length="500" />
        <Column Label="via_source_to_name" Name="via.source.to.name" DataType="DT_WSTR" Length="500" />
        <Column Label="via_source_to_address" Name="via.source.to.address" DataType="DT_WSTR" Length="500" />
        <Column Label="via_source_from_ticket_id" Name="via.source.from.ticket_id" DataType="DT_I8" />
        <Column Label="via_source_from_subject" Name="via.source.from.subject" DataType="DT_WSTR" Length="1000" />
        <Column Label="via_source_from_channel" Name="via.source.from.channel" DataType="DT_WSTR" Length="50" />
        <Column Name="custom_fields" Label="custom_field_[$parent.id$]" Expand="True" 
                DataEndPoint="get_ticket_fields" DataEndPointParameters="Filter=$.ticket_fields[?(@removable==true)]"
                ValueTemplate="&lt;&lt;{$value$}|~|$.data[?(@id==[$parent.id$])].value,FUN_JSON_TO_TEXT&gt;&gt;"
                />        
      </OutputColumns>
      <InputColumns>
        <Column Name="subject" DataType="DT_WSTR" Length="1012" />
        <Column Name="recipient" DataType="DT_WSTR" Length="255" />
        <Column Name="status" DataType="DT_WSTR" Length="28" Example="new, open, pending, solved, closed" />
        <Column Name="type" DataType="DT_WSTR" Length="255" />
        <Column Name="priority" DataType="DT_WSTR" Length="24" />
        <Column Name="comment_body" DataType="DT_NTEXT" />
        <Column Name="comment_body_html" DataType="DT_NTEXT" />
        <Column Name="comment_public" DataType="DT_BOOL" />
        <Column Name="comment_author_id" DataType="DT_I8" />

        <Column Name="tags" DataType="DT_WSTR" Length="1000" Raw="True" Example="[&quot;red&quot;, &quot;blue&quot;]"/>
        <Column Name="custom_fields" DataType="DT_WSTR" Length="1000" Raw="True" Example="[{&quot;id&quot;: 36001,&quot;value&quot;: 111}, {&quot;id&quot;: 36002,&quot;value&quot;: &quot;abcd&quot;}]"/>
        
        <Column Name="external_id" DataType="DT_WSTR" Length="255" />
        <Column Name="requester_name" DataType="DT_WSTR" Length="255"/>
        <Column Name="requester_email" DataType="DT_WSTR" Length="255"/>
        <Column Name="requester_id" DataType="DT_I8" />

        <Column Name="submitter_id" DataType="DT_I8" />
        <Column Name="assignee_id" DataType="DT_I8" />
        <Column Name="organization_id" DataType="DT_I8" />
        <Column Name="group_id" DataType="DT_I8" />
        <Column Name="collaborator_ids" DataType="DT_WSTR" Length="1000" Example="[111000, 222000]"/>
        <Column Name="follower_ids" DataType="DT_WSTR" Length="1000" Raw="True" Example="[111000, 222000]"/>
        <Column Name="email_cc_ids" DataType="DT_WSTR" Length="1000" Raw="True" Example="[111000, 222000]"/>
        <Column Name="forum_topic_id" DataType="DT_WSTR" Length="255" />
        <Column Name="problem_id" DataType="DT_WSTR" Length="255" />
        <Column Name="is_public" DataType="DT_BOOL"  />
        <Column Name="due_at" DataType="DT_DBTIMESTAMP"  />
        <Column Name="sharing_agreement_ids" DataType="DT_WSTR" Length="255" Raw="True" Example="[111000, 222000]"/>
        <Column Name="fields" DataType="DT_WSTR" Length="1000" Raw="True"/>
        <Column Name="followup_ids" DataType="DT_WSTR" Length="1000" Raw="True" Example="[111000, 222000]"/>
        <Column Name="brand_id" DataType="DT_I8" />
        <Column Name="allow_channelback" DataType="DT_BOOL" />
        <Column Name="allow_attachments" DataType="DT_BOOL" />
      </InputColumns>

    </EndPoint>

    <EndPoint Name="tp_ticket_bulk">
      <InputColumns>
        <Column Name="subject" DataType="DT_WSTR" Length="1012" />
        <Column Name="recipient" DataType="DT_WSTR" Length="255" />
        <Column Name="status" DataType="DT_WSTR" Length="28" Example="new, open, pending, solved, closed" />
        <Column Name="type" DataType="DT_WSTR" Length="255" />
        <Column Name="priority" DataType="DT_WSTR" Length="24" />
        <Column Name="comment_body" DataType="DT_NTEXT" />
		<Column Name="comment_body_html" DataType="DT_NTEXT" />
        <Column Name="comment_public" DataType="DT_BOOL" />
		<Column Name="comment_author_id" DataType="DT_I8" />

        <Column Name="tags" DataType="DT_WSTR" Length="1000" Raw="True" Example="[&quot;red&quot;, &quot;blue&quot;]"/>
        <Column Name="additional_tags" DataType="DT_WSTR" Length="1000" Raw="True" Example="[&quot;red&quot;, &quot;blue&quot;]"/>
        <Column Name="remove_tags" DataType="DT_WSTR" Length="1000" Raw="True"  Example="[&quot;red&quot;, &quot;blue&quot;]"/>
        <Column Name="custom_fields" DataType="DT_WSTR" Length="1000" Raw="True" Example="[{&quot;id&quot;: 36001,&quot;value&quot;: 111}, {&quot;id&quot;: 36002,&quot;value&quot;: &quot;abcd&quot;}]"/>

        <Column Name="external_id" DataType="DT_WSTR" Length="255" />
        <Column Name="requester_name" DataType="DT_WSTR" Length="255"/>
        <Column Name="requester_email" DataType="DT_WSTR" Length="255"/>
        <Column Name="requester_id" DataType="DT_I8" />

        <Column Name="submitter_id" DataType="DT_I8" />
        <Column Name="assignee_id" DataType="DT_I8" />
        <Column Name="organization_id" DataType="DT_I8" />
        <Column Name="group_id" DataType="DT_I8" />
        <Column Name="collaborator_ids" DataType="DT_WSTR" Length="1000" Example="[111000, 222000]" />
        <Column Name="follower_ids" DataType="DT_WSTR" Length="1000" Raw="True" Example="[111000, 222000]" />
        <Column Name="email_cc_ids" DataType="DT_WSTR" Length="1000" Raw="True" Example="[111000, 222000]" />
        <Column Name="forum_topic_id" DataType="DT_WSTR" Length="255" />
        <Column Name="problem_id" DataType="DT_WSTR" Length="255" />
        <Column Name="is_public" DataType="DT_BOOL"  />
        <Column Name="due_at" DataType="DT_DBTIMESTAMP"  />
        <Column Name="sharing_agreement_ids" DataType="DT_WSTR" Length="255" Raw="True" Example="[111000, 222000]" />
        <Column Name="fields" DataType="DT_WSTR" Length="1000" Raw="True" />
        <Column Name="followup_ids" DataType="DT_WSTR" Length="1000" Raw="True" Example="[111000, 222000]" />
        <Column Name="brand_id" DataType="DT_I8" />
        <Column Name="allow_channelback" DataType="DT_BOOL" />
        <Column Name="allow_attachments" DataType="DT_BOOL" />
      </InputColumns>

    </EndPoint>

	<EndPoint Name="tp_ticket_metric">
		<OutputColumns>
			<Column Name="id" DataType="DT_I8" />
			<Column Name="ticket_id" DataType="DT_I4" />
			<Column Name="created_at" DataType="DT_DBTIMESTAMP" />
			<Column Name="updated_at" DataType="DT_DBTIMESTAMP" />
			<Column Name="group_stations" DataType="DT_I4" />
			<Column Name="assignee_stations" DataType="DT_I4" />
			<Column Name="reopens" DataType="DT_I4" />
			<Column Name="replies" DataType="DT_I4" />
			<Column Name="assignee_updated_at" DataType="DT_DBTIMESTAMP" />
			<Column Name="requester_updated_at" DataType="DT_DBTIMESTAMP" />
			<Column Name="status_updated_at" DataType="DT_DBTIMESTAMP" />
			<Column Name="initially_assigned_at" DataType="DT_DBTIMESTAMP" />
			<Column Name="assigned_at" DataType="DT_DBTIMESTAMP" />
			<Column Name="solved_at" DataType="DT_DBTIMESTAMP" />
			<Column Name="latest_comment_added_at" DataType="DT_DBTIMESTAMP" />
			<Column Name="reply_time_in_minutes.calendar" DataType="DT_I4" />
			<Column Name="reply_time_in_minutes.business" DataType="DT_I4" />
			<Column Name="first_resolution_time_in_minutes.calendar" DataType="DT_I4" />
			<Column Name="first_resolution_time_in_minutes.business" DataType="DT_I4" />
			<Column Name="full_resolution_time_in_minutes.calendar" DataType="DT_I4" />
			<Column Name="full_resolution_time_in_minutes.business" DataType="DT_I4" />
			<Column Name="agent_wait_time_in_minutes.calendar" DataType="DT_I4" />
			<Column Name="agent_wait_time_in_minutes.business" DataType="DT_I4" />
			<Column Name="requester_wait_time_in_minutes.calendar" DataType="DT_I4" />
			<Column Name="requester_wait_time_in_minutes.business" DataType="DT_I4" />
			<Column Name="on_hold_time_in_minutes.calendar" DataType="DT_I4" />
			<Column Name="on_hold_time_in_minutes.business" DataType="DT_I4" />
		    <Column Name="url" DataType="DT_WSTR" Length="1000" />
		</OutputColumns>	
	</EndPoint>

    <EndPoint Name="tp_count">
      <OutputColumns>
        <Column Name="value" DataType="DT_I8" />
        <Column Name="refreshed_at" DataType="DT_DBTIMESTAMP" />
      </OutputColumns>
    </EndPoint>


    <EndPoint Name="tp_comment">
      <Params>
        <Param Name="EnableArrayFlattening" Value="True" Type="Property" Desc="Enables deep array flattening for selected filtered hierarchy. When you turn on this property it will flatten each property of each array item and expose as column (e.g. If you have array property called tags and value is ['red','blue','yellow'] and if you turn on array flatterning then may see columns tags.1, tags.2, tags.3... tags.N in the output. You can control how many array items you want to flatten by setting MaxArrayItemsToFlatten property." />
      </Params>
      <OutputColumns>
        <Column Name="id" DataType="DT_I8" />
        <Column Name="author_id" DataType="DT_I8" />
        <Column Name="body" DataType="DT_NTEXT"  />
        <Column Name="plain_body" DataType="DT_NTEXT"  />
        <Column Name="html_body" DataType="DT_NTEXT"  />
        <Column Name="created_at" DataType="DT_DBTIMESTAMP" />
        <Column Name="attachments" DataType="DT_WSTR" Length="4000" />
        <Column Name="type" DataType="DT_WSTR" Length="100" />
        <Column Name="public" DataType="DT_BOOL" />

        <Column Label="attachments_1_id" Name="attachments.1.id" DataType="DT_I8" />
        <Column Label="attachments_2_id" Name="attachments.2.id" DataType="DT_I8" />
        <Column Label="attachments_3_id" Name="attachments.3.id" DataType="DT_I8" />
        <Column Label="attachments_4_id" Name="attachments.4.id" DataType="DT_I8" />
        <Column Label="attachments_5_id" Name="attachments.5.id" DataType="DT_I8" />

        <Column Label="attachments_1_file_name" Name="attachments.1.file_name" DataType="DT_WSTR" Length="255" />
        <Column Label="attachments_2_file_name" Name="attachments.2.file_name" DataType="DT_WSTR" Length="255" />
        <Column Label="attachments_3_file_name" Name="attachments.3.file_name" DataType="DT_WSTR" Length="255" />
        <Column Label="attachments_4_file_name" Name="attachments.4.file_name" DataType="DT_WSTR" Length="255" />
        <Column Label="attachments_5_file_name" Name="attachments.5.file_name" DataType="DT_WSTR" Length="255" />

        <Column Label="attachments_1_content_url" Name="attachments.1.content_url" DataType="DT_WSTR" Length="500" />
        <Column Label="attachments_2_content_url" Name="attachments.2.content_url" DataType="DT_WSTR" Length="500" />
        <Column Label="attachments_3_content_url" Name="attachments.3.content_url" DataType="DT_WSTR" Length="500" />
        <Column Label="attachments_4_content_url" Name="attachments.4.content_url" DataType="DT_WSTR" Length="500" />
        <Column Label="attachments_5_content_url" Name="attachments.5.content_url" DataType="DT_WSTR" Length="500" />

        <Column Label="via_channel" Name="via.channel" DataType="DT_WSTR" Length="100" />
        <Column Label="via_source_rel" Name="via.source.rel" DataType="DT_WSTR" Length="255" />
        <Column Label="via_source_from_address" Name="via.source.from.address" DataType="DT_WSTR" Length="500" />
        <Column Label="via_source_from_name" Name="via.source.from.name" DataType="DT_WSTR" Length="500" />
        <Column Label="via_source_from_original_recipients" Name="via.source.from.original_recipients" DataType="DT_WSTR" Length="2000" />

        <Column Label="via_source_to_name" Name="via.source.to.name" DataType="DT_WSTR" Length="500" />
        <Column Label="via_source_to_address" Name="via.source.to.address" DataType="DT_WSTR" Length="500" />
      </OutputColumns>
      <InputColumns>
        <Column Name="author_id" DataType="DT_I8" />
        <Column Name="body" DataType="DT_NTEXT"  />
      </InputColumns>

    </EndPoint>

    <EndPoint Name="tp_attachment">
      <Params>
        <Param Name="EnableArrayFlattening" Value="True" Type="Property" Desc="Enables deep array flattening for selected filtered hierarchy. When you turn on this property it will flatten each property of each array item and expose as column (e.g. If you have array property called tags and value is ['red','blue','yellow'] and if you turn on array flatterning then may see columns tags.1, tags.2, tags.3... tags.N in the output. You can control how many array items you want to flatten by setting MaxArrayItemsToFlatten property." />
      </Params>
      <OutputColumns>
        <Column Name="id" DataType="DT_I8" />
        <Column Name="file_name" DataType="DT_WSTR" Length="255" />
        <Column Name="content_url" DataType="DT_WSTR"  Length="500"  />
        <Column Name="mapped_content_url" DataType="DT_WSTR" Length="500" />
        <Column Name="content_type" DataType="DT_WSTR" Length="255"  />
        <Column Name="size" DataType="DT_I4"  />
        <Column Name="width" DataType="DT_I4"  />
        <Column Name="height" DataType="DT_I4"  />
        <Column Name="inline" DataType="DT_BOOL"  />
        <Column Name="deleted" DataType="DT_BOOL"  />
        <Column Name="thumbnails" DataType="DT_WSTR" Length="4000"/>
      </OutputColumns>
    </EndPoint>


	<EndPoint Name="tp_user_base">
      <LayoutMap>
        <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<settings>
	<dataset id="root" readfrominput="True" />
	<map name="id" src="id"  /> 
	<map name="email" src="email"  />
	<map name="name" src="name"/>
	<map name="active" src="active"  />
	<map name="custom_role_id" src="custom_role_id"  />
	<map name="phone" src="phone"/>
	<map name="photo" src="photo" fragment="True" />
	<map name="remote_photo_url" src="remote_photo_url"/>
	<map name="notes" src="notes"/>
	<map name="organization_id" src="organization_id"/>
	<map name="skip_verify_email" src="skip_verify_email"/>	
	<map name="role" src="role"/>
	<map name="external_id" src="external_id"/>
	<map name="identities" src="identities"  fragment="True"/>
	<map name="alias" src="alias"/>
	<map name="default_group_id" src="default_group_id"/>
	<map name="details" src="details"/>
	<map name="locale" src="locale"/>
	<map name="locale_id" src="locale_id"/>
	<map name="moderator" src="moderator"/>
	<map name="only_private_comments" src="only_private_comments"/>

	<map name="restricted_agent" src="restricted_agent"/>
	<map name="shared_phone_number" src="shared_phone_number"/>
	<map name="signature" src="signature"/>
	<map name="suspended" src="suspended"/>
	<map name="tags" src="tags" fragment="True"/>
	<map name="ticket_restriction" src="ticket_restriction"/>
	<map name="time_zone" src="time_zone"/>
	<map name="verified" src="verified"/>
	<map name="user_fields" src="user_fields" fragment="True"/>		
</settings>]]>
      </LayoutMap>	
<!-- These are available columns for table write operations (i.e. Insert, Update, Upsert) -->
      <InputColumns>
        <Column Name="id" DataType="DT_I8"  Key="True" />
        <Column Name="name" DataType="DT_WSTR" Length="120" />
        <Column Name="email" DataType="DT_WSTR" Length="160" />
        <Column Name="alias" DataType="DT_WSTR" Length="255" />
        <Column Name="time_zone" DataType="DT_WSTR" Length="104" />
        <Column Name="phone" DataType="DT_WSTR" Length="80" />
        <Column Name="shared_phone_number" DataType="DT_BOOL" />
        <Column Name="photo_id" DataType="DT_WSTR" Length="1020" />
        <Column Name="locale_id" DataType="DT_I8" />
        <Column Name="locale" DataType="DT_WSTR" Length="20" />
        <Column Name="organization_id" DataType="DT_I8" />
		<Column Name="organization_name" DataType="DT_WSTR" Length="200"/>
        <Column Name="role" DataType="DT_WSTR" Length="100" Example="end-user or agent or admin"/>
        <Column Name="verified" DataType="DT_BOOL" />
        <Column Name="external_id" DataType="DT_WSTR" Length="500" />
        <Column Name="tags" DataType="DT_WSTR" Length="4000" Raw="True"/>

        <Column Name="signature" DataType="DT_WSTR" Length="4000" />
        <Column Name="details" DataType="DT_WSTR" Length="4000" />
        <Column Name="notes" DataType="DT_WSTR" Length="4000" />
		<Column Name="remote_photo_url" DataType="DT_WSTR" Length="4000" />
		
        <Column Name="custom_role_id" DataType="DT_I8" />
        <Column Name="moderator" DataType="DT_BOOL" />
		
        <Column Name="ticket_restriction" DataType="DT_WSTR" Length="80" Example="" />
        <Column Name="only_private_comments" DataType="DT_BOOL" />
        <Column Name="restricted_agent" DataType="DT_BOOL" />
        <Column Name="suspended" DataType="DT_BOOL" />
        <Column Name="default_group_id" DataType="DT_I8" />
        <Column Name="photo" DataType="DT_WSTR" Raw="True" />
		<Column Name="user_fields" DataType="DT_WSTR" Raw="True" Length="4000"/>
		<Column Name="identities" DataType="DT_WSTR" Raw="True" Length="4000"/>
      </InputColumns>	  
	</EndPoint>
	
    <EndPoint Name="tp_user" Template="tp_user_base" JsonRowFormat="Multicontent">
      <Params>
        <Param Name="EnableArrayFlattening" Value="True" Type="Property" Desc="Enables deep array flattening for selected filtered hierarchy. When you turn on this property it will flatten each property of each array item and expose as column (e.g. If you have array property called tags and value is ['red','blue','yellow'] and if you turn on array flatterning then may see columns tags.1, tags.2, tags.3... tags.N in the output. You can control how many array items you want to flatten by setting MaxArrayItemsToFlatten property." />
		<Param Name="ContineOn404Error" Type="Property" Value="True" />
      </Params>	  
      <OutputColumns>
        <Column Name="id" DataType="DT_I8" Key="True" />
        <Column Name="name" DataType="DT_WSTR" Length="255" />
        <Column Name="email" DataType="DT_WSTR" Length="500" />
		<Column Name="active" DataType="DT_BOOL" />
		<Column Name="role" DataType="DT_WSTR" Length="32" />
        <Column Name="created_at" DataType="DT_DBTIMESTAMP" />
        <Column Name="updated_at" DataType="DT_DBTIMESTAMP" />
        <Column Name="time_zone" DataType="DT_WSTR" Length="100" />
        <Column Name="iana_time_zone" DataType="DT_WSTR" Length="100" />
        <Column Name="phone" DataType="DT_WSTR" Length="100" />
		<Column Name="url" DataType="DT_WSTR" Length="500" />
        <Column Name="shared_phone_number" DataType="DT_BOOL" />
        <Column Name="locale_id" DataType="DT_I8" />
        <Column Name="locale" DataType="DT_WSTR" Length="20" />
        <Column Name="organization_id" DataType="DT_I8" />
        
        <Column Name="role_type" DataType="DT_I8" />
        <Column Name="verified" DataType="DT_BOOL" />
        <Column Name="external_id" DataType="DT_WSTR" Length="500" />
        <Column Name="tags" DataType="DT_WSTR" Length="1000" />
        <Column Name="tags.1" Label="tags_1" DataType="DT_WSTR" Length="50" />
        <Column Name="tags.2" Label="tags_2" DataType="DT_WSTR" Length="50" />
        <Column Name="tags.3" Label="tags_3" DataType="DT_WSTR" Length="50" />
        <Column Name="tags.4" Label="tags_4" DataType="DT_WSTR" Length="50" />
        <Column Name="tags.5" Label="tags_5" DataType="DT_WSTR" Length="50" />		
        <Column Name="alias" DataType="DT_WSTR" Length="255" />
        <Column Name="shared" DataType="DT_BOOL" />
        <Column Name="shared_agent" DataType="DT_BOOL" />
        <Column Name="last_login_at" DataType="DT_DBTIMESTAMP" />
        <Column Name="two_factor_auth_enabled" DataType="DT_BOOL" />
        <Column Name="signature" DataType="DT_WSTR" Length="80" />
        <Column Name="details" DataType="DT_WSTR" Length="4000" />
        <Column Name="notes" DataType="DT_WSTR" Length="4000" />
        
        <Column Name="custom_role_id" DataType="DT_I8" />
        <Column Name="moderator" DataType="DT_BOOL" />
        <Column Name="ticket_restriction" DataType="DT_WSTR" Length="80" />
        <Column Name="only_private_comments" DataType="DT_BOOL" />
        <Column Name="restricted_agent" DataType="DT_BOOL" />
        <Column Name="suspended" DataType="DT_BOOL" />
        <Column Name="default_group_id" DataType="DT_I8" />
        <Column Name="report_csv" DataType="DT_BOOL" />
        <Column Name="photo.url" Label="photo_url" DataType="DT_WSTR" Length="500" />
        <Column Name="photo.id" Label="photo_id" DataType="DT_I8" />
        <Column Name="photo.file_name" Label="photo_file_name" DataType="DT_WSTR" Length="148" />
        <Column Name="photo.content_url" Label="photo_content_url" DataType="DT_WSTR" Length="500" />
        <Column Name="photo.mapped_content_url" Label="photo_mapped_content_url" DataType="DT_WSTR" Length="500" />
        <Column Name="photo.content_type" Label="photo_content_type" DataType="DT_WSTR" Length="40" />
        <Column Name="photo.size" Label="photo_size" DataType="DT_I8" />
        <Column Name="photo.width" Label="photo_width" DataType="DT_I8" />
        <Column Name="photo.height" Label="photo_height" DataType="DT_I8" />
        <Column Name="photo.inline" Label="photo_inline" DataType="DT_BOOL" />
        <Column Name="photo.deleted" Label="photo_deleted" DataType="DT_BOOL" />
        <Column Name="photo.thumbnails" Label="photo_thumbnails" DataType="DT_WSTR" Length="4000" />
		<Column Name="user_fields.[$parent.key$]" 
			Label="user_field_dt_[$parent.key$]" 
			Expand="True" 
			DataEndPoint="get_user_fields" 
			DataEndPointParameters="Filter=$.user_fields[?(@type=='date')]"
			ColumnInfoMap="DataType=type"
			DataTypeMap="DT_DBTIMESTAMP=date"
			ValueTemplate="&lt;&lt;{$value$},FUN_TO_UTC_DATE&gt;&gt;"
		/>
		<Column Name="user_fields.[$parent.key$]" 
			Label="user_field_[$parent.key$]" 
			Expand="True" 
			DataEndPoint="get_user_fields" 
			DataEndPointParameters="Filter=$.user_fields[?(@type!='date')]"
		/>
      </OutputColumns>
      
    </EndPoint>

    <EndPoint Name="tp_user_bulk" Template="tp_user_base">

    </EndPoint>	
    
	<EndPoint Name="tp_organization_base">
  <LayoutMap>
        <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<settings>
	<dataset id="root" readfrominput="True" />
	<map name="id" src="id"  /> 
	<map name="name" src="name"/>
	<map name="notes" src="notes"/>	
	<map name="external_id" src="external_id"/>
	<map name="group_id" src="group_id"/>	
	<map name="details" src="details"/>
	<map name="tags" src="tags" fragment="True"/>
	<map name="organization_fields" src="organization_fields" fragment="True"/>
	<map name="domain_names" src="domain_names" fragment="True"/>
	<map name="shared_comments" src="shared_comments"/>
	<map name="shared_tickets" src="shared_tickets"/>
</settings>]]>
      </LayoutMap>		
      <!-- These are available columns for table write operations (i.e. Insert, Update, Upsert) -->
      <InputColumns>
        <Column Name="id" DataType="DT_I8" Key="True" />
        <Column Name="name" DataType="DT_WSTR" Length="500" />
        <Column Name="notes" DataType="DT_WSTR" Length="4000" />
        <Column Name="external_id" DataType="DT_WSTR" Length="500" />
        <Column Name="group_id" DataType="DT_I8" />
        <Column Name="details" DataType="DT_WSTR" Length="4000" />
		<Column Name="tags" DataType="DT_WSTR" Length="4000"  Raw="True" />
		<Column Name="organization_fields" DataType="DT_WSTR" Length="4000"  Raw="True" />
        <Column Name="domain_names" DataType="DT_WSTR" Length="1000" Raw="True" />
        <Column Name="shared_comments" DataType="DT_BOOL" />
        <Column Name="shared_tickets" DataType="DT_BOOL" />
      </InputColumns>	
	</EndPoint>
    <EndPoint Name="tp_organization" Template="tp_organization_base"  JsonRowFormat="Multicontent">
      <Params>
        <Param Name="EnableArrayFlattening" Value="True" Type="Property" Desc="Enables deep array flattening for selected filtered hierarchy. When you turn on this property it will flatten each property of each array item and expose as column (e.g. If you have array property called tags and value is ['red','blue','yellow'] and if you turn on array flatterning then may see columns tags.1, tags.2, tags.3... tags.N in the output. You can control how many array items you want to flatten by setting MaxArrayItemsToFlatten property." />
		<Param Name="ContineOn404Error" Type="Property" Value="True" />
      </Params>
      <OutputColumns>
        <Column Name="id" DataType="DT_I8" />
        <Column Name="name" DataType="DT_WSTR" Length="500" />
        <Column Name="notes" DataType="DT_WSTR" Length="4000" />
        <Column Name="created_at" DataType="DT_DBTIMESTAMP" />
        <Column Name="details" DataType="DT_WSTR" Length="4000" />
        <Column Name="domain_names" DataType="DT_WSTR" Length="144" />
        <Column Name="domain_names.1" Label="domain_names_1" DataType="DT_WSTR" Length="255" />
        <Column Name="domain_names.2" Label="domain_names_2" DataType="DT_WSTR" Length="255" />
        <Column Name="domain_names.3" Label="domain_names_3" DataType="DT_WSTR" Length="255" />

        <Column Name="external_id" DataType="DT_WSTR" Length="500" />
        <Column Name="group_id" DataType="DT_I8" />

        <Column Name="shared_comments" DataType="DT_BOOL" />
        <Column Name="shared_tickets" DataType="DT_BOOL" />
        <Column Name="tags" DataType="DT_WSTR" Length="144" />
        <Column Name="tags.1" Label="tags_1" DataType="DT_WSTR" Length="500" />
        <Column Name="tags.2" Label="tags_2" DataType="DT_WSTR" Length="500" />
        <Column Name="tags.3" Label="tags_3" DataType="DT_WSTR" Length="500" />
        <Column Name="tags.4" Label="tags_4" DataType="DT_WSTR" Length="500" />
        <Column Name="tags.5" Label="tags_5" DataType="DT_WSTR" Length="500" />
        <Column Name="updated_at" DataType="DT_DBTIMESTAMP" />
        <Column Name="url" DataType="DT_WSTR" Length="500" />
		<Column Name="organization_fields.[$parent.key$]" 
			Label="organization_field_dt_[$parent.key$]" 
			Expand="True" 
			DataEndPoint="get_organization_fields" 
			DataEndPointParameters="Filter=$.organization_fields[?(@type=='date')]"
			ColumnInfoMap="DataType=type"
			DataTypeMap="DT_DBTIMESTAMP=date"
			ValueTemplate="&lt;&lt;{$value$},FUN_TO_UTC_DATE&gt;&gt;"
		/>
		<Column Name="organization_fields.[$parent.key$]" 
			Label="organization_field_[$parent.key$]" 
			Expand="True" 
			DataEndPoint="get_organization_fields" 
			DataEndPointParameters="Filter=$.organization_fields[?(@type!='date')]"
			ColumnInfoMap="DataType=type"
			DataTypeMap="DT_I8=integer;DT_R8=decimal;"			
		/>		
      </OutputColumns>

    </EndPoint>
    <EndPoint Name="tp_organization_bulk" Template="tp_organization_base">

    </EndPoint>		
	
  </Template>
  
  <EndPoints>
    <EndPoint Group="Tickets" Name="get_tickets" Template="tp_ticket" Label="Read Tickets (All)" Desc="Get a list of all tickets in your account"
              Url="/tickets.json" Filter="$.tickets[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#list-tickets">
      <Params>
        <Param Name="sort_by" Label="Sort By" Type="Query" Desc="Sort By field" Options=";id;assignee;assignee.name;created_at;group;locale;requester;requester.name;status;subject;updated_at"/>
        <Param Name="sort_order" Label="Sort Order" Type="Query" Desc="Sort order" Options=";desc;asc"/>
        <Param Name="include" Label="Extra Columns to Include" Type="Query"  Options="Default=;comment_count=comment_count"/>
        <Param Name="external_id" Label="External ID for Ticket" Type="Query" />
		
	    <Param Name="NextUrlAttributeOrExpr" Value="$.links.next" Type="Property" />
		<Param Name="PageSize" Label="Records Per Page (Max 100)" Key="page[size]" Type="Query" Value="100" Hidden="True" />
        <Param Name="NextUrlEndIndicator" Type="Property" Value="false" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.meta.has_more" />		
      </Params>
    </EndPoint>

    <EndPoint Group="Tickets" Name="get_tickets_incr" Template="tp_ticket" Label="Read Tickets (Incremental) changed after a specified date" Desc="Get a list of tickets changed after a specified date/time. If you use this endpoint to read data and insert to destination like SSIS Upsert Destination (ZappySys Product) then make sure you do not select delete option on Upsert UI. Only choose Update + Insert for Incremental fetch."
              Url="/incremental/tickets/cursor.json" Filter="$.tickets[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/incremental_export">
      <Params>
        <Param Name="start_time" Template="t_start_time" />
		<Param Name="exclude_deleted" Template="t_exclude_deleted" />
		<Param Name="per_page" Template="t_per_page" />
		
        <Param Name="NextUrlAttributeOrExpr" Value="$.after_url" Type="Property" />		
        <Param Name="NextUrlEndIndicator" Type="Property" Value="true" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.end_of_stream" />
      </Params>
    </EndPoint>

    <EndPoint Group="Users" Name="get_users_incr" Template="tp_user" Label="Read Users (Incremental) changed after a specified date" Desc="Get a list of users changed after a specified date/time. If you use this endpoint to read data and insert to destination like SSIS Upsert Destination (ZappySys Product) then make sure you do not select delete option on Upsert UI. Only choose Update + Insert for Incremental fetch."
              Url="/incremental/users/cursor.json" Filter="$.users[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/incremental_export">
      <Params>
        <Param Name="start_time" Template="t_start_time" />
		<Param Name="exclude_deleted" Template="t_exclude_deleted" />
		<Param Name="per_page" Template="t_per_page" />		
		
        <Param Name="NextUrlAttributeOrExpr" Value="$.after_url" Type="Property" />		
        <Param Name="NextUrlEndIndicator" Type="Property" Value="true" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.end_of_stream" />
      </Params>
    </EndPoint>	
	
    <EndPoint Group="Organization" Name="get_organizations_incr" Template="tp_organization" Label="Read Organizations (Incremental) changed after a specified date" Desc="Get a list of organizations changed after a specified date/time. If you use this endpoint to read data and insert to destination like SSIS Upsert Destination (ZappySys Product) then make sure you do not select delete option on Upsert UI. Only choose Update + Insert for Incremental fetch."
              Url="/incremental/organizations.json" Filter="$.organizations[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/incremental_export">
      <Params>
        <Param Name="start_time" Template="t_start_time" />
		<Param Name="exclude_deleted" Template="t_exclude_deleted" />
		<Param Name="per_page" Template="t_per_page" />
		
        <Param Name="NextUrlEndIndicator" Type="Property" Value="true" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.end_of_stream" />
      </Params>
    </EndPoint>		
	
	
    <EndPoint Group="Tickets" Name="get_ticket_events_incr" Label="Read Ticket Events (Incremental) changed after a specified date" Desc="Returns a list of ticket events changed after a specified date/time. If you use this endpoint to read data and insert to destination like SSIS Upsert Destination (ZappySys Product) then make sure you do not select delete option on Upsert UI. Only choose Update + Insert for Incremental fetch."
              Url="/incremental/ticket_events.json" Filter="$.ticket_events[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/incremental_export">
      <Params>
        <Param Name="start_time" Template="t_start_time" />
		
        <Param Name="NextUrlEndIndicator" Type="Property" Value="true" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.end_of_stream" />
      </Params>
    </EndPoint>				

    <EndPoint Group="Tickets" Name="get_ticket_metric_events_incr" Label="Read Ticket Metric Events (Incremental) changed after a specified date" Desc="Get a list of Ticket Metric Events changed after a specified date/time. If you use this endpoint to read data and insert to destination like SSIS Upsert Destination (ZappySys Product) then make sure you do not select delete option on Upsert UI. Only choose Update + Insert for Incremental fetch."
              Url="/incremental/ticket_metric_events.json" Filter="$.ticket_metric_events[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/incremental_export">
      <Params>
        <Param Name="start_time" Template="t_start_time" />
		<Param Name="exclude_deleted" Template="t_exclude_deleted" />
		<Param Name="per_page" Template="t_per_page" />
		
        <Param Name="NextUrlEndIndicator" Type="Property" Value="true" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.end_of_stream" />
      </Params>
    </EndPoint>		
	

    <EndPoint Group="Tickets" Name="get_tickets_by_ids" Template="tp_ticket"
              RequestFormat="Csv" Label="Read Ticket(s) by ID" Desc="Get a list of all tickets in your account"
              Url="/tickets/show_many.json?ids=[$ticket_ids$]" BatchSize="100" Filter="$.tickets[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#show-ticket">
      <Params>
        <Param Name="ticket_ids"
               Label="Ticket ID(S) - Use Comma for multiple (e.g. 111,222)"
               Required="True"
               Functions="{$rows$}"
               OptionsEndPoint="get_tickets"
               OptionsEndPointValueColumn="id"
               MultiSelectSeparator=","
               MultiSelect="True"
               MultiSelectForPreview="True"
               MultiSelectLimit="100"
               IsKey="True"
               ReadAs="Id"
               DataType="DT_I4"
      />
      </Params>
      <LayoutMap>
        <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<settings>
  <dataset id="root" readfrominput="True" format="Csv"/>
    <map src="$$ticket_ids" name="$$ticket_ids" />    
</settings>]]>
      </LayoutMap>

      <InputColumns>
        <Column Name="$$ticket_ids" DataType="DT_WSTR" Length="2000" Example="111,222,333"/>
      </InputColumns>
    </EndPoint>

    <EndPoint Group="Tickets" Name="get_users_by_ids" Template="tp_user"
              RequestFormat="Csv" Label="Read User(s) by ID" Desc="Get a list of users in your account for specific id(s)"
              Url="/users/show_many.json?ids=[$user_ids$]" BatchSize="100" Filter="$.users[*]" HelpLink="https://developer.zendesk.com/api-reference/ticketing/users/users/#show-many-users">
      <Params>
        <Param Name="user_ids"
               Label="User ID(S) - Use Comma for multiple (e.g. 111,222)"
               Required="True"
               Functions="{$rows$}"
               OptionsEndPoint="get_users"
               OptionsEndPointNameColumn="email"
               OptionsEndPointValueColumn="id"
               MultiSelectSeparator=","
               MultiSelect="True"
               MultiSelectForPreview="True"
               MultiSelectLimit="100"
               IsKey="True"
               ReadAs="Id"
               DataType="DT_I4"
      />
      </Params>
      <LayoutMap>
        <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<settings>
  <dataset id="root" readfrominput="True" format="Csv"/>
    <map src="$$ticket_ids" name="$$ticket_ids" />    
</settings>]]>
      </LayoutMap>

      <InputColumns>
        <Column Name="$$user_ids" DataType="DT_WSTR" Length="2000" Example="111,222,333"/>
      </InputColumns>
    </EndPoint>

    <EndPoint Group="Tickets" Name="get_organizations_by_ids" Template="tp_organization"
              RequestFormat="Csv" Label="Read Organization(s) by ID" Desc="Get a list of organizations in your account for specific id(s)"
              Url="/organizations/show_many.json?ids=[$organization_ids$]" BatchSize="100" Filter="$.organizations[*]" HelpLink="https://developer.zendesk.com/api-reference/ticketing/organizations/organizations/#show-many-organizations">
      <Params>
        <Param Name="organization_ids"
               Label="Organization ID(S) - Use Comma for multiple (e.g. 111,222)"
               Required="True"
               Functions="{$rows$}"
               OptionsEndPoint="get_organizations"
               OptionsEndPointNameColumn="name"
               OptionsEndPointValueColumn="id"
               MultiSelectSeparator=","
               MultiSelect="True"
               MultiSelectForPreview="True"
               MultiSelectLimit="100"
               IsKey="True"
               ReadAs="Id"
               DataType="DT_I4"
      />
      </Params>
      <LayoutMap>
        <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<settings>
  <dataset id="root" readfrominput="True" format="Csv"/>
    <map src="$$ticket_ids" name="$$ticket_ids" />    
</settings>]]>
      </LayoutMap>

      <InputColumns>
        <Column Name="$$organization_ids" DataType="DT_WSTR" Length="2000" Example="111,222,333"/>
      </InputColumns>
    </EndPoint>

    <EndPoint Group="Tickets" Name="get_tickets_by_org" Template="tp_ticket" Label="Read Tickets for Organization" Desc="Get all tickets for specified organization_id"
              Url="/organizations/[$organization_id$]/tickets.json" Filter="$.tickets[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#list-tickets">
      <Params>
        <Param Name="organization_id" Label="Organization ID" Required="True"/>

	    <Param Name="NextUrlAttributeOrExpr" Value="$.links.next" Type="Property" />
		<Param Name="PageSize" Label="Records Per Page (Max 100)" Key="page[size]" Type="Query" Value="100" Hidden="True" />
        <Param Name="NextUrlEndIndicator" Type="Property" Value="false" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.meta.has_more" />		
      </Params>
    </EndPoint>

    <EndPoint Group="Tickets" Name="get_tickets_for_user_requested" Template="tp_ticket" Label="Read Tickets for User (Requested)" Desc="Get all requested tickets for specified user_id"
              Url="/users/[$user_id$]/tickets/requested.json" Filter="$.tickets[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#list-tickets">
      <Params>
        <Param Name="user_id" Label="User ID" Required="True"/>

	    <Param Name="NextUrlAttributeOrExpr" Value="$.links.next" Type="Property" />
		<Param Name="PageSize" Label="Records Per Page (Max 100)" Key="page[size]" Type="Query" Value="100" Hidden="True" />
        <Param Name="NextUrlEndIndicator" Type="Property" Value="false" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.meta.has_more" />		
      </Params>
    </EndPoint>
    <EndPoint Group="Tickets" Name="get_tickets_for_user_cced" Template="tp_ticket" Label="Read Tickets for User (CCed)" Desc="Get all CCed tickets for specified user_id"
              Url="/users/[$user_id$]/tickets/ccd.json" Filter="$.tickets[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#list-tickets">
      <Params>
        <Param Name="user_id" Label="User ID" Required="True"/>
		
	    <Param Name="NextUrlAttributeOrExpr" Value="$.links.next" Type="Property" />
		<Param Name="PageSize" Label="Records Per Page (Max 100)" Key="page[size]" Type="Query" Value="100" Hidden="True" />
        <Param Name="NextUrlEndIndicator" Type="Property" Value="false" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.meta.has_more" />		
      </Params>
    </EndPoint>
    <EndPoint Group="Tickets" Name="get_tickets_for_user_assigned" Template="tp_ticket" Label="Read Tickets for User (Assigned)" Desc="Get all assigned tickets for specified user_id"
              Url="/users/[$user_id$]/tickets/assigned.json" Filter="$.tickets[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#list-tickets">
      <Params>
        <Param Name="user_id" Label="User ID" Required="True"/>
		
	    <Param Name="NextUrlAttributeOrExpr" Value="$.links.next" Type="Property" />
		<Param Name="PageSize" Label="Records Per Page (Max 100)" Key="page[size]" Type="Query" Value="100" Hidden="True" />
        <Param Name="NextUrlEndIndicator" Type="Property" Value="false" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.meta.has_more" />		
      </Params>
    </EndPoint>
    <EndPoint Group="Tickets" Name="get_tickets_recent" Template="tp_ticket" Label="Read Tickets (Recent)" Desc="Get all recent tickets"
              Url="/tickets/recent.json" Filter="$.tickets[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#list-tickets">
    </EndPoint>

    <EndPoint Group="Tickets" Name="get_tickets_count" Template="tp_count" Label="Read Tickets Count (All)" Desc="Returns an approximate count of tickets in the account. If the count exceeds 100,000, it is updated every 24 hours. The count[refreshed_at] property is a timestamp that indicates when the count was last updated. Note: When the count exceeds 100,000, count[refreshed_at] may occasionally be null. This indicates that the count is being updated in the background, and count[value] is limited to 100,000 until the update is complete."
              Url="/tickets/count.json" Filter="$.count" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#count-tickets">

    </EndPoint>
    <EndPoint Group="Tickets" Name="get_tickets_count_org" Template="tp_count" Label="Read Tickets Count (for Organization)" Desc="Returns an approximate count of tickets for specified organization_id. If the count exceeds 100,000, it is updated every 24 hours. The count[refreshed_at] property is a timestamp that indicates when the count was last updated. Note: When the count exceeds 100,000, count[refreshed_at] may occasionally be null. This indicates that the count is being updated in the background, and count[value] is limited to 100,000 until the update is complete."
              Url="/organizations/[$organization_id$]/tickets/count.json" Filter="$.count" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#list-tickets">
      <Params>
        <Param Name="organization_id" Label="Organization ID" Required="True"/>
      </Params>
    </EndPoint>
    <EndPoint Group="Tickets" Name="get_ticket_metrics" Template="tp_ticket_metric" Label="Read Ticket Metrics" Desc="Returns a list of tickets with their metrics."
              Url="/ticket_metrics.json" Filter="$.ticket_metrics[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/ticket_metrics">
		<Params>
			<Param Name="NextUrlAttributeOrExpr" Value="$.links.next" Type="Property" />
			<Param Name="PageSize" Label="Records Per Page (Max 100)" Key="page[size]" Type="Query" Value="100" Hidden="True" />
			<Param Name="NextUrlEndIndicator" Type="Property" Value="false" />
			<Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.meta.has_more" />			
		</Params>
    </EndPoint>
	

    
    <EndPoint Group="Fields" Name="get_ticket_fields" Label="Read Ticket Fields" CachedTtl="120" Desc="Returns a list of all system and custom ticket fields in your account. For accounts without access to multiple ticket forms, positions can be changed using the Update Ticket Field endpoint or the Ticket Forms page in Zendesk Support (Admin > Manage > Ticket Forms). The Ticket Forms page shows the fields for the account. The order of the fields is used in the different products to show the field values in the tickets."
              Url="/ticket_fields.json" HelpLink="https://developer.zendesk.com/rest_api/docs/support/ticket_fields#list-ticket-fields">
      <Params>
        <Param Name="Filter" Type="Property" Value="$.ticket_fields[*]" Options="All fields=$.ticket_fields[*];System fields=$.ticket_fields[?(@removable==false)];Custom Fields=$.ticket_fields[?(@removable==true)]"/>
      </Params>
    </EndPoint>

    <EndPoint Group="Forms" Name="get_ticket_forms" Label="Read Ticket Forms" Desc="Returns a list of all ticket forms for your account if accessed as an admin or agent. End users only see ticket forms that have end_user_visible set to true."
              Url="/ticket_forms.json" Filter="$.ticket_forms[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/ticket_forms#list-ticket-forms">

    </EndPoint>

    <EndPoint Group="Comments" Name="get_ticket_comments" Template="tp_comment" Label="Read Ticket Comments" Desc="Returns comments for specified ticket ID."
              Url="/tickets/[$ticket_id$]/comments.json" Filter="$.comments[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/ticket_comments">
      <Params>
        <Param Name="ticket_id" Label="Ticket ID" Required="True"/>
        <Param Name="sort_order" Label="Sort Order" Type="Query" Desc="Sort order" Options=";desc;asc"/>
        <Param Name="include_inline_images" Label="Include inline images" Type="Query" Desc="Default is false. When true, inline images are also listed as attachments in the response" Options=";false;true"/>
      </Params>
    </EndPoint>
    <EndPoint Group="Tickets" Name="get_ticket_attachments" Template="tp_attachment" IncludeParentColumns="True" Label="Read Ticket Attachments" Desc="Returns attachments for the specified Ticket ID."
              Url="/tickets/[$ticket_id$]/comments.json" Filter="$.comments[*].attachments[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/ticket_comments">
      <Params>
        <Param Name="ticket_id" Label="Ticket ID" Required="True"/>
        <Param Name="sort_order" Label="Sort Order" Type="Query" Desc="Sort order" Options=";desc;asc"/>
        <Param Name="include_inline_images" Label="Include inline images" Type="Query" Desc="Default is false. When true, inline images are also listed as attachments in the response" Options=";false;true"/>
      </Params>
      <OutputColumns>
        <Column Label="comment_id"  Name="P_comments_id" DataType="DT_I8" />
      </OutputColumns>
    </EndPoint>

    <EndPoint Group="Activities" Name="get_ticket_activity_stream" Label="Read Ticket ActivityStream" Template="tp_paginate_cursor"  Desc="Lists ticket activities in the last 30 days affecting the agent making the request. The Ticket Activities API returns ticket activities by other people affecting the agent making the API request. Ticket activities include assigning a ticket to the agent, increasing the priority of a ticket assigned to the agent, or adding a comment to a ticket assigned to the agent. A possible use case for the API is building a personalized notification service for agents."
              Url="/activities.json" Filter="$.activities[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/activity_stream">
      <Params>
        <Param Name="since" Type="Query" Label="Since (ISO e.g. 2013-04-03T16:02:46Z)" Desc="return the activities since a specific date. The since parameter takes a UTC time in the ISO 8601 format. Example: '2013-04-03T16:02:46Z'." />
      </Params>
    </EndPoint>

    <EndPoint Group="Activities" Name="get_ticket_activity_info" Label="Read Ticket ActivityStream Details" Desc="Lists ticket activity details."
              Url="/activities/[$activity_id$].json" Filter="$.activities[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/activity_stream">
      <Params>
        <Param Name="activity_id" Required="True" />
      </Params>
    </EndPoint>

    <EndPoint Group="Search" Name="get_search" Label="Search Records - WITH Sorting and Extra Columns (Max 1000 rows)" Desc="Search for ticket, user, organization, or group for specified search criteria. Returns max 1000 records based on search criteria (i.e. query) you specify"
              Url="/search.json" Filter="$.results[*]"
              HelpLink="https://developer.zendesk.com/rest_api/docs/support/search" MaxRows="1000">
      <Params>
        <Param Name="query" Template="t_query" />
        <Param Name="sort_by" Label="Sort By" Desc="" Type="Query" Options=";updated_at;created_at;priority;status;ticket_type" />
        <Param Name="sort_order" Label="Sort Order" Desc="" Type="Query" Options=";desc;asc" />
        <Param Name="include" Label="Extra Columns to Include" Desc="You can list email CCs by side-loading users." Type="Query"  Options="Default=;users=users"/>
      </Params>
    </EndPoint>

    <EndPoint Group="Search" Name="get_search_export" Label="Search Records - NO Sorting (Allows more than 1000 rows)" Desc="Search for ticket, user, organization, or group for specified search criteria. Sorting not allowed but you can get more than 1000 records unlike other endpoint for search which supports max 1000 rows but allows sorting if needed."
              Url="/search/export.json" Filter="$.results[*]"
			  Template="tp_paginate_cursor"
              HelpLink="https://developer.zendesk.com/api-reference/ticketing/ticket-management/search/#export-search-results">
      <Params>
		<Param Name="FilterType" Label="Filter Type" Key="filter[type]" Type="Query" Options=";ticket;organization;user;group" Value="ticket"/>
        <Param Name="query" Template="t_query" />
      </Params>
    </EndPoint>

    <EndPoint Group="Organizations" Name="get_organizations_count" Template="tp_count" Label="Read Organization Count" Desc="Get organizations count."
              Url="/organizations/count.json" Filter="$.count" HelpLink="https://developer.zendesk.com/rest_api/docs/support/organizations#list-organizations">
    </EndPoint>
    <EndPoint Group="Organizations" Name="get_organization_fields" Label="Read Organization Fields" Desc="Returns a list of custom Organization Fields in your account. Fields are returned in the order that you specify in your Organization Fields configuration in Zendesk Support. Clients should cache this resource for the duration of their API usage and map the key for each Organization Field to the values returned under the organization_fields attribute on the Organization resource."
              Url="/organization_fields.json" Filter="$.organization_fields[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/organization_fields#list-organization-fields">

    </EndPoint>

    <EndPoint Group="Tags" Name="get_tags" Label="Read Tags" CachedTtl="60" Desc="Lists the 500 most popular tags in the last 60 days, in decreasing popularity. You must enable the tagging of users and organizations in Zendesk Support for the API calls to work. Select Manage > Settings > Customers, and enable the option."
              Url="/tags.json" Filter="$.tags[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tags">
    </EndPoint>

    <EndPoint Group="Groups" Name="get_groups" CachedTtl="60" Label="Read Groups" Desc="Get information about groups."
              Url="/groups.json" Filter="$.groups[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/groups">
    </EndPoint>

    <EndPoint Group="Users" Name="get_user_fields" 
		CachedTtl="60"
		Label="Read User Fields" Desc="Returns a list of custom User Fields in your account. Fields are returned in the order that you specify in your User Fields configuration in Zendesk Support. Clients should cache this resource for the duration of their API usage and map the key for each User Field to the values returned under the user_fields attribute on the User resource."
              Url="/user_fields.json" Filter="$.user_fields[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/user_fields#list-user-fields">

		<Params>
			<Param Name="Filter" Value="$.user_fields[*]" Options="all fields=$.user_fields[*];date fields=$.user_fields[?(@type=='date')]"/>			
		</Params>
	</EndPoint>

    <EndPoint Group="Users" Name="get_me" Label="Read Current User Info" Desc="Get information for current profile based on credentials you have used."
              Url="/users/me.json" Filter="$.user" HelpLink="https://developer.zendesk.com/rest_api/docs/support/users#show-the-current-user">

    </EndPoint>
    <EndPoint Group="Brands" Name="get_brands" Label="Read Brands" Desc="Get information about brands."
              Url="/brands.json" Filter="$.brands[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/brands">
    </EndPoint>
    <EndPoint Group="Views" Name="get_views" Label="Read Views" Desc="Get information about views."
              Url="/views.json" Filter="$.views[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/views">
    </EndPoint>
    <EndPoint Group="Macros" Name="get_macros" Label="Read Macros" Desc="Get information about macros."
              Url="/macros.json" Filter="$.macros[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/macros">
    </EndPoint>
    <EndPoint Group="Sessions" Name="get_sessions" Label="Read Sessions" Desc="Get information about Sessions." Template="tp_paginate_cursor"
              Url="/sessions.json" Filter="$.sessions[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/sessions">
    </EndPoint>
    <EndPoint Group="Sessions" Name="get_user_sessions" Label="Read User Sessions" Desc="Get information about user sessions."
              Url="/users/[$user_id$]/sessions.json" Filter="$.sessions[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/Sessions">
      <Params>
        <Param Name="user_id" Required="True" />
      </Params>
    </EndPoint>

    <EndPoint Group="Requests" Name="get_requests" Label="Read Requests" Desc="Returns a list of requests." Template="tp_paginate_cursor"
              Url="/requests.json" Filter="$.requests[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/requests#list-requests">
      <Params>
        <Param Name="sort_by" Label="Sort By" Type="Query" Desc="Sort By field" Options=";updated_at;created_at"/>
        <Param Name="sort_order" Label="Sort Order" Type="Query" Desc="Sort order" Options=";desc;asc"/>
        <Param Name="status" Label="Status" Type="Query" MultiSelect="True" Desc="Sort order" Options=";new;open;pending;solved;closed"/>
      </Params>
    </EndPoint>

    <EndPoint Group="Requests" Name="get_requests_search" Label="Read Requests Search" Desc="Returns a requests using search criteria."
              Url="/requests/search.json" Filter="$.requests[*]" HelpLink="https://developer.zendesk.com/rest_api/docs/support/requests#list-requests">
      <Params>
        <Param Name="sort_by" Label="Sort By" Type="Query" Desc="Sort By field" Options=";updated_at;created_at"/>
        <Param Name="sort_order" Label="Sort Order" Type="Query" Desc="Sort order" Options=";desc;asc"/>
        <Param Name="query" Template="t_query" />
        <Param Name="status" Label="Status" Type="Query" MultiSelect="True" Desc="Sort order" Options=";new;open;pending;solved;closed"/>
        <Param Name="organization_id" Type="Query"/>
        <Param Name="cc_id" Type="Query"/>

      </Params>
    </EndPoint>

    <EndPoint Group="Attachments" Name="get_attachment" Method="GET" Label="Read Attachment" Desc="Read attachment information"
                 Url="attachments/[$attachment_id$].json" Filter="" HelpLink="https://developer.zendesk.com/rest_api/docs/support/attachments#show-attachment">
      <Params>
        <Param Name="attachment_id" Required="True" Label="Attachment ID" />
        <Param Name="EnableArrayFlattening" Value="True" Type="Property" />
      </Params>
      <OutputColumns>

        <Column Name="attachment.id" Label="attachment_id" DataType="DT_I8" />
        <Column Name="attachment.file_name" Label="attachment_file_name" DataType="DT_WSTR" Length="255" />
        <Column Name="attachment.content_url" Label="attachment_content_url" DataType="DT_WSTR" Length="500" />
        <Column Name="attachment.url" Label="attachment_url" DataType="DT_WSTR" Length="500" />
        <Column Name="attachment.content_type" Label="attachment_content_type" DataType="DT_WSTR" Length="100" />
        <Column Name="attachment.size" Label="attachment_size" DataType="DT_I8" />
        <Column Name="attachment.height" Label="attachment_height" DataType="DT_I4" />
        <Column Name="attachment.width" Label="attachment_width" DataType="DT_I4" />
        <Column Name="attachment.deleted" Label="attachment_deleted" DataType="DT_BOOL" />
        <Column Name="attachment.inline" Label="attachment_inline" DataType="DT_BOOL" />

        <Column Name="attachment.thumbnails.1.id" Label="attachment_thumbnail_id" DataType="DT_I8" />
        <Column Name="attachment.thumbnails.1.file_name" Label="attachment_thumbnail_file_name" DataType="DT_WSTR" Length="255" />
        <Column Name="attachment.thumbnails.1.content_url" Label="attachment_thumbnail_content_url" DataType="DT_WSTR" Length="500" />
        <Column Name="attachment.thumbnails.1.url" Label="attachment_thumbnail_url" DataType="DT_WSTR" Length="500" />
        <Column Name="attachment.thumbnails.1.content_type" Label="attachment_thumbnail_content_type" DataType="DT_WSTR" Length="100" />
        <Column Name="attachment.thumbnails.1.size" Label="attachment_thumbnail_size" DataType="DT_I8" />
        <Column Name="attachment.thumbnails.1.height" Label="attachment_thumbnail_height" DataType="DT_I4" />
        <Column Name="attachment.thumbnails.1.width" Label="attachment_thumbnail_width" DataType="DT_I4" />
        <Column Name="attachment.thumbnails.1.deleted" Label="attachment_thumbnail_deleted" DataType="DT_BOOL" />
        <Column Name="attachment.thumbnails.1.inline" Label="attachment_thumbnail_inline" DataType="DT_BOOL" />

      </OutputColumns>
    </EndPoint>

    <EndPoint Group="Attachments" Name="delete_attachment" Method="DELETE" Label="Delete Attachment" Desc="Delete attachment"
                 Url="attachments/[$attachment_id$].json" Filter="" HelpLink="https://developer.zendesk.com/rest_api/docs/support/attachments#delete-attachment">
      <Params>
        <Param Name="attachment_id" Required="True" Label="Attachment ID" />
        <Param Name="EnableArrayFlattening" Value="True" Type="Property" />
      </Params>
      <OutputColumns>
        <Column Name="attachment.id" Label="attachment_id" DataType="DT_I8" />
      </OutputColumns>
    </EndPoint>

    <EndPoint Group="Attachments" Name="post_attachment" Method="POST" Label="Upload Attachment (Single file)" Desc="Upload files to Zendesk which can be used as attachment later."
                 Url="uploads.json" Body="@[$path$]" IsMultiPart="True" Filter="" HelpLink="https://developer.zendesk.com/rest_api/docs/support/attachments#upload-files">
      <Params>
        <Param Name="filename" Required="True" Label="File Name" Type="Query" Desc="File name for display purpose" />
        <Param Name="path" Required="True" Label="File Path (Local)" />
        <Param Name="token" Label="Token for exising Upload Session" Type="Query" Desc="Blank if creating a new upload" />
        <Param Name="EnableArrayFlattening" Value="True" Type="Property" />
      </Params>
      <OutputColumns>
        <Column Name="upload.token" Label="token" DataType="DT_WSTR" Length="100"  />
        <Column Name="upload.expires_at" Label="expires_at" DataType="DT_DBTIMESTAMP" />

        <Column Name="upload.attachment.id" Label="attachment_id" DataType="DT_I8" />
        <Column Name="upload.attachment.file_name" Label="attachment_file_name" DataType="DT_WSTR" Length="255" />
        <Column Name="upload.attachment.content_url" Label="attachment_content_url" DataType="DT_WSTR" Length="500" />
        <Column Name="upload.attachment.url" Label="attachment_url" DataType="DT_WSTR" Length="500" />
        <Column Name="upload.attachment.content_type" Label="attachment_content_type" DataType="DT_WSTR" Length="100" />
        <Column Name="upload.attachment.size" Label="attachment_size" DataType="DT_I8" />
        <Column Name="upload.attachment.height" Label="attachment_height" DataType="DT_I4" />
        <Column Name="upload.attachment.width" Label="attachment_width" DataType="DT_I4" />
        <Column Name="upload.attachment.deleted" Label="attachment_deleted" DataType="DT_BOOL" />
        <Column Name="upload.attachment.inline" Label="attachment_inline" DataType="DT_BOOL" />

        <Column Name="upload.attachment.thumbnails.1.id" Label="attachment_thumbnail_id" DataType="DT_I8" />
        <Column Name="upload.attachment.thumbnails.1.file_name" Label="attachment_thumbnail_file_name" DataType="DT_WSTR" Length="255" />
        <Column Name="upload.attachment.thumbnails.1.content_url" Label="attachment_thumbnail_content_url" DataType="DT_WSTR" Length="500" />
        <Column Name="upload.attachment.thumbnails.1.url" Label="attachment_thumbnail_url" DataType="DT_WSTR" Length="500" />
        <Column Name="upload.attachment.thumbnails.1.content_type" Label="attachment_thumbnail_content_type" DataType="DT_WSTR" Length="100" />
        <Column Name="upload.attachment.thumbnails.1.size" Label="attachment_thumbnail_size" DataType="DT_I8" />
        <Column Name="upload.attachment.thumbnails.1.height" Label="attachment_thumbnail_height" DataType="DT_I4" />
        <Column Name="upload.attachment.thumbnails.1.width" Label="attachment_thumbnail_width" DataType="DT_I4" />
        <Column Name="upload.attachment.thumbnails.1.deleted" Label="attachment_thumbnail_deleted" DataType="DT_BOOL" />
        <Column Name="upload.attachment.thumbnails.1.inline" Label="attachment_thumbnail_inline" DataType="DT_BOOL" />
      </OutputColumns>
    </EndPoint>

    <EndPoint Group="Attachments" Name="delete_upload" Method="DELETE" Label="Delete Upload Session" Desc="Delete upload session and all its attachments."
                 Url="uploads/[$token$].json" Filter="" HelpLink="https://developer.zendesk.com/rest_api/docs/support/attachments#delete-upload">
      <Params>
        <Param Name="token" Required="True" Label="Token for exising upload"/>
      </Params>
      <OutputColumns>
        <Column Name="Response" DataType="DT_WSTR" Length="10"  />
      </OutputColumns>
    </EndPoint>

    <EndPoint Group="Tickets"
              Template="tp_ticket" Name="post_ticket"
              ContentType="application/json"
              Method="POST"
              JsonRowFormat="Multicontent"
              Label="Create Ticket (Single)" Desc="Creates one ticket at a time and wait until its created. Use BULK Table instead of this one to create multiple tickets."
              Url="/tickets.json"
              Filter="$.ticket" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#create-ticket"
              >

      <Body><![CDATA[{"ticket" : {$rows$} }]]></Body>
      <LayoutMap>
        <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<settings>
  <dataset id="root" readfrominput="True" />
    <map src="subject" name="subject" />  
    <map name="comment">
      <map src="comment_body" name="body" />
	  <map src="comment_body_html" name="html_body" />
	  <map src="comment_author_id" name="author_id" />
      <map src="comment_public" name="public" />
    </map>  
    <map name="requester">
      <map src="requester_name" name="name" />
      <map src="requester_email" name="email" />
    </map>
    <map src="priority" name="priority" />
    <map src="status" name="status" />
    <map src="requester_id" name="requester_id" />
    <map src="submitter_id" name="submitter_id" />
    <map src="assignee_id" name="assignee_id" />
    <map src="organization_id" name="organization_id" />
    <map src="group_id" name="group_id" />
    <map src="external_id" name="external_id" />
    <map src="type" name="type" />
    <map src="collaborator_ids" name="collaborator_ids" fragment="True" />
    <map src="follower_ids" name="follower_ids" fragment="True" />
    <map src="email_cc_ids" name="email_cc_ids" fragment="True" />
    <map src="forum_topic_id" name="forum_topic_id" />
    <map src="problem_id" name="problem_id" />
    <map src="is_public" name="is_public" />
    <map src="due_at" name="due_at" />
    <map src="tags" name="tags" fragment="True" />
    <map src="custom_fields" name="custom_fields" fragment="True" />    
</settings>]]>
      </LayoutMap>
    </EndPoint>

    <EndPoint Group="Tickets" Template="tp_ticket_bulk" Name="post_tickets" Method="POST" Label="Create Tickets (Bulk)" Desc="Create tickets in bulk (job is queued) and wait until done. This is faster than one request at a time"
              Url="/tickets/create_many.json" ContentType="application/json" BatchSize="100" Filter="$.job_status" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#create-many-tickets">

      <Body><![CDATA[{"tickets" : {$rows$} }]]></Body>
      <LayoutMap>
        <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<settings>
  <dataset id="root" readfrominput="True" />
    <map src="subject" name="subject" />  
    <map name="comment">
      <map src="comment_body" name="body" />
	  <map src="comment_body_html" name="html_body" />
	  <map src="comment_author_id" name="author_id" />
      <map src="comment_public" name="public" />
    </map>  

    <map src="priority" name="priority" />
    <map src="status" name="status" />
    <map src="requester_id" name="requester_id" />
    <map src="submitter_id" name="submitter_id" />
    <map src="assignee_id" name="assignee_id" />
    <map src="organization_id" name="organization_id" />
    <map src="group_id" name="group_id" />
    <map src="external_id" name="external_id" />
    <map src="type" name="type" />
    <map src="collaborator_ids" name="collaborator_ids" fragment="True" />
    <map src="follower_ids" name="follower_ids" fragment="True" />
    <map src="email_cc_ids" name="email_cc_ids" fragment="True" />
    <map src="forum_topic_id" name="forum_topic_id" />
    <map src="problem_id" name="problem_id" />
    <map src="is_public" name="is_public" />
    <map src="due_at" name="due_at" />
    <map src="tags" name="tags" fragment="True" />
    <map src="custom_fields" name="custom_fields" fragment="True" />    
</settings>]]>
      </LayoutMap>

      <EndPoint Url="[$parent.url$]" Method="GET" Filter="$.job_status.results[*]" IncludeParentColumns="True">
        <Params>
          <Param Name="EnableStatusCheck" Type="Property" Value="true" />
          <Param Name="StatusCheckIterationWaitSeconds" Type="Property" Value="4" />
          <Param Name="StatusCheckMaxWaitSeconds" Type="Property" Value="200" />
          <Param Name="StatusContinueValue" Type="Property" Value="queued|working" />
          <Param Name="StatusSuccessValue" Type="Property" Value="completed|failed|killed" />
        </Params>
      </EndPoint>

      <OutputColumns>
        <Column Name="P_job_status_id" Label="job_id" DataType="DT_WSTR" Length="100"/>
        <Column Name="P_job_status_message" Label="message" DataType="DT_WSTR" Length="2000"/>

        <Column Name="P_job_status_total" Label="total" DataType="DT_I4" />
        <Column Name="P_job_status_status" Label="status" DataType="DT_WSTR" Length="50" />
        <Column Name="P_job_status_url" Label="url" DataType="DT_WSTR" Length="500" />

        <Column Name="account_id" DataType="DT_I8" />
        <Column Name="id" Label="ticket_id" DataType="DT_I8" />
        <Column Name="index" DataType="DT_I4" />
      </OutputColumns>
    </EndPoint>

    <EndPoint Group="Tickets" Name="delete_tickets"
              Method="DELETE"
              RequestFormat="Csv"

              Label="Delete Tickets (Bulk)" Desc="Delete multiple tickets in a single request. This is faster than row by row operation."
              Url="/tickets/destroy_many.json?ids=[$ticket_ids$]"
              JsonRowFormat="Multicontent"
              BatchSize="100"
              Filter="$.job_status" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#bulk-delete-tickets">

      <Params>
        <Param Name="ticket_ids"
               Label="Ticket ID(S) - Use Comma for multiple (e.g. 111,222)"
               Required="True"
               Functions="{$rows$}"
               IsKey="True"
               ReadAs="Id"
        />
      </Params>

      <LayoutMap>
        <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<settings>
  <dataset id="root" readfrominput="True"/>
    <map src="$$ticket_ids" name="$$ticket_ids" /> 
</settings>]]>
      </LayoutMap>

      <EndPoint Url="[$parent.url$]" Method="GET" Filter="$.job_status.results[*]" IncludeParentColumns="True">
        <Params>
          <Param Name="EnableStatusCheck" Type="Property" Value="true" />
          <Param Name="StatusCheckIterationWaitSeconds" Type="Property" Value="4" />
          <Param Name="StatusCheckMaxWaitSeconds" Type="Property" Value="200" />
          <Param Name="StatusContinueValue" Type="Property" Value="queued|working" />
          <Param Name="StatusSuccessValue" Type="Property" Value="completed|failed|killed" />
        </Params>
      </EndPoint>

      <InputColumns>
        <Column Name="$$ticket_ids" DataType="DT_WSTR" Length="2000" Key="True" Example="111,222,333" />
      </InputColumns>
      <OutputColumns>
        <Column Name="P_job_status_id" Label="job_id" DataType="DT_WSTR" Length="100"/>
        <Column Name="P_job_status_message" Label="message" DataType="DT_WSTR" Length="2000"/>

        <Column Name="P_job_status_total" Label="total" DataType="DT_I4" />
        <Column Name="P_job_status_status" Label="job_status" DataType="DT_WSTR" Length="50" />
        <Column Name="P_job_status_url" Label="url" DataType="DT_WSTR" Length="500" />

        <Column Name="title" DataType="DT_WSTR" Length="255" />
        <Column Name="errors" DataType="DT_WSTR" Length="1000" />
        <Column Name="id" Label="ticket_id" DataType="DT_I8" />
        <Column Name="status" DataType="DT_WSTR" Length="50" />
        <Column Name="success" DataType="DT_BOOL" />
      </OutputColumns>

    </EndPoint>

    <EndPoint Group="Tickets" Template="tp_ticket_bulk" Name="put_tickets" Method="PUT"
              Label="Update Tickets (Bulk)"
              Desc="Update tickets in bulk (job is queued) and wait until done. This is faster than one request at a time"
              Url="/tickets/update_many.json"
              ContentType="application/json" BatchSize="100"
              Filter="$.job_status"
              HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#update-many-tickets">

      <Body><![CDATA[{"tickets" : {$rows$} }]]></Body>
      <LayoutMap>
        <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<settings>
  <dataset id="root" readfrominput="True" />
    <map src="id" name="id" /> 
    <map src="subject" name="subject" />  
    <map name="comment">
      <map src="comment_body" name="body" />
	  <map src="comment_body_html" name="html_body" />
	  <map src="comment_author_id" name="author_id" />
      <map src="comment_public" name="public" />
    </map>  	
    <map src="priority" name="priority" />
    <map src="status" name="status" />
    <map src="requester_id" name="requester_id" />
    <map src="submitter_id" name="submitter_id" />
    <map src="assignee_id" name="assignee_id" />
    <map src="organization_id" name="organization_id" />
    <map src="group_id" name="group_id" />
    <map src="external_id" name="external_id" />
    <map src="type" name="type" />
    <map src="collaborator_ids" name="collaborator_ids" fragment="True" />
    <map src="follower_ids" name="follower_ids" fragment="True" />
    <map src="email_cc_ids" name="email_cc_ids" fragment="True" />
    <map src="forum_topic_id" name="forum_topic_id" />
    <map src="problem_id" name="problem_id" />
    <map src="is_public" name="is_public" />
    <map src="due_at" name="due_at" />
    <map src="tags" name="tags" fragment="True" />
    <map src="additional_tags" name="additional_tags" fragment="True" />
    <map src="remove_tags" name="remove_tags" fragment="True" />
    <map src="custom_fields" name="custom_fields" fragment="True" />        
    <map src="allow_attachments" name="allow_attachments" /> 
    <map src="allow_channelback" name="allow_channelback" />

</settings>]]>
      </LayoutMap>

      <EndPoint Url="[$parent.url$]" Method="GET" Filter="$.job_status.results[*]" IncludeParentColumns="True">
        <Params>
          <Param Name="EnableStatusCheck" Type="Property" Value="true" />
          <Param Name="StatusCheckIterationWaitSeconds" Type="Property" Value="4" />
          <Param Name="StatusCheckMaxWaitSeconds" Type="Property" Value="200" />
          <Param Name="StatusContinueValue" Type="Property" Value="queued|working" />
          <Param Name="StatusSuccessValue" Type="Property" Value="completed|failed|killed" />
        </Params>
      </EndPoint>

      <InputColumns>
        <Column Name="id" DataType="DT_I8" Key="True" Order="-1" />
      </InputColumns>
      <OutputColumns>
        <Column Name="P_job_status_id" Label="job_id" DataType="DT_WSTR" Length="100"/>
        <Column Name="P_job_status_message" Label="message" DataType="DT_WSTR" Length="2000"/>

        <Column Name="P_job_status_total" Label="total" DataType="DT_I4" />
        <Column Name="P_job_status_status" Label="job_status" DataType="DT_WSTR" Length="50" />
        <Column Name="P_job_status_url" Label="url" DataType="DT_WSTR" Length="500" />

        <Column Name="index" DataType="DT_I4" />
        <Column Name="error" DataType="DT_WSTR" Length="1000" />
        <Column Name="details" DataType="DT_WSTR" Length="4000" />
        <Column Name="id" Label="ticket_id" DataType="DT_I8" />
        <Column Name="status" DataType="DT_WSTR" Length="50" />
        <Column Name="success" DataType="DT_BOOL" />
      </OutputColumns>
    </EndPoint>

    <EndPoint Group="Tickets" Template="tp_ticket" Name="put_ticket" Method="PUT"
              Label="Update Ticket (Single)"
              Desc="Update single ticket. Use bulk operation if you pfrefer to update multiple tickets. If you like to set additional_tags or remove_tags then use BULK Table (Tickets)"
              Url="/tickets/[$id$].json"
              ContentType="application/json"
              JsonRowFormat="Multicontent"
              HelpLink="https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/#update-ticket"
              Filter="$.ticket">

      <Body><![CDATA[{"ticket" : {$rows$} }]]></Body>
      <LayoutMap>
        <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<settings>
  <dataset id="root" readfrominput="True" />
    <map src="subject" name="subject" />  
    <map name="comment">
      <map src="comment_body" name="body" />
	  <map src="comment_body_html" name="html_body" />
	  <map src="comment_author_id" name="author_id" />
      <map src="comment_public" name="public" />
    </map>  		
    <map src="priority" name="priority" />
    <map src="status" name="status" />
    <map src="requester_id" name="requester_id" />
    <map src="submitter_id" name="submitter_id" />
    <map src="assignee_id" name="assignee_id" />
    <map src="organization_id" name="organization_id" />
    <map src="group_id" name="group_id" />
    <map src="external_id" name="external_id" />
    <map src="type" name="type" />
    <map src="collaborator_ids" name="collaborator_ids" fragment="True" />
    <map src="follower_ids" name="follower_ids" fragment="True" />
    <map src="email_cc_ids" name="email_cc_ids" fragment="True" />
    <map src="forum_topic_id" name="forum_topic_id" />
    <map src="problem_id" name="problem_id" />
    <map src="is_public" name="is_public" />
    <map src="due_at" name="due_at" />
    <map src="tags" name="tags" fragment="True" />
    <map src="additional_tags" name="additional_tags" fragment="True" />
    <map src="remove_tags" name="remove_tags" fragment="True" />
    <map src="custom_fields" name="custom_fields" fragment="True" />        
    <map src="allow_attachments" name="allow_attachments" /> 
    <map src="allow_channelback" name="allow_channelback" />

	
</settings>]]>
      </LayoutMap>

      <Params>
        <Param Name="id" Label="Ticket ID to Update" Required="True"/>
      </Params>
      <InputColumns>
        <Column Name="id" DataType="DT_I8" Key="True" MapToParam="True" Order="-1" />
      </InputColumns>
    </EndPoint>

    <EndPoint Group="Tickets" Name="delete_ticket" Method="DELETE" Label="Delete Ticket" Desc="Delete ticket by id."
             Url="tickets/[$id$].json" Filter="" HelpLink="https://developer.zendesk.com/rest_api/docs/support/tickets#delete-ticket">
      <Params>
        <Param Name="id" Label="Ticket ID for Delete" Required="True"/>
        <Param Name="RawOutputDataRowTemplate" Type="Property" Value="{Response:'Deleted'}" />
        <Param Name="EnableRawOutputModeSingleRow" Type="Property" Value="True" />                                      
        
      </Params>
      <OutputColumns>
        <Column Name="Response" DataType="DT_WSTR" Length="10"  />
      </OutputColumns>
      <InputColumns>
        <Column Name="id" DataType="DT_I8" Key="True" MapToParam="True"  Order="-1"  />
      </InputColumns>
    </EndPoint>

    <EndPoint Group="Users" Name="get_users" Template="tp_user" Label="Read Users (All)" Desc="Get a list of all users in your account"
              Url="/users.json" Filter="$.users[*]" HelpLink="https://developer.zendesk.com/api-reference/ticketing/users/users/#list-users">
      <Params>
        <Param Name="role" Label="Role" Options=";agent;admin;end-user"/>
        <Param Name="permission_set" Type="Query"  />
        <Param Name="external_id" Label="External ID for Ticket" Type="Query" />
		
	    <Param Name="NextUrlAttributeOrExpr" Value="$.links.next" Type="Property" />
		<Param Name="PageSize" Label="Records Per Page (Max 100)" Key="page[size]" Type="Query" Value="100" Hidden="True" />
        <Param Name="NextUrlEndIndicator" Type="Property" Value="false" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.meta.has_more" />		
      </Params>
    </EndPoint>
    <EndPoint Group="Organizations" Name="get_organizations" Template="tp_organization" Label="Read Organizations (All)" Desc="Get a list of all organizations in your account"
              Url="/organizations.json" Filter="$.organizations[*]" HelpLink="https://developer.zendesk.com/api-reference/ticketing/organizations/organizations/#list-organizations">
      <Params>
	    <Param Name="NextUrlAttributeOrExpr" Value="$.links.next" Type="Property" />
		<Param Name="PageSize" Label="Records Per Page (Max 100)" Key="page[size]" Type="Query" Value="100" Hidden="True" />
        <Param Name="NextUrlEndIndicator" Type="Property" Value="false" />
        <Param Name="StopIndicatorAttributeOrExpr" Type="Property" Value="$.meta.has_more" />	  
      </Params>
    </EndPoint>
	
    <EndPoint Group="Users" Name="upsert_users" Template="tp_user_bulk" Method="POST"
              Label="Upsert Users (Bulk) - Create or Update"
              Desc="Create or Update users in bulk (Upsert)"
              Url="/users/create_or_update_many.json"
              ContentType="application/json" BatchSize="100"
              Filter="$.job_status"
              HelpLink="https://developer.zendesk.com/api-reference/ticketing/users/users/#create-or-update-many-users">

      <Body><![CDATA[{"users" : {$rows$} }]]></Body>

      <EndPoint Url="[$parent.url$]" Method="GET" Filter="$.job_status.results[*]" IncludeParentColumns="True">
        <Params>
          <Param Name="EnableStatusCheck" Type="Property" Value="true" />
          <Param Name="StatusCheckIterationWaitSeconds" Type="Property" Value="4" />
          <Param Name="StatusCheckMaxWaitSeconds" Type="Property" Value="200" />
          <Param Name="StatusContinueValue" Type="Property" Value="queued|working" />
          <Param Name="StatusSuccessValue" Type="Property" Value="completed|failed|killed" />
        </Params>
      </EndPoint>

      <InputColumns>
        <Column Name="id" DataType="DT_I8" Key="True" Order="-1" />
      </InputColumns>
      <OutputColumns>
        <Column Name="id" DataType="DT_I8" />
		<Column Name="email" DataType="DT_WSTR" Length="100"/>
        <Column Name="status" DataType="DT_WSTR" Length="50" />
        <Column Name="success" DataType="DT_BOOL" />
		
        <Column Name="P_job_status_id" Label="job_id" DataType="DT_WSTR" Length="100"/>
        <Column Name="P_job_status_message" Label="message" DataType="DT_WSTR" Length="2000"/>

        <Column Name="P_job_status_total" Label="total" DataType="DT_I4" />
        <Column Name="P_job_status_status" Label="job_status" DataType="DT_WSTR" Length="50" />
        <Column Name="P_job_status_url" Label="job_url" DataType="DT_WSTR" Length="500" />

        <Column Name="index" DataType="DT_I4" />
        <Column Name="error" DataType="DT_WSTR" Length="1000" />
        <Column Name="details" DataType="DT_WSTR" Length="4000" />
      </OutputColumns>
    </EndPoint>	

    <EndPoint Group="Users" Name="delete_user"  Method="DELETE" Template="tp_user"
              Label="Delete User"
              Desc="Delete a user by its id"
              Url="/users/[$id$].json"
              ContentType="application/json" 
              Filter="$.user"
			  BatchSize="1"
              HelpLink="https://developer.zendesk.com/api-reference/ticketing/users/users/#delete-user">		
	  <Params>
        <Param Name="id" Label="User ID for Delete" Required="True"/>
      </Params>
      <InputColumns>
        <Column Name="id" DataType="DT_I8" Key="True" MapToParam="True"  Order="-1"  />
      </InputColumns>
    </EndPoint>	
	
    <EndPoint Group="Users" Name="put_user" Template="tp_user" Method="PUT"
			  	
              Label="Update User"
              Desc="Update a user by its id"
              Url="/users/[$id$].json"
              ContentType="application/json" 
              Filter="$.user"
			  BatchSize="1"
              HelpLink="https://developer.zendesk.com/api-reference/ticketing/users/users/#update-user">

      <Body><![CDATA[{"user" : {$rows$} }]]></Body>			
	  <Params>
		<Param Name="id" IsKey="True"  />
	  </Params>
	  <InputColumns>
			<Column Name="id" MapToParam="True" Key="True" DataType="DT_I8" />
	  </InputColumns>
    </EndPoint>	
	
    <EndPoint Group="Users" Name="post_user" Template="tp_user" Method="POST"
			  	
              Label="Create User"
              Desc="Create a user"
              Url="/users.json"
              ContentType="application/json" 
              Filter="$.user"
			  BatchSize="1"
              HelpLink="https://developer.zendesk.com/api-reference/ticketing/users/users/#create-user">
      <Body><![CDATA[{"user" : {$rows$} }]]></Body>			
    </EndPoint>		
	
    <EndPoint Group="Users" Name="upsert_user" Template="tp_user" Method="POST"
			  	
              Label="Upsert User - Create or Update"
              Desc="Create or Update a user in (Upsert)"
              Url="/users/create_or_update.json"
              ContentType="application/json" 
              Filter="$.user"
			  BatchSize="1"
              HelpLink="https://developer.zendesk.com/api-reference/ticketing/users/users/#create-or-update-user">
      <Body><![CDATA[{"user" : {$rows$} }]]></Body>			
    </EndPoint>	


    <EndPoint Group="Organizations" Name="delete_organization"  Method="DELETE" Template="tp_organization"
              Label="Delete Organization"
              Desc="Delete an organization by its id"
              Url="/organizations/[$id$].json"
              ContentType="application/json" 
              Filter="$.organization"
			  BatchSize="1"
              HelpLink="https://developer.zendesk.com/api-reference/ticketing/organizations/organizations/#delete-organization">		
	  <Params>
        <Param Name="id" Label="Organization ID for Delete" Required="True"/>
      </Params>
      <InputColumns>
        <Column Name="id" DataType="DT_I8" Key="True" MapToParam="True"  Order="-1"  />
      </InputColumns>
    </EndPoint>	
	
    <EndPoint Group="Organizations" Name="put_organization" Template="tp_organization" Method="PUT"
			  	
              Label="Update Organization"
              Desc="Update an organization by its id"
              Url="/organizations/[$id$].json"
              ContentType="application/json" 
              Filter="$.organization"
			  BatchSize="1"
              HelpLink="https://developer.zendesk.com/api-reference/ticketing/organizations/organizations/#update-organization">

      <Body><![CDATA[{"organization" : {$rows$} }]]></Body>			
	  <Params>
		<Param Name="id" IsKey="True"  />
	  </Params>
	  <InputColumns>
			<Column Name="id" MapToParam="True" Key="True" DataType="DT_I8" />
	  </InputColumns>
    </EndPoint>	
	
    <EndPoint Group="Organizations" Name="post_organization" Template="tp_organization" Method="POST"
			  	
              Label="Create Organization"
              Desc="Create an organization"
              Url="/organizations.json"
              ContentType="application/json" 
              Filter="$.organization"
			  BatchSize="1"
              HelpLink="https://developer.zendesk.com/api-reference/ticketing/organizations/organizations/#create-organization">
      <Body><![CDATA[{"organization" : {$rows$} }]]></Body>			
    </EndPoint>		
	
    <EndPoint Group="Organizations" Name="upsert_organization" Template="tp_organization" Method="POST"
			  	
              Label="Upsert Organization - Create or Update"
              Desc="Create or Update an organization in (Upsert)"
              Url="/organizations/create_or_update.json"
              ContentType="application/json" 
              Filter="$.organization"
			  BatchSize="1"
              HelpLink="https://developer.zendesk.com/api-reference/ticketing/organizations/organizations/#create-or-update-organization">
      <Body><![CDATA[{"organization" : {$rows$} }]]></Body>			
    </EndPoint>	
	
  </EndPoints>
    

  <Tables>
    <Table Name="Tickets_Bulk" Label="Tickets (Bulk)"
           LookupEndPoint="get_tickets_by_ids"
           InsertEndPoint="post_tickets"
           UpdateEndPoint="put_tickets"
           DeleteEndPoint="delete_tickets"
           SelectEndPoint="get_tickets" />

    <Table Name="Tickets" Label="Tickets (Row by Row)"
           LookupEndPoint="get_tickets_by_ids"
           InsertEndPoint="post_ticket"
           UpdateEndPoint="put_ticket"
           DeleteEndPoint="delete_ticket"
           SelectEndPoint="get_tickets" />
     
    <Table Name="Users" 
               SelectEndPoint="get_users" 
               LookupEndPoint="get_users_by_ids" 
			   InsertEndPoint="post_user"
			   UpdateEndPoint="put_user"
			   UpsertEndPoint="upsert_user"
			   DeleteEndPoint="delete_user"
           />
    <Table Name="Users_Bulk" 
               SelectEndPoint="get_users" 
               LookupEndPoint="get_users_by_ids" 
			   InsertEndPoint="upsert_users"
			   UpdateEndPoint="upsert_users"
			   UpsertEndPoint="upsert_users"
			   DeleteEndPoint="delete_user"
           />
		   
    <Table Name="Organizations"
               SelectEndPoint="get_organizations" 
               LookupEndPoint="get_organizations_by_ids" 
               InsertEndPoint="post_organization"
			   UpdateEndPoint="put_organization"
			   UpsertEndPoint="upsert_organization"
			   DeleteEndPoint="delete_organization"			   
           />
		   
  </Tables>

  <Examples>
    <Example Group="ODBC" Slug="read-tickets" Label="Read tickets">
      <Desc><![CDATA[<p>Reads all tickets from the Zendesk account. This example demonstrates a basic SELECT query to retrieve a complete list of tickets from the <code>Tickets</code> table.</p>]]></Desc>
      <Code><![CDATA[SELECT * FROM Tickets]]></Code>
    </Example>
    <Example Group="ODBC" Slug="read-tickets-by-ids" Label="Read tickets by IDs">
      <Desc><![CDATA[<p>Reads multiple tickets by specifying a list of ticket IDs. This example demonstrates how to use the <code>get_tickets_by_ids</code> endpoint with the <code>ticket_ids</code> parameter in the <code>WITH</code> clause.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * from get_tickets_by_ids
WITH(ticket_ids='104861,104860')]]>
      </Code>
    </Example>
    <Example Group="ODBC" Slug="read-ticket-by-id" Label="Read a ticket by ID">
      <Desc><![CDATA[<p>Reads a single ticket by its ID. This example demonstrates how to filter the <code>Tickets</code> table using the <code>WHERE</code> clause to retrieve a specific ticket.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * from Tickets
WHERE ID=104861]]>
      </Code>
    </Example>

    <Example Group="ODBC" Slug="read-tickets-incremental" Label="Read tickets (incremental)">
      <Desc><![CDATA[<p>Reads tickets modified after a specified date and time. This example demonstrates incremental data fetching using the <code>get_tickets_incr</code> endpoint. You can specify a static date or use dynamic date functions like <code>yesterday</code>, <code>now-5h</code>, or <code>monthstart</code> in the <code>start_time</code> parameter.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * FROM get_tickets_incr
WITH(
	    start_time='2012-01-31T00:00:00' --modified after exact date / time (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss)
		
	  --start_time='yesterday' --modified after yesterday
	  --start_time='now-5h' --modified after current time minus 5 hours
	  --start_time='today-60s' --modified after today minus 60 seconds
	  --start_time='weekstart' --modified after weekstart
	  --start_time='monthstart-1d' --modified after month start minus 1 day
	  --start_time='yearstart-1d' --modified after year start minus 1 day
	  --start_time='yearstart+1d' --modified after year start plus 1 day
	  --start_time='yearend+1d' --modified after year end plus 1 day
)]]>
      </Code>
    </Example>

    <Example Group="ODBC" Slug="read-users-incremental" Label="Read users (incremental)">
      <Desc><![CDATA[<p>Reads users modified after a specified date and time. This example demonstrates incremental data fetching using the <code>get_users_incr</code> endpoint. Similar to tickets, you can use static or dynamic dates for the <code>start_time</code> parameter.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * FROM get_users_incr
WITH(
	    start_time='2012-01-31T00:00:00' --modified after exact date / time (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss)
		
	  --start_time='yesterday' --modified after yesterday
	  --start_time='now-5h' --modified after current time minus 5 hours
	  --start_time='today-60s' --modified after today minus 60 seconds
	  --start_time='weekstart' --modified after weekstart
	  --start_time='monthstart-1d' --modified after month start minus 1 day
	  --start_time='yearstart-1d' --modified after year start minus 1 day
	  --start_time='yearstart+1d' --modified after year start plus 1 day
	  --start_time='yearend+1d' --modified after year end plus 1 day
)]]>
      </Code>
    </Example>	
	
    <Example Group="ODBC" Slug="read-organizations-incremental" Label="Read organizations (incremental)">
      <Desc><![CDATA[<p>Reads organizations modified after a specified date and time. This example demonstrates incremental data fetching using the <code>get_organizations_incr</code> endpoint with the <code>start_time</code> parameter.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * FROM get_organizations_incr
WITH(
	    start_time='2012-01-31T00:00:00' --modified after exact date / time (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss)
		
	  --start_time='yesterday' --modified after yesterday
	  --start_time='now-5h' --modified after current time minus 5 hours
	  --start_time='today-60s' --modified after today minus 60 seconds
	  --start_time='weekstart' --modified after weekstart
	  --start_time='monthstart-1d' --modified after month start minus 1 day
	  --start_time='yearstart-1d' --modified after year start minus 1 day
	  --start_time='yearstart+1d' --modified after year start plus 1 day
	  --start_time='yearend+1d' --modified after year end plus 1 day
)]]>
      </Code>
    </Example>		

	
    <Example Group="ODBC" Slug="read-tickets-for-organization" Label="Read tickets for organization">
      <Desc><![CDATA[<p>Reads all tickets associated with a specific organization. This example demonstrates using the <code>get_tickets_by_org</code> endpoint and specifying the <code>organization_id</code> in the <code>WITH</code> clause.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * FROM get_tickets_by_org
WITH(
	  organization_id='12'
)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Slug="read-tickets-requested-by-user" Label="Read tickets requested by user">
      <Desc><![CDATA[<p>Reads all tickets requested by a specific user. This example demonstrates using the <code>get_tickets_for_user_requested</code> endpoint with the <code>user_id</code> parameter.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * FROM get_tickets_for_user_requested
WITH(
	  user_id='123'
)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Slug="read-tickets-cced-to-user" Label="Read tickets CCed to user">
      <Desc><![CDATA[<p>Reads all tickets where a specific user is CCed. This example demonstrates using the <code>get_tickets_for_user_cced</code> endpoint with the <code>user_id</code> parameter.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * FROM get_tickets_for_user_cced
WITH(
	  user_id='123'
)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Slug="read-tickets-assigned-to-user" Label="Read tickets assigned to user">
      <Desc><![CDATA[<p>Reads all tickets assigned to a specific user (agent). This example demonstrates using the <code>get_tickets_for_user_assigned</code> endpoint with the <code>user_id</code> parameter.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * FROM get_tickets_for_user_assigned
WITH(
	  user_id='123'
)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Slug="read-tickets-count" Label="Read tickets count">
      <Desc><![CDATA[<p>Reads the approximate total count of tickets in the account. This example demonstrates querying the <code>get_tickets_count</code> endpoint.</p>]]></Desc>
      <Code><![CDATA[SELECT * FROM get_tickets_count]]></Code>
    </Example>
    <Example Group="ODBC" Slug="read-tickets-count-for-organization" Label="Read tickets count for organization">
      <Desc><![CDATA[<p>Reads the approximate count of tickets for a specific organization. This example demonstrates using the <code>get_tickets_count_org</code> endpoint with the <code>organization_id</code> parameter.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * FROM get_tickets_count_org
WITH(
	  organization_id='123'
)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Slug="read-ticket-attachments" Label="Read ticket attachments">
      <Desc><![CDATA[<p>Reads all attachment URLs for a specific ticket. This example demonstrates using the <code>get_ticket_attachments</code> endpoint with the <code>ticket_id</code> parameter.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * FROM get_ticket_attachments
WITH(
	  ticket_id='104351'
)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Slug="read-users" Label="Read users">
      <Desc><![CDATA[<p>Reads all users from the Zendesk account. This example demonstrates querying the <code>Users</code> table. You can optionally filter by ID using the <code>WHERE</code> clause.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * FROM Users --Where Id=1234
]]>
      </Code>
    </Example>
    <Example Group="ODBC" Slug="read-users-by-ids" Label="Read users by IDs">
      <Desc><![CDATA[<p>Reads multiple users by specifying a list of user IDs. This example demonstrates using the <code>get_users_by_ids</code> endpoint with the <code>user_ids</code> parameter.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * from get_users_by_ids
WITH(user_ids='1111,2222,3333')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Slug="read-organizations" Label="Read organizations">
      <Desc><![CDATA[<p>Reads all organizations from the Zendesk account. This example demonstrates querying the <code>Organizations</code> table. You can optionally filter by ID using the <code>WHERE</code> clause.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * FROM Organizations --Where Id=1234
]]>
      </Code>
    </Example>
    <Example Group="ODBC" Slug="read-organizations-by-ids" Label="Read organizations by IDs">
      <Desc><![CDATA[<p>Reads multiple organizations by specifying a list of organization IDs. This example demonstrates using the <code>get_organizations_by_ids</code> endpoint with the <code>organization_ids</code> parameter.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT * from get_organizations_by_ids
WITH(organization_ids='1111,2222,3333')]]>
      </Code>
    </Example>

    	
	<Example Group="ODBC" Slug="create-ticket" Label="Create a ticket">
      <Desc><![CDATA[<p>Creates a new ticket in the <code>Tickets</code> table. This example demonstrates how to use the <code>INSERT INTO</code> statement to specify ticket details such as subject, status, assignee, and custom fields.</p>]]></Desc>
      <Code>
        <![CDATA[INSERT INTO Tickets(
	subject
	,status
	,assignee_id
	,comment_body_html --(for html body)
	--,comment_body (for plain text)
	,comment_public
	,tags
	,custom_fields)
VALUES(
  'Test Ticket Subject - From email'
, 'new' --new, solved, closed
, 18590685428 --assign to agent id
, 'This is <b>html body</b>' --markup also supported
, 1 --1=public, 0=private 
, '["tag1","tag2"]' 
  --below json can be obtained using select custom_fields from tickets where id=1234
, '[
  {
    "id": 56608448,
    "value": "1122"
  },
  {
    "id": 57385967,
    "value": "ORD-12345"
  }
]'
)]]>
      </Code>
    </Example>

<Example Group="ODBC" Slug="create-ticket-behalf-of-user" Label="Create a ticket on behalf of user">
      <Desc><![CDATA[<p>Creates a ticket on behalf of a user specified by email and name. If the user does not exist, a new user is created. This example demonstrates setting <code>requester_email</code> and <code>requester_name</code> in the <code>INSERT INTO</code> statement.</p>]]></Desc>
      <Code>
        <![CDATA[INSERT INTO Tickets(
	subject
	,status
	,requester_email
	,requester_name
	,assignee_id 
	--,group_id --or assign to group
	,comment_body_html --(for html body)
	--,comment_body (for plain text)
	,comment_public
	,tags
	,custom_fields)
VALUES(
  'Test Ticket Subject - From email'
, 'new' --new, solved, closed
, 'fromsomeuser@abc.com' --from email
, 'Bob Smith' --submitter name needed if its new user
, 18590685428 --assign to agent id
--,123435454 --or use group id if not assignee 
, 'This is <b>html body</b>' --markup also supported
--, 'This is plain text'
, 1 --1=public, 0=private 
, '["tag1","tag2"]' 
  --below json can be obtained using select custom_fields from tickets where id=1234
, '[
  {
    "id": 56608448,
    "value": "1122"
  },
  {
    "id": 57385967,
    "value": "ORD-12345"
  }
]'
)]]>
      </Code>
    </Example>

    <Example Group="ODBC" Slug="bulk-create-tickets-using-sql-server-data" Label="Bulk create tickets using SQL Server data">
      <Desc><![CDATA[<p>Creates multiple tickets in bulk using data from a SQL Server database. This example demonstrates using the <code>SOURCE</code> clause with the <code>Tickets_BULK</code> table to read data from an external ODBC/OLEDB source and insert it into Zendesk.</p>]]></Desc>
      <Code>
        <![CDATA[INSERT INTO Tickets_BULK 
SOURCE(
  'MSSQL' --ODBC or OLEDB
  ,'Data Source=localhost;Initial Catalog=Test;Integrated Security=true'
  ,'select ''Test Subject#1'' as subject,''new'' as status,''this is description#1'' as comment_body from Projects'
)]]>
      </Code>
    </Example>
    
    <Example Group="ODBC" Slug="delete-ticket" Label="Delete a ticket">
      <Desc><![CDATA[<p>Deletes a single ticket by its ID. This example demonstrates using the <code>DELETE FROM</code> statement with a <code>WHERE</code> clause specifying the ticket ID.</p>]]></Desc>
      <Code>
        <![CDATA[DELETE FROM Tickets WHERE Id=111]]>
      </Code>
    </Example>
    
    <Example Group="ODBC" Slug="bulk-delete-tickets-using-list" Label="Bulk delete tickets using ID list">
      <Desc><![CDATA[<p>Deletes multiple tickets by specifying a comma-separated list of IDs. This example demonstrates using the <code>Tickets_Bulk</code> table and passing a list of IDs (max 100) in the <code>WHERE</code> clause.</p>]]></Desc>
      <Code>
        <![CDATA[DELETE FROM Tickets_Bulk WHERE [$$ticket_ids]='111,222,333']]>
      </Code>
    </Example>

    <Example Group="ODBC" Slug="update-ticket" Label="Update a ticket">
      <Desc><![CDATA[<p>Updates an existing ticket by its ID. This example demonstrates modifying fields such as subject, tags, status, and custom fields using the <code>UPDATE</code> statement.</p>]]></Desc>
      <Code>
        <![CDATA[Update Tickets 
SET subject='Test ticket subject'
  , tags='["tag1","tag2"]' 
  --, additional_tags ='["tag1","tag2"]' --tags you like to remove
  --, remove tags='["tag1","tag2"]'
  , status='pending' --new, solved, closed
  --below json can be obtained using select custom_fields from tickets where id=1234
  , custom_fields='[
  {
    "id": 10000,
    "value": "some value for prop1"
  },
  {
    "id": 10001,
    "value": "some value for prop2"
  }
]'
Where Id = 1234]]>
      </Code>
    </Example>
	
    <Example Group="ODBC" Slug="update-ticket-private-comment" Label="Update ticket with private comment">
      <Desc><![CDATA[<p>Adds a private comment to an existing ticket and updates its status. This example demonstrates setting <code>comment_body</code>, <code>comment_public</code>, and <code>status</code> in the <code>UPDATE</code> statement.</p>]]></Desc>
      <Code>
        <![CDATA[Update Tickets 
SET comment_body='Closing this ticket'
  , comment_public = 0 --or 1
  , status='solved' --pending, new, closed
  --, comment_body_html='Closing <b>this</b> ticket'
  --, comment_author_id=123545   
Where Id = 1234]]>
      </Code>
    </Example>

    <Example Group="ODBC" Slug="update-ticket-html-comment" Label="Update ticket with HTML comment">
      <Desc><![CDATA[<p>Adds an HTML-formatted comment to an existing ticket and updates its status. This example demonstrates setting <code>comment_body_html</code> in the <code>UPDATE</code> statement.</p>]]></Desc>
      <Code>
        <![CDATA[Update Tickets 
SET comment_body_html='Closing <b>this</b> ticket'
  , status='solved' --pending, new, closed
  --, comment_author_id=123545   
  --, comment_public = 0 --or 1  
Where Id = 1234]]>
      </Code>
    </Example>	

    <Example Group="ODBC" Slug="update-ticket-tags" Label="Update ticket tags">
      <Desc><![CDATA[<p>Adds or removes tags from a ticket. This example demonstrates using <code>additional_tags</code> to add tags and <code>remove_tags</code> to remove them via the <code>Tickets_Bulk</code> table.</p>]]></Desc>
      <Code>
        <![CDATA[Update Tickets_Bulk 
SET subject='New subject'
  , additional_tags ='["new-tag1","new-tag2"]' --//add some tags
  --, remove_tags='["old-tag1","old-tag2"]' --//removes some tags
  --, tags='["tag1","tag2"]' --//overwrite all tags
  , status='pending' --new, solved, closed
Where Id = 1234]]>
      </Code>
    </Example>


    <Example Group="ODBC" Slug="bulk-update-tickets-using-sql-server-data" Label="Bulk update tickets using SQL Server data">
      <Desc><![CDATA[<p>Updates multiple tickets in bulk using data from a SQL Server database. This example demonstrates using the <code>SOURCE</code> clause with <code>Tickets_BULK</code> to read update data (IDs and fields) from an external source.</p>]]></Desc>
      <Code>
        <![CDATA[UPDATE Tickets_BULK 
SOURCE(
  'MSSQL' --ODBC or OLEDB
  ,'Data Source=localhost;Initial Catalog=Test;Integrated Security=true'
  ,'select 104897 as Id, ''Test Subject#1-updated-bulk-demo'' as subject,''new'' as status
    UNION 
    select 104898 as Id, ''Test Subject#2-updated-bulk-demo'' as subject,''new'' as status'
)]]>
      </Code>
    </Example>

    <Example Group="ODBC" Slug="bulk-delete-tickets-using-sql-server-data" Label="Bulk delete tickets using IDs from SQL Server">
      <Desc><![CDATA[<p>Deletes multiple tickets in bulk using IDs from a SQL Server database. This example demonstrates using the <code>SOURCE</code> clause with <code>Tickets_BULK</code> to read IDs from an external source for deletion.</p>]]></Desc>
      <Code>
        <![CDATA[DELETE FROM Tickets_BULK 
SOURCE(
  'MSSQL' --ODBC or OLEDB
  ,'Data Source=localhost;Initial Catalog=Test;Integrated Security=true'
  ,'select 104897 as Id 
    UNION 
    select 104898 as Id'
)]]>
      </Code>
    </Example>    

    <Example Group="ODBC" Slug="create-ticket-raw-json" Label="Create a ticket using raw JSON">
      <Desc><![CDATA[<p>Creates a new ticket by supplying the raw JSON body directly. This example demonstrates using the <code>_rawdoc_</code> column to pass the full JSON payload for ticket creation.</p>]]></Desc>
      <Code>
        <![CDATA[INSERT INTO Tickets(_rawdoc_) 
VALUES(
  '{
      "subject": "Test ticket #1",    
      "comment": {
        "body": "Test ticket #1"
      },
      "priority": "urgent"
    }'
)]]>
      </Code>
    </Example>

    <Example Group="ODBC" Slug="update-ticket-raw-json" Label="Update a ticket using raw JSON">
      <Desc><![CDATA[<p>Updates an existing ticket by supplying the raw JSON body. This example demonstrates using the <code>_rawdoc_</code> column in the <code>UPDATE</code> statement to pass the JSON payload.</p>]]></Desc>
      <Code>
        <![CDATA[UPDATE Tickets
SET _rawdoc_ =
  '{
      "subject": "Test ticket #1",    
      "comment": {
        "body": "Test ticket #1"
      },
      "priority": "urgent"
    }'
WHERE Id=1234]]>
      </Code>
    </Example>

    <Example Group="ODBC" Slug="bulk-create-tickets-raw-json" Label="Bulk create tickets using raw JSON">
      <Desc><![CDATA[<p>Creates multiple tickets by supplying a JSON array of ticket objects. This example demonstrates using the <code>_rawdoc_</code> column with the <code>Tickets_Bulk</code> table to insert multiple tickets at once.</p>]]></Desc>
      <Code>
        <![CDATA[INSERT INTO Tickets_Bulk(_rawdoc_) 
VALUES(
  '[
    {
      "subject": "Test ticket #1",    
      "comment": {
        "body": "Test ticket #1"
      },
      "priority": "urgent"
    },
    {
      "subject": "Test ticket #2",    
      "comment": {
        "body": "This is a comment for #2"
      },
      "priority": "normal"
    }
  ]'
)]]>
      </Code>
    </Example>

    <Example Group="ODBC" Slug="create-user" Label="Create a user">
      <Desc><![CDATA[<p>Creates a new user in the <code>Users</code> table. This example demonstrates specifying user details like name, email, role, and custom fields. Note that if a user with the same email exists, the call will fail.</p>]]></Desc>
      <Code>
        <![CDATA[
INSERT INTO Users
(
 name
,email
,organization_id
,phone
,default_group_id
,locale
,moderator
,skip_verify_email
,only_private_comments
,signature
,tags
,time_zone
,role
,external_id
,alias
,details
,notes
,remote_photo_url
,user_fields
)
VALUES(
   'Bob Walton'
  ,'bob@abc.com'
  ,5397098432795
  ,'111-222-3333'
  ,114094762733
  ,'en-US'
  ,'false'
  ,'true' --true=do not send verify account email
  ,1 --user can put only private comments
  ,'Best regards, Support Team' --Only agents and admins can have signatures
  ,'["paid","trial","solved"]' 
  ,'America/New_York'
  ,'end-user' --agent or admin 
  ,'zcrm_1558554000052161270'
  ,'some alias'
  ,'some details'
  ,'some notes'
  ,'https://zappysys.com/wp-content/uploads/2021/10/Slider-API-Hub-1.png' --this does not work in INSERT (works only in UPDATE/UPSERT for now)
  ,'{"birthdate": "1981-01-23", "gender": "M"}'
)	
		]]>
      </Code>
    </Example>
 
    <Example Group="ODBC" Slug="update-user" Label="Update a user">
      <Desc><![CDATA[<p>Updates an existing user by their ID. This example demonstrates modifying user properties such as name, email, role, and custom fields using the <code>UPDATE</code> statement.</p>]]></Desc>
      <Code>
        <![CDATA[
UPDATE Users
SET name='Sam Walton'
  ,email='sam@abc.com'
  ,organization_id=5397098432795
  ,phone='111-222-3333'
  ,default_group_id=114094762733
  ,locale='en-US'
  ,skip_verify_email='true' --do not send verify account email
  ,moderator='false'
  ,only_private_comments=1 --user can put only private comments
  ,signature='Best regards, Support Team' --Only agents and admins can have signatures
  ,tags='["paid","trial","solved"]' 
  ,time_zone='America/New_York'
  ,role='end-user'
  ,external_id='zcrm_1558554000052161269'
  ,alias='some alias'
  ,details='some details'
  ,notes='some notes'
  ,remote_photo_url='https://zappysys.com/wp-content/uploads/2021/10/Slider-API-Hub-1.png'
  ,user_fields='{"birthdate": "1981-01-23", "gender": "M"}'
Where id=21811221397915		
		]]>
      </Code>
    </Example>
	
   <Example Group="ODBC" Slug="upsert-user" Label="Upsert a user">
      <Desc><![CDATA[<p>Creates a new user or updates an existing one. This example demonstrates using the <code>UPSERT INTO</code> statement, which updates the user if they exist (identified by email or external ID) or creates them otherwise.</p>]]></Desc>
      <Code>
        <![CDATA[
INSERT INTO Users
(
 name
,email
,organization_id
,phone
,default_group_id
,locale
,moderator
,skip_verify_email
,only_private_comments
,signature
,tags
,time_zone
,role
,external_id
,alias
,details
,notes
,remote_photo_url
,user_fields
)
VALUES(
   'Bob Walton'
  ,'bob@abc.com'
  ,5397098432795
  ,'111-222-3333'
  ,114094762733
  ,'en-US'
  ,'false'
  ,'true' --true=do not send verify account email
  ,1 --user can put only private comments
  ,'Best regards, Support Team' --Only agents and admins can have signatures
  ,'["paid","trial","solved"]' 
  ,'America/New_York'
  ,'end-user' --agent or admin 
  ,'zcrm_1558554000052161270'
  ,'some alias'
  ,'some details'
  ,'some notes'
  ,'https://zappysys.com/wp-content/uploads/2021/10/Slider-API-Hub-1.png' --this does not work in INSERT (works only in UPDATE/UPSERT for now)
  ,'{"birthdate": "1981-01-23", "gender": "M"}'
)	
		]]>
      </Code>
    </Example>		
	
     <Example Group="ODBC" Slug="delete-user" Label="Delete a user">
      <Desc><![CDATA[<p>Deletes a user by their ID. Note that this operation typically soft-deletes the user (changes the active flag) rather than permanently removing them immediately.</p>]]></Desc>
      <Code>
        <![CDATA[DELETE FROM Users Where id=21855694556443 --it doesnt delete user from system but only changes active flag	
		]]>
      </Code>
    </Example>
	
   <Example Group="ODBC" Slug="search-user-by-email" Label="Search for user by email">
      <Desc><![CDATA[<p>Searches for a user by their email address. This example demonstrates using the <code>get_search</code> endpoint with a query string to find a specific user.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT *
FROM get_search
WITH(
	  query='type:user email:bob@abc.com'
)]]>
      </Code>
    </Example>
	
    <Example Group="ODBC" Slug="create-organization" Label="Create an organization">
      <Desc><![CDATA[<p>Creates a new organization in the <code>Organizations</code> table. This example demonstrates specifying organization details such as name, external ID, and custom fields.</p>]]></Desc>
      <Code>
        <![CDATA[
INSERT INTO Organizations
(
	 name
	,external_id
	,group_id 
	,tags
	,details
	,notes
	,organization_fields
	,domain_names
	,shared_tickets
	,shared_comments
)
VALUES(
	'Abc Inc'
	,'zcrm_1558554000052161270'  --external_id
	,114094762733  
	,'["paid","trial","solved"]' 
	,'some details'
	,'some notes'
	,'{"startdate": "1981-01-23", "revenue": 12000000.50, "somenumber": 1235678}'
	,'["aaa.com", "bbb.com"]'
	,'false'
	,'false'
)
		]]>
      </Code>
    </Example>
 
    <Example Group="ODBC" Slug="update-organization" Label="Update an organization">
      <Desc><![CDATA[<p>Updates an existing organization by its ID. This example demonstrates modifying organization properties using the <code>UPDATE</code> statement.</p>]]></Desc>
      <Code>
        <![CDATA[
UPDATE Organizations
SET  name='Abc Inc'
	,external_id='zcrm_1558554000052161270'
	,group_id=114094762733 
	,tags='["paid","trial","solved"]'
	,details='some details'
	,notes='some notes'
	,organization_fields='{"startdate": "1981-01-23", "revenue": 12000000.50, "somenumber": 1235678}'
	,domain_names='["aaa.com", "bbb.com"]'
	,shared_tickets='false'
	,shared_comments='false'
Where id=21863188631451		
		]]>
      </Code>
    </Example>
	
   <Example Group="ODBC" Slug="upsert-organization" Label="Upsert an organization">
      <Desc><![CDATA[<p>Creates a new organization or updates an existing one. This example demonstrates using the <code>UPSERT INTO</code> statement, identifying the organization by ID or external ID.</p>]]></Desc>
      <Code>
        <![CDATA[
UPSERT INTO Organizations
(
	 name
	--id or external_id can be supplied for UPSERT
	,id 
	--or--
	,external_id
	 
	,group_id 
	,tags
	,details
	,notes
	,organization_fields
	,domain_names
	,shared_tickets
	,shared_comments
)
VALUES(
	'Abc Inc'
	,1234567 --id
	--or--
	,'zcrm_1558554000052161270'  --external_id
	
	,114094762733  
	,'["paid","trial","solved"]' 
	,'some details'
	,'some notes'
	,'{"startdate": "1981-01-23", "revenue": 12000000.50, "somenumber": 1235678}'
	,'["aaa.com", "bbb.com"]'
	,'false'
	,'false'
)
		]]>
      </Code>
    </Example>		
	
     <Example Group="ODBC" Slug="delete-organization" Label="Delete an organization">
      <Desc><![CDATA[<p>Deletes an organization by its ID. This example demonstrates using the <code>DELETE FROM</code> statement with a <code>WHERE</code> clause specifying the organization ID.</p>]]></Desc>
      <Code>
        <![CDATA[DELETE FROM Organizations Where id=21855694556443 
		]]>
      </Code>
    </Example>
	
   <Example Group="ODBC" Slug="search-records-query" Label="Search records using query">
      <Desc><![CDATA[<p>Searches for tickets, organizations, users, or groups using a query expression. This example demonstrates using the <code>get_search</code> endpoint with various filter options and sort parameters. You can filter by type, status, tags, dates, and more.</p>]]></Desc>
      <Code>
        <![CDATA[SELECT *
FROM get_search --limited to 1000 rows max
--OR
--FROM get_search_export --returns more than 1000 rows but no sorting or extra column allowed
WITH(
       filtertype='' --can be ticket, organization, user, group. If you set here then no need to put in query (e.g. query='type:ticket ...'). This option is ignored for get_search_Export.
	  ,sort_by='updated_at' --created_at, status, priority, ticket_type. This option is ignored for get_search_Export.
	  ,sort_order='asc'  --desc (not valid for get_search_export). This option is ignored for get_search_Export.

    --read this for more information 
	--https://support.zendesk.com/hc/en-us/articles/4408883318554-Searching-users-groups-and-organizations
	--https://support.zendesk.com/hc/en-us/articles/4408886879258-Zendesk-Support-search-reference#topic_crj_yev_uc
	--https://support.zendesk.com/hc/en-us/articles/4408882086298-Searching-tickets
	
      ,query='type:ticket subject:"Upsert Destination"'   --search tickets where subject contains phrase "Upsert Destination" (special characters like comma / dash etc ignored in match)
	--,query='type:ticket 519872'   --search ticket with id 519872
	--,query='type:ticket tags:solved,odbc_powerpack updated>1months' --search tickets where two tags set solved,odbc_powerpack and updated in last one month
	--,query='type:ticket -tags:odbc_powerpack updated>1months' --search tickets where where tags not like odbc_powerpack and updated in last one month
	--,query='type:ticket status<solved created>1months' --search tickets with status not solved and created in last one month
	--,query='type:ticket created:2014-08-01' --search tickets created on 2014-08-01 (UTC)
	--,query='type:ticket created>2014-08-01T10:30:00Z created<2014-08-01T12:00:00Z' --search tickets created between two datetime (UTC time)
	--,query='type:ticket requester:amy@mondocam.com' --search tickets where requester is amy@mondocam.com
	--,query='type:ticket description:defective' --search tickets where decription contains word "defective"
	--,query='type:ticket description:"product is defective"' --search tickets where decription contains phrase  "product is defective"
	--,query='type:ticket priority>low' --search tickets where priority greater than low (e.g. medium or high)"
	
	--,query='ZappySys' --phrase match (no type): anywhere in ticket / organization / user contains ZappySys word - If filtertype parameter supplied then only those type included
	--,query='ZappySys*' --phrase match (no type): wildcard usage
	--,query='type:user "ZappySys"' --search users with term "ZappySys" anywhere in text properties
    --,query='type:user email:"@zappysys"' --search users with term "@ZappySys.com" in email field
	--,query='type:user name:"zappysys"' --search users with term "ZappySys" in name field
	--,query='type:user details:"zappysys"' --search users with term "ZappySys" in details field
    --,query='type:organization "ZappySys LLC"' --phrase match: organization name contains ZappySys LLC
)
]]>
      </Code>
    </Example>
  

    <Example Group="ODBC" Slug="bulk-upsert-users-organizations-sql-server" Label="Bulk upsert users/organizations using SQL Server data">
      <Desc><![CDATA[<p>Upserts users or organizations in bulk using data from a SQL Server database. This example demonstrates using the <code>UPSERT INTO ... SOURCE</code> syntax to read data from an external source and import it into Zendesk.</p>]]></Desc>
      <Code>
        <![CDATA[UPSERT INTO Organizations
SOURCE('MSSQL' --ODBC
, 'Data Source=localhost;Initial Catalog=test;Integrated Security=true'

--For bulk input, map columns in External Query (Must use alias column name to match INSERT command Input Column names - see help file)
--If parameter value not same for all input rows then you can prefix some column with $$ to map as parameter (i.e. $$MyParam1)
--'ODBC', 'Driver={ZappySys CSV Driver};DataPath=C:\AccountsToInsert.csv'
--'ODBC', 'DSN=MyDSN'
--'OLEDB', 'Provider=SQLNCLI11;Server=localhost,1433;Database=tempdb;Trusted_Connection=yes;'

, 'select
      21863188631451 as id
    , ''Abc Inc'' as name
	,''zcrm_1558554000052161270'' as external_id
	,114094762733  as group_id
	,''["paid","trial","solved"]'' as tags
	,''some details'' as details
	,''some notes'' as notes
	,''{"startdate": "1981-01-23", "revenue": 12000000.50, "somenumber": 1235678}'' as organization_fields
	,''["aaa.com", "bbb.com"]'' domain_names
	,''false'' as shared_tickets
	,''false'' as shared_comments
')]]>
      </Code>
    </Example>	
	
  </Examples>
  

  
</ApiConfig>