Jira Connector
Jira Connector Help
Version 6
ZappySys Logo File Version: v6
Supported Engine: 12

Jira Connector - Source Code


<ApiConfig Name="Jira"
           Slug="jira-connector"
           Version="6"
		   EngineVersion="12"
           Id="288c083b-6edb-4705-851b-80ecd6357347"
           Desc="Jira Connector can be used to integrate Jira and your defined data source, e.g. Microsoft SQL, Oracle, Excel, Power BI, etc. Get, write, delete Issues, Users, Worklogs, Comments just in a few clicks!"
           Logo="data:image/png;base64,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"
           >

  <VersionHistory>
    <Change Date="2023-07-13" Type="New">Custom fields not listed correctly after you select them.</Change>
	<Change Date="2023-05-23" Type="New">Added support for OAuth.</Change>
	<Change Date="2023-05-23" Type="New">Added Lookup Support for Issues so now you can search by many Keys.</Change>
	<Change Date="2023-05-23" Type="New">Improved speed by changing maxResults to 100 and use PagingMaxRowsExpr to detect total rows (one less request in pagination).</Change>
    <Change Date="2022-05-02" Type="New">Added new endpoints get_custom_fields, get_custom_field_contexts and get_custom_field_option_for_context.</Change>
    <Change Date="2022-02-28" Type="New">Added new endpoints get_changelogs, get_changelog_details and get_changelogs_by_ids.</Change>
    <Change Date="2022-02-28" Type="New">Updated the Issue table [WorkRatio] column data type to String as it contains long number value (e.g.9117xxxxxxxxxxx2983).</Change>
    <Change Date="2022-02-21" Type="New">Added customfield value support for single / multi value fields. For multi select you can see comma separated values now.</Change>
    <Change Date="2021-03-29">Initial version</Change>
  </VersionHistory>

  <ServiceUrls>
    <ServiceUrl Name="V3 API Key" Url="https://[$Subdomain$].atlassian.net/rest/api/3" />
    <ServiceUrl Name="V3 OAuth" Url="https://api.atlassian.com/ex/jira/[$OrganizationId$]/rest/api/3" Desc="https://api.atlassian.com/ex/jira/c6613685-699f-46dc-8013-f487134bc9fd/rest/api/3"/>
	
  </ServiceUrls>
  <Auths>
    <Auth Name="Http" Label="API Key based Authentication" Type="Http" ConnStr="CredentialType=Basic;" TestEndPoint="get_fields">
      <Params>
        <Param Name="Subdomain" Required="True" Label="Subdomain" Desc="Your company's Atlassian subdomain" />
        <Param Name="UserName"  Required="True" Label="Atlassian User Name (email)" HelpLink="" />
        <Param Name="Password"  Required="True" Label="API Key" HelpLink="https://id.atlassian.com/manage-profile/security/api-tokens" Secret="True" Desc="Get your API key by going to https://id.atlassian.com/manage-profile/security/api-tokens" />
        <Param Name="CustomColumnsRegex" Template="CustomColumnsRegexParam" />	
      </Params>
      <Notes>
        <![CDATA[Firstly, login into your Atlassian account and then go to your Jira profile:
<p />
<ol>
  <li>Go to <a target="_blank" href="https://id.atlassian.com/manage-profile/security">Profile > Security</a>.</li>
  <li>Click <a target="_blank" href="https://id.atlassian.com/manage-profile/security/api-tokens">Create and manage API tokens</a>.</li>
  <li>Then click <b>Create API token</b> button and give your token a label.</li>
  <li>When window appears with new API token, copy and use it in this connection manager.</li>  
  <li>That's it!</li>  
</ol>
]]>
      </Notes>
    </Auth>
    <Auth Type="OAuth" Name="oauth" Label="OAuth based Authentication" Desc="OAuth App must be created in Atlassian Developer Console. It is found at https://developer.atlassian.com/console/myapps/"
      HelpLink="https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/"
      ConnStr="Provider=Custom;OAuthVersion=OAuth2;AuthUrl=https://auth.atlassian.com/authorize;TokenUrl=https://auth.atlassian.com/oauth/token;Scope=[$Scope$];ScopeSeparator={space};ContentType=application/json;ExtraAttributesForAuthRequest=audience=api.atlassian.com&amp;prompt=consent"
      TestEndPoint="get_fields">
      <Notes>
        <![CDATA[Firstly, login into your Atlassian account and then create Jira application:
<p />
<ol>
  <li>Go to <a target="_blank" href="https://developer.atlassian.com/console/myapps/">Atlassian Developer area.</a></li>
  <li>Click <a target="_blank" href="https://developer.atlassian.com/console/myapps/create-3lo-app/">Create app</a> and select <b>OAuth 2.0 (3LO) integration</b> app to create an OAuth app.</li>
  <li>Give your app a name, accept the terms and hit <b>Create</b>.</li>
  <li>Then hit <b>App details</b> panel and copy paste <i>Client ID</i> and <i>Secret</i> into the API Connection Manager configuration grid into the proper places.</li>
  <li>Then go back and click <b>Permissions</b> panel to enable permissions/scopes for your application. You can enable them all.</li>
  <li>Go back again to application settings and click <b>Authorization</b> panel.</li>
  <li>Click <b>Configure</b> button and in <b>Callback URL</b> enter your own Callback URL or simply enter <i>https://zappysys.com/oauth</i> if you don't have one.</li>
  <li>Use this same <i>Callback URL (Return URL)</i> in a API Connection Manager configuration grid.</li>
  <li>In <i>API Connection Manager</i> enter one or more of these scopes (<a target="_blank" href="https://developer.atlassian.com/cloud/jira/platform/scopes-for-connect-and-oauth-2-3LO-apps/#oauth-2-0-authorization-code-only-scopes">read more</a> about available scopes) into <b>Scopes</b> property:
      <ol>
          <li>offline_access <i>(a must)</i></li>
          <li>read:jira-user</li>
          <li>read:jira-work</li>
          <li>write:jira-work</li>
          <li>manage:jira-project</li>
          <li>manage:jira-configuration</li>
      </ol>
  </li>
  <li>Also configure your company's <b>Subdomain</b> in the properties grid.</li>
  <li>Click <b>Generate Token</b> to generate tokens.</li>   
  <li>That's it!</li>  
</ol>
]]>
      </Notes>
      <Params>
        <Param Name="ClientId" Required="True" />
        <Param Name="ClientSecret" Secret="True" Required="True"/>
        <Param Name="Scope"
               Required="True"
               Options="offline_access;read:jira-user;read:jira-work;write:jira-work;manage:jira-project;manage:jira-configuration;manage:jira-webhook"
               MultiSelectSeparator=" "
               MultiSelect="True"
               Value="offline_access~read:jira-user~read:jira-work~write:jira-work~manage:jira-project~manage:jira-configuration"
               Desc="Permissions you want to use."
               Example="offline_access read:jira-user read:jira-work write:jira-work manage:jira-project manage:jira-configuration manage:jira-webhook"
               HelpLink="https://developer.atlassian.com/cloud/jira/platform/scopes-for-connect-and-oauth-2-3LO-apps/#oauth-2-0-authorization-code-only-scopes"/>
        <Param Name="ReturnUrl" Value="https://zappysys.com/oauth"  Required="True"/>
		
		<Param Name="OrganizationId" OptionsEndPoint="get_resources"  OptionsEndPointValueColumn="Id" OptionsEndPointLabelColumn="Name" Required="True" Label="Organization Id (Select after clicking [Generate Token])" Desc="Your company's Alphanumeric ID (e.g. c66xxx-xxx-xxx). This is obtained by calling GET " />
        <Param Name="CustomColumnsRegex" Template="CustomColumnsRegexParam" Label="Custom Columns for output (Select after clicking [Generate Token])"/>		
      </Params>
    </Auth>
  </Auths>

  <Template>
    <Param Name="CustomColumnsRegexParam" LabelXX="Custom columns for output"     
				OptionsEndPoint="get_custom_fields" OptionsEndPointLabelColumn="ScopeProjectId,Name" 
				OptionsEndPointValueColumn="Key" OptionsExtra="All Custom Columns=(.*);No Custom Columns=$^" 
				OptionsEndPointParameters="CustomColumnsRegex=(.*)"
				OptionsEndPointSortBy="ScopeProjectId desc,Name" MultiSelect="True" MultiSelectSeparator="|"	
               Value="" 
			   Desc="Enter regular expression for custom columns which you like to output. Use Pipe to type keys (internal names for columns). You can use Regex too (e.g. field_100\d+  )"
               
        />	  
    <EndPoint Name="WorklogTemplate"
              ResponseFormat="Json"
              JsonRowFormat="Multicontent"
              ContentType="application/json"
              Body="{$rows$}">
      <Params>
        <Param Type="Placeholder" Name="IssueIdOrKey" Desc="Enter Issue ID or Key" Example="100002 or MYISSUE-1"/>
      </Params>
      <InputColumns>
        <Column Name="visibility.type" Label="VisibilityType" Desc="Enter 'group' or 'role'" Example="group" />
        <Column Name="visibility.value" Label="VisibilityValue" Desc="The name of the group or role to which visibility of this item is restricted." Example="jira-developers" />
        <Column Name="comment" Label="Comment" Raw="True"
                                               ValueTemplate="{ &quot;type&quot;: &quot;doc&quot;, &quot;version&quot;: 1, &quot;content&quot;: [ { &quot;type&quot;: &quot;paragraph&quot;, &quot;content&quot;: [ { &quot;text&quot;: &quot;{$value$}&quot;, &quot;type&quot;: &quot;text&quot; } ] } ] }"
                                               DataType="DT_WSTR"
                                               Length="4000" />
        <Column Name="comment" Label="CommentFormatted" DataType="DT_NTEXT"/>
        <Column Name="started" Label="StartedAt" DataType="DT_WSTR" Length="100" Desc="Datetime with timezone" Example="2020-02-23T16:20:30.123+0300"/>
        <Column Name="timeSpent" Label="TimeSpent" DataType="DT_WSTR" Length="50" Desc="Defines a time spent in hours and minutes" Example="3h 20m" />
        <Column Name="timeSpentSeconds" Label="TimeSpentInSeconds" DataType="DT_I8" Desc="Defines a time spent in seconds" Example="12000" />
      </InputColumns>
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_WSTR" Length="50" />
        <Column Name="issueId" Label="IssueId" DataType="DT_WSTR" Length="50" />
        <Column Name="self" Label="Self" DataType="DT_WSTR" Length="150" />
        <Column Name="author.self" Label="AuthorSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="author.accountId" Label="AuthorAccountId" DataType="DT_WSTR" Length="100" />
        <Column Name="author.emailAddress" Label="AuthorEmailAddress" DataType="DT_WSTR" Length="100" />
        <Column Name="author.displayName" Label="AuthorDisplayName" DataType="DT_WSTR" Length="200" />
        <Column Name="author.active" Label="AuthorIsActive" DataType="DT_BOOL" />
        <Column Name="author.timeZone" Label="AuthorTimeZone" DataType="DT_WSTR" Length="50" />
        <Column Name="author.accountType" Label="AuthorAccountType" DataType="DT_WSTR" Length="50" />
        <Column Name="comment.content" Label="CommentFormatted" DataType="DT_NTEXT" />
        <Column Name="comment.content" Label="Comment" DataType="DT_WSTR" Functions="[$1]|~|$..content[*].text|~| ,FUN_JSON_TO_TEXT" />
        <Column Name="updateAuthor.self" Label="UpdateAuthorSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="updateAuthor.accountId" Label="UpdateAuthorAccountId" DataType="DT_WSTR" Length="150" />
        <Column Name="updateAuthor.emailAddress" Label="UpdateAuthorEmailAddress" DataType="DT_WSTR" Length="100" />
        <Column Name="updateAuthor.displayName" Label="UpdateAuthorDisplayName" DataType="DT_WSTR" Length="50" />
        <Column Name="updateAuthor.active" Label="UpdateAuthorActive" DataType="DT_BOOL" />
        <Column Name="updateAuthor.timeZone" Label="UpdateAuthorTimeZone" DataType="DT_WSTR" Length="50" />
        <Column Name="updateAuthor.accountType" Label="UpdateAuthorAccountType" DataType="DT_WSTR" Length="50" />
        <Column Name="created" Label="Created" DataType="DT_DBTIMESTAMP" />
        <Column Name="updated" Label="Updated" DataType="DT_DBTIMESTAMP" />
        <Column Name="started" Label="Started" DataType="DT_DBTIMESTAMP" />
        <Column Name="timeSpent" Label="TimeSpent" DataType="DT_WSTR" Length="50" />
        <Column Name="timeSpentSeconds" Label="TimeSpentInSeconds" DataType="DT_I8" />
        <Column Name="author.avatarUrls.48x48" Label="AuthorAvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="author.avatarUrls.24x24" Label="AuthorAvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="author.avatarUrls.16x16" Label="AuthorAvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="author.avatarUrls.32x32" Label="AuthorAvatarUrls32x32" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.avatarUrls.48x48" Label="UpdateAuthorAvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.avatarUrls.24x24" Label="UpdateAuthorAvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.avatarUrls.16x16" Label="UpdateAuthorAvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.avatarUrls.32x32" Label="UpdateAuthorAvatarUrls32x32" DataType="DT_WSTR" Length="500" />
      </OutputColumns>
    </EndPoint>

    <EndPoint Name="IssuesTemplate" Url="/search?startAt=0&amp;maxResults=100" Method="GET" BatchSize="500" RequestFormat="Csv" Filter="$.issues[*]">
      <Params>
        <Param Name="SearchBy"
               Label="Search by"
               Options="Project;JQL;Key"
              />
        <Param Name="Project"
               Key="jql"
               Required="False"
               OptionsEndPoint="get_projects"
               OptionsEndPointValueColumn="key"
               OptionsEndPointLabelColumn="name"
               ValueTemplate="project=&quot;{$value$}&quot;"
               Type="Query"
               VisibleIf="SearchBy==Project"
               Desc="Specify a project to search issues for"
              />
        <Param Name="JQL"
               Key="jql"
               Required="False"
               Type="Query"
               VisibleIf="SearchBy==JQL"
               Desc="Use JQL to use an advanced mode of searching"
               Example="project=MyProjectKey"
               HelpLink="https://www.atlassian.com/software/jira/guides/expand-jira/jql#advanced-search"
              />
        <Param Name="Key"
			   Label="Issue Key(s) or Ids - Comma Separated (PRJA-10,PRJA-13)"
			   IsKey="True"		
               Key="jql"
               Required="False"
               Type="Query"
               VisibleIf="SearchBy==Key"
			   Functions="{$rows$}"
			   ValueTemplate="Key in ({$value$})"
               Desc="Use comma separated IDs or Keys for Issues. 1000 ids max or JIRA internal limit for Payload."
              />
        <Param Name="CustomColumnsRegex" Template="CustomColumnsRegexParam" />				  
        <Param Name="PagingMode" Type="Property" Value="1" />
        <Param Name="PagingByUrlAttributeName" Type="Property" Value="startAt" />
        <Param Name="PagingIncrementBy" Type="Property" Value="100" Desc="This must be same as maxResults in URL"/>
		<Param Name="PagingMaxRowsExpr" Type="Property" Value="$.total" />
		<Param Name="PagingMaxRowsDataPathExpr" Type="Property" Value="$.issues[*]" />
		
      </Params>
	  <LayoutMap>
          <![CDATA[<?xml version="1.0" encoding="utf-8"?>
            <settings>
              <dataset id="root" readfrominput="True" />
              <map name="Key" src="Key" />
            </settings>]]>
      </LayoutMap>
    </EndPoint>
		
	
    <EndPoint Name="FieldsTemplate" CachedTtl="30" Url="/field" Method="GET" >
	  <Params>
        <Param Name="EnableRawOutputModeSingleRow" Type="Property" Value="True" Hidden="True" />
        <Param Name="RawOutputDataRowTemplate" Type="Property" Value="{data: [$1]}" Hidden="True" />
      </Params>

      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_WSTR" Length="120" />
        <Column Name="key" Label="Key" DataType="DT_WSTR" Length="120" />
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="250" />
        <Column Name="custom" Label="Custom" DataType="DT_BOOL" />
        <Column Name="orderable" Label="Orderable" DataType="DT_BOOL" />
        <Column Name="navigable" Label="Navigable" DataType="DT_BOOL" />
        <Column Name="searchable" Label="Searchable" DataType="DT_BOOL" />
        <Column Name="clauseNames" Label="ClauseNames" DataType="DT_WSTR" Length="900" />
        <Column Name="schema.type" Label="SchemaType" DataType="DT_WSTR" Length="200" />
        <Column Name="schema.system" Label="SchemaSystem" DataType="DT_WSTR" Length="200" />
        <Column Name="untranslatedName" Label="UntranslatedName" DataType="DT_WSTR" Length="200" />
        <Column Name="schema.items" Label="SchemaItems" DataType="DT_WSTR" Length="200" />
        <Column Name="schema.custom" Label="SchemaCustom" DataType="DT_WSTR" Length="100" />
        <Column Name="schema.customId" Label="SchemaCustomId" DataType="DT_I8" />
        <Column Name="scope.type" Label="ScopeType" DataType="DT_WSTR" Length="50" />
        <Column Name="scope.project.id" Label="ScopeProjectId" DataType="DT_WSTR" Length="50" />
      </OutputColumns>      
    </EndPoint>
	
  </Template>

  <EndPoints>
  
  

    <!-- ==================
             ORGS
    =================== -->
    <EndPoint Name="get_resources" Label="Read Resources" Url="https://api.atlassian.com/oauth/token/accessible-resources" >
		<OutputColumns>
			<Column Name="id" Label="Id"/>
			<Column Name="name" Label="Name"/>
			<Column Name="url" Label="Url"/>
			<Column Name="scopes" Label="Scopes" DataType="DT_WSTR" Length="1000" />
		</OutputColumns>
    </EndPoint>  
  
    <!-- ==================
             FIELDS
    =================== -->
    <EndPoint Name="get_fields" Label="Read Fields" Template="FieldsTemplate" Filter="$.data[*]">
	  <Params>
        <Param Name="Filter" Type="Property" Value="$.data[*]" 
              Options="All fields=$.data[*];
              Custom fields=$.data[?(@custom==true)];
			  System fields (non-custom)=$.data[?(@custom==false)]
			  Custom Column name contains=$.data[?(@custom==true  &amp;&amp; @name=~/ProjectACol1|ProjectACol2/)];
			  Custom Column key contains=$.data[?(@custom==true  &amp;&amp; @key=~/customfield_10001|customfield_10002/)];
			  Custom Column name starts with=$.data[?(@custom==true  &amp;&amp; @name=~/^order|^survey/)];
			  Custom Column name ends with=$.data[?(@custom==true  &amp;&amp; @name=~/order$|survey$/)];
			  Custom Column name exact match=$.data[?(@custom==true  &amp;&amp; @name=~/^ordernumber$|^surveyquestion$/)];
			  " 													
        />
		
			   
      </Params>      
    </EndPoint>
	  <!-- ==================
             Custom FIELDS
    =================== -->
    <EndPoint Name="get_custom_fields" Label="Read Custom Fields" Template="FieldsTemplate" 
	          Filter="$.data[?(@custom==true  &amp;&amp; @key=~/[$CustomColumnsRegex$]/)]">
	  <Params>
		<Param Name="CustomColumnsRegex" Template="CustomColumnsRegexParam"/>	  
      </Params> 
    </EndPoint>

    <!-- =======================
             ISSUE TYPES
    ======================== -->
    <EndPoint Name="get_types" Label="Read Issue Types" Url="/issuetype" Method="GET" Cached="True" CachedTtl="60">
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_WSTR" Length="50" />
        <Column Name="description" Label="Description" DataType="DT_WSTR" Length="1000" />
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="200" />
        <Column Name="untranslatedName" Label="UntranslatedName" DataType="DT_WSTR" Length="200" />
        <Column Name="subtask" Label="Subtask" DataType="DT_BOOL" />
        <Column Name="avatarId" Label="AvatarId" DataType="DT_I8" />
        <Column Name="hierarchyLevel" Label="HierarchyLevel" DataType="DT_I8" />
        <Column Name="scope.type" Label="ScopeType" DataType="DT_WSTR" Length="50" />
        <Column Name="scope.project.id" Label="ScopeProjectId" DataType="DT_WSTR" Length="50" />
        <Column Name="iconUrl" Label="IconUrl" DataType="DT_WSTR" Length="500" />
        <Column Name="self" Label="Self" DataType="DT_WSTR" Length="150" />
      </OutputColumns>
    </EndPoint>

    <!-- =====================
               USERS 
    ====================== -->
    <EndPoint Name="get_users" Label="Read Users" Url="/users/search?startAt=0&amp;maxResults=50" Method="GET">
      <Params>
        <Param Name="PagingMode" Type="Property" Value="1" />
        <Param Name="PagingByUrlAttributeName" Type="Property" Value="startAt" />
        <Param Name="PagingIncrementBy" Type="Property" Value="50" />
      </Params>
      <OutputColumns>
        <Column Name="displayName" Label="DisplayName" DataType="DT_WSTR" Length="200" />
        <Column Name="emailAddress" Label="EmailAddress" DataType="DT_WSTR" Length="200" />
        <Column Name="accountId" Label="AccountId" DataType="DT_WSTR" Length="150" />
        <Column Name="accountType" Label="AccountType" DataType="DT_WSTR" Length="50" />
        <Column Name="active" Label="Active" DataType="DT_BOOL" />
        <Column Name="locale" Label="Locale" DataType="DT_WSTR" Length="50" />
        <Column Name="self" Label="Self" DataType="DT_WSTR" Length="150" />
        <Column Name="avatarUrls.48x48" Label="AvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.24x24" Label="AvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.16x16" Label="AvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.32x32" Label="AvatarUrls32x32" DataType="DT_WSTR" Length="500" />
      </OutputColumns>
    </EndPoint>

    <!-- INSERT USER -->
    <EndPoint Name="create_user" Label="Create User" Url="/user" Method="POST"
              JsonRowFormat="Multicontent"
               ContentType="application/json"
               Body="{$rows$}">
      <InputColumns>
        <Column Name="password" Label="Password" DataType="DT_WSTR" Length="50" Desc="If password is not supplied, random one is generated" />
        <Column Name="emailAddress" Label="EmailAddress" DataType="DT_WSTR" Length="200" />
        <Column Name="displayName" Label="DisplayName" DataType="DT_WSTR" Length="200" />
      </InputColumns>
      <OutputColumns>
        <Column Name="displayName" Label="DisplayName" DataType="DT_WSTR" Length="200" />
        <Column Name="emailAddress" Label="EmailAddress" DataType="DT_WSTR" Length="200" />
        <Column Name="accountId" Label="AccountId" DataType="DT_WSTR" Length="150" />
        <Column Name="accountType" Label="AccountType" DataType="DT_WSTR" Length="50" />
        <Column Name="active" Label="Active" DataType="DT_BOOL" />
        <Column Name="locale" Label="Locale" DataType="DT_WSTR" Length="50" />
        <Column Name="self" Label="Self" DataType="DT_WSTR" Length="150" />
        <Column Name="avatarUrls.48x48" Label="AvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.24x24" Label="AvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.16x16" Label="AvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.32x32" Label="AvatarUrls32x32" DataType="DT_WSTR" Length="500" />
      </OutputColumns>
    </EndPoint>

    <!-- DELETE USER -->
    <EndPoint Name="delete_user" Label="Delete User" Url="/user" Method="DELETE">
      <Params>
        <Param Name="AccountId" Key="accountId" Type="Query" Example="5b10ac8d82e05b22cc7d4ef5"/>
      </Params>
      <OutputColumns>
        <Column Name="Response" DataType="DT_NTEXT" />
      </OutputColumns>
    </EndPoint>

    <!-- ====================
             PROJECTS 
    ===================== -->
    <EndPoint Name="get_projects" Label="Read Projects" Url="/project/search" Method="GET" Filter="$.values[*]">
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="key" Label="Key" DataType="DT_WSTR" Length="50" />
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="100" />
        <Column Name="projectCategory.id" Label="ProjectCategoryId" DataType="DT_WSTR" Length="50" />
        <Column Name="projectCategory.name" Label="ProjectCategoryName" DataType="DT_WSTR" Length="50" />
        <Column Name="projectCategory.description" Label="ProjectCategoryDescription" DataType="DT_WSTR" Length="150" />
        <Column Name="projectCategory.self" Label="ProjectCategorySelf" DataType="DT_WSTR" Length="150" />
        <Column Name="simplified" Label="Simplified" DataType="DT_BOOL" />
        <Column Name="style" Label="Style" DataType="DT_WSTR" Length="50" />
        <Column Name="insight.totalIssueCount" Label="InsightTotalIssueCount" DataType="DT_I8"/>
        <Column Name="insight.lastIssueUpdateTime" Label="InsightLastIssueUpdateTime" DataType="DT_DBTIMESTAMP"/>
        <Column Name="avatarUrls.48x48" Label="AvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.24x24" Label="AvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.16x16" Label="AvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.32x32" Label="AvatarUrls32x32" DataType="DT_WSTR" Length="500" />
      </OutputColumns>
    </EndPoint>

    <!-- CREATE PROJECT -->
    <EndPoint Name="create_project" Label="Create Project" Url="/project" Method="POST"
              ContentType="application/json"
              Body="{$rows$}"
              JsonRowFormat="Multicontent">
      <InputColumns>
        <Column Name="key" Label="ProjectKey" DataType="DT_WSTR" Length="50" Desc="A key uniquely representing your project" Example="PRJ" />
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="100" />
        <Column Name="projectTypeKey" Label="ProjectTypeKey" Desc="The project type, which dictates the application-specific feature set. Possible values: business, service_desk, software" Example="business" DataType="DT_WSTR" Length="100" />
        <Column Name="description" Label="Description" DataType="DT_WSTR" Length="300" />
        <Column Name="leadAccountId" Label="LeadAccountId" DataType="DT_WSTR" Length="100" Desc="The account ID of the project lead" Example="12551:12be2e5a-9ebf-1235-be58-c3ea8c98b9e2" />
        <Column Name="url" Label="Url" DataType="DT_WSTR" Length="400" Desc="A link to information about this project, such as project documentation" />
        <Column Name="assigneeType" Label="AssigneeType" Desc="The default assignee when creating issues for this project. Possible values: PROJECT_LEAD, UNASSIGNED" Example="PROJECT_LEAD" DataType="DT_WSTR" Length="100" />
        <Column Name="avatarId" Label="AvatarId" DataType="DT_I8" Desc="An integer value for the project's avatar."/>
        <Column Name="issueSecurityScheme" Label="IssueSecurityScheme" DataType="DT_I8" Desc="The ID of the issue security scheme for the project, which enables you to control who can and cannot view issues." />
        <Column Name="permissionScheme" Label="PermissionScheme" DataType="DT_I8" Desc="The ID of the permission scheme for the project."/>
        <Column Name="notificationScheme" Label="NotificationScheme" DataType="DT_I8" Desc="The ID of the notification scheme for the project."/>
        <Column Name="categoryId" Label="CategoryId" DataType="DT_I8" Desc="The ID of the project's category." />
      </InputColumns>
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="key" Label="Key" DataType="DT_WSTR" Length="50" />
        <Column Name="self" Label="Self" DataType="DT_WSTR" Length="200" />
      </OutputColumns>
    </EndPoint>

    <!-- UPSERT PROJECT -->
    <EndPoint Name="upsert_project" Label="Upsert Project" Url="/project/[$ProjectIdOrKey$]" Method="PUT"
              ContentType="application/json"
              Body="{$rows$}"
              JsonRowFormat="Multicontent">
      <Params>
        <Param Name="ProjectIdOrKey" Type="Placeholder" />
      </Params>
      <InputColumns>
        <Column Name="key" Label="ProjectKey" DataType="DT_WSTR" Length="50" Desc="A key uniquely representing your project" Example="PRJ" />
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="100" />
        <Column Name="description" Label="Description" DataType="DT_WSTR" Length="300" />
        <Column Name="leadAccountId" Label="LeadAccountId" DataType="DT_WSTR" Length="100" Desc="The account ID of the project lead" Example="12551:12be2e5a-9ebf-1235-be58-c3ea8c98b9e2" />
        <Column Name="url" Label="Url" DataType="DT_WSTR" Length="400" Desc="A link to information about this project, such as project documentation" />
        <Column Name="assigneeType" Label="AssigneeType" Desc="The default assignee when creating issues for this project. Possible values: PROJECT_LEAD, UNASSIGNED" Example="PROJECT_LEAD" DataType="DT_WSTR" Length="100" />
        <Column Name="avatarId" Label="AvatarId" DataType="DT_I8" Desc="An integer value for the project's avatar."/>
        <Column Name="issueSecurityScheme" Label="IssueSecurityScheme" DataType="DT_I8" Desc="The ID of the issue security scheme for the project, which enables you to control who can and cannot view issues." />
        <Column Name="permissionScheme" Label="PermissionScheme" DataType="DT_I8" Desc="The ID of the permission scheme for the project."/>
        <Column Name="notificationScheme" Label="NotificationScheme" DataType="DT_I8" Desc="The ID of the notification scheme for the project."/>
        <Column Name="categoryId" Label="CategoryId" DataType="DT_I8" Desc="The ID of the project's category." />
      </InputColumns>
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_WSTR" Length="50" />
        <Column Name="key" Label="Key" DataType="DT_WSTR" Length="50" />
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="100" />
        <Column Name="description" Label="Description" DataType="DT_NTEXT" />
        <Column Name="issueTypes" Label="IssueTypes" DataType="DT_NTEXT" />
        <Column Name="expand" Label="Expand" DataType="DT_WSTR" Length="300" />
        <Column Name="self" Label="Self" DataType="DT_WSTR" Length="150" />
        <Column Name="entityId" Label="EntityId" DataType="DT_WSTR" Length="100" />
        <Column Name="uuid" Label="Uuid" DataType="DT_WSTR" Length="100" />
        <Column Name="properties" Label="Properties" DataType="DT_NTEXT" />
        <Column Name="components" Label="Components" DataType="DT_NTEXT" />
        <Column Name="lead.self" Label="LeadSelf" DataType="DT_WSTR" Length="500" />
        <Column Name="lead.accountId" Label="LeadAccountId" DataType="DT_WSTR" Length="100" />
        <Column Name="lead.avatarUrls.48x48" Label="LeadAvatarUrls48x48" DataType="DT_WSTR" Length="700" />
        <Column Name="lead.avatarUrls.24x24" Label="LeadAvatarUrls24x24" DataType="DT_WSTR" Length="700" />
        <Column Name="lead.avatarUrls.16x16" Label="LeadAvatarUrls16x16" DataType="DT_WSTR" Length="700" />
        <Column Name="lead.avatarUrls.32x32" Label="LeadAvatarUrls32x32" DataType="DT_WSTR" Length="700" />
        <Column Name="lead.displayName" Label="LeadDisplayName" DataType="DT_WSTR" Length="100" />
        <Column Name="lead.active" Label="LeadActive" DataType="DT_BOOL" />
        <Column Name="projectTypeKey" Label="ProjectTypeKey" DataType="DT_WSTR" Length="50" />
        <Column Name="assigneeType" Label="AssigneeType" DataType="DT_WSTR" Length="50" />
        <Column Name="versions" Label="Versions" DataType="DT_WSTR" Length="50" />
        <Column Name="simplified" Label="Simplified" DataType="DT_BOOL" />
        <Column Name="style" Label="Style" DataType="DT_WSTR" Length="50" />
        <Column Name="isPrivate" Label="IsPrivate" DataType="DT_BOOL" />
        <Column Name="roles.atlassian-addons-project-access" Label="RolesAtlassianAddonsProjectAccess" DataType="DT_WSTR" Length="500" />
        <Column Name="roles.Administrator" Label="RolesAdministrator" DataType="DT_WSTR" Length="500" />
        <Column Name="roles.Viewer" Label="RolesViewer" DataType="DT_WSTR" Length="500" />
        <Column Name="roles.Member" Label="RolesMember" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.48x48" Label="AvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.24x24" Label="AvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.16x16" Label="AvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="avatarUrls.32x32" Label="AvatarUrls32x32" DataType="DT_WSTR" Length="500" />
      </OutputColumns>
    </EndPoint>

    <!-- DELETE PROJECT -->
    <EndPoint Name="delete_project" Label="Delete Project" Url="/project/[$ProjectIdOrKey$]" Method="DELETE"
              ResponseFormat="Json" >
      <Params>
        <Param Name="ProjectIdOrKey" Type="Placeholder" Desc="Project ID or Key, uniquely representing a project" Example="10002, MYPRJ" />
        <Param Name="EnableUndo" Key="enableUndo" Type="Query" />
      </Params>
      <OutputColumns>
        <Column Name="Response" DataType="DT_NTEXT" />
      </OutputColumns>
    </EndPoint>

    <!-- =====================
            READ ISSUES
    ====================== -->
    <EndPoint Name="get_issues" Template="IssuesTemplate"  Label="Read Issues" >
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="key" Label="Key" DataType="DT_WSTR" Length="50" />
        <Column Name="expand" Label="Expand" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.statuscategorychangedate" Label="StatusCategoryChangeDate" DataType="DT_DBTIMESTAMP" />
        <Column Name="self" Label="Self" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.issuetype.self" Label="IssueTypeSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.issuetype.id" Label="IssueTypeId" DataType="DT_I8" />
        <Column Name="fields.issuetype.description" Label="IssueTypeDescription" DataType="DT_NTEXT" />
        <Column Name="fields.issuetype.iconUrl" Label="IssueTypeIconUrl" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.issuetype.name" Label="IssueTypeName" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.issuetype.subtask" Label="IssueTypeSubtask" DataType="DT_BOOL" />
        <Column Name="fields.issuetype.avatarId" Label="IssueTypeAvatarId" DataType="DT_I4" />
        <Column Name="fields.issuetype.entityId" Label="IssueTypeEntityId" DataType="DT_GUID" />
        <Column Name="fields.issuetype.hierarchyLevel" Label="IssueTypeHierarchyLevel" DataType="DT_I4" />
        <Column Name="fields.timespent" Label="TimespentInSeconds" DataType="DT_I8" />
        <Column Name="fields.project.self" Label="ProjectSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.project.id" Label="ProjectId" DataType="DT_I8" />
        <Column Name="fields.project.key" Label="ProjectKey" DataType="DT_WSTR" Length="50" />
        <Column Name="fields.project.name" Label="ProjectName" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.project.projectTypeKey" Label="ProjectTypeKey" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.project.simplified" Label="ProjectSimplified" DataType="DT_BOOL" />
        <Column Name="fields.project.avatarUrls.48x48" Label="ProjectAvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.project.avatarUrls.24x24" Label="ProjectAvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.project.avatarUrls.16x16" Label="ProjectAvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.project.avatarUrls.32x32" Label="ProjectAvatarUrls32x32" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.fixVersions" Label="FixVersions" DataType="DT_NTEXT" />
        <Column Name="fields.aggregatetimespent" Label="AggregateTimespentInSeconds" DataType="DT_I8" />
        <Column Name="fields.resolution" Label="Resolution" DataType="DT_NTEXT" />
        <Column Name="fields.resolutiondate" Label="ResolutionDate" DataType="DT_DBTIMESTAMP" />
        <Column Name="fields.workratio" Label="WorkRatio" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.watches.self" Label="WatchesSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.watches.watchCount" Label="WatchesWatchCount" DataType="DT_I4" />
        <Column Name="fields.watches.isWatching" Label="WatchesIsWatching" DataType="DT_BOOL"/>
        <Column Name="fields.lastViewed" Label="LastViewed" DataType="DT_DBTIMESTAMP" />
        <Column Name="fields.created" Label="Created" DataType="DT_DBTIMESTAMP" />
        <Column Name="fields.priority.self" Label="PrioritySelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.priority.iconUrl" Label="PriorityIconUrl" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.priority.name" Label="PriorityName" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.priority.id" Label="PriorityId" DataType="DT_I4" />
        <Column Name="fields.labels" Label="Labels" DataType="DT_NTEXT" />
        <Column Name="fields.aggregatetimeoriginalestimate" Label="AggregateTimeOriginalEstimate" DataType="DT_WSTR" Length="50"/>
        <Column Name="fields.timeestimate" Label="TimeEstimate" DataType="DT_WSTR" Length="50" />
        <Column Name="fields.versions" Label="Versions" DataType="DT_NTEXT" />
        <Column Name="fields.issuelinks" Label="IssueLinks" DataType="DT_NTEXT" />
        <Column Name="fields.assignee.self" Label="AssigneeSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.assignee.accountId" Label="AssigneeAccountId" DataType="DT_WSTR" Length="100"/>
        <Column Name="fields.assignee.emailAddress" Label="AssigneeEmailAddress" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.assignee.avatarUrls.48x48" Label="AssigneeAvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.assignee.avatarUrls.24x24" Label="AssigneeAvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.assignee.avatarUrls.16x16" Label="AssigneeAvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.assignee.avatarUrls.32x32" Label="AssigneeAvatarUrls32x32" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.assignee.displayName" Label="AssigneeDisplayName" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.assignee.active" Label="AssigneeActive" DataType="DT_BOOL" Length="32" />
        <Column Name="fields.assignee.timeZone" Label="AssigneeTimeZone" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.assignee.accountType" Label="AssigneeAccountType" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.updated" Label="Updated" DataType="DT_DBTIMESTAMP" />
        <Column Name="fields.status.self" Label="StatusSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.status.description" Label="StatusDescription" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.status.iconUrl" Label="StatusIconUrl" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.status.name" Label="StatusName" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.status.id" Label="StatusId" DataType="DT_I4" />
        <Column Name="fields.status.statusCategory.self" Label="StatusCategorySelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.status.statusCategory.id" Label="StatusCategoryId" DataType="DT_I4" />
        <Column Name="fields.status.statusCategory.key" Label="StatusCategoryKey" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.status.statusCategory.colorName" Label="StatusCategoryColorName" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.status.statusCategory.name" Label="StatusCategoryName" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.components" Label="Components" DataType="DT_NTEXT" />
        <Column Name="fields.timeoriginalestimate" Label="TimeOriginalEstimate" DataType="DT_WSTR" Length="50" />
        <Column Name="fields.description.version" Label="DescriptionVersion" DataType="DT_I4" />
        <Column Name="fields.description.type" Label="DescriptionType" DataType="DT_WSTR" Length="50" />
        <Column Name="fields.description.content" Label="DescriptionFormatted" DataType="DT_NTEXT" />
        <Column Name="fields.description.content" Label="Description" DataType="DT_WSTR" Functions="[$1]|~|$..content[*].text|~| ,FUN_JSON_TO_TEXT" />
        <Column Name="fields.security" Label="Security" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.aggregatetimeestimate" Label="AggregateTimeEstimate" DataType="DT_I8" />
        <Column Name="fields.summary" Label="Summary" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.creator.self" Label="CreatorSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.creator.accountId" Label="CreatorAccountId" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.creator.emailAddress" Label="CreatorEmailAddress" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.creator.avatarUrls.48x48" Label="CreatorAvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.creator.avatarUrls.24x24" Label="CreatorAvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.creator.avatarUrls.16x16" Label="CreatorAvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.creator.avatarUrls.32x32" Label="CreatorAvatarUrls32x32" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.creator.displayName" Label="CreatorDisplayName" DataType="DT_WSTR" Length="200" />
        <Column Name="fields.creator.active" Label="CreatorActive" DataType="DT_BOOL" />
        <Column Name="fields.creator.timeZone" Label="CreatorTimeZone" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.creator.accountType" Label="CreatorAccountType" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.subtasks" Label="Subtasks" DataType="DT_NTEXT" />
        <Column Name="fields.reporter.self" Label="ReporterSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.reporter.accountId" Label="ReporterAccountId" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.reporter.emailAddress" Label="ReporterEmailAddress" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.reporter.avatarUrls.48x48" Label="ReporterAvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.reporter.avatarUrls.24x24" Label="ReporterAvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.reporter.avatarUrls.16x16" Label="ReporterAvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.reporter.avatarUrls.32x32" Label="ReporterAvatarUrls32x32" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.reporter.displayName" Label="ReporterDisplayName" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.reporter.active" Label="ReporterActive" DataType="DT_BOOL"  />
        <Column Name="fields.reporter.timeZone" Label="ReporterTimeZone" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.reporter.accountType" Label="ReporterAccountType" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.aggregateprogress.progress" Label="AggregateProgressInSeconds" DataType="DT_I8" />
        <Column Name="fields.aggregateprogress.total" Label="AggregateProgressTotalInSeconds" DataType="DT_I8" />
        <Column Name="fields.environment" Label="Environment" DataType="DT_WSTR" Length="2000" />
        <Column Name="fields.duedate" Label="DueDate" DataType="DT_DATE" />
        <Column Name="fields.progress.progress" Label="ProgressInSeconds" DataType="DT_I8" />
        <Column Name="fields.progress.total" Label="ProgressTotalInSeconds" DataType="DT_I8" />
        <Column Name="fields.votes.self" Label="VotesSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.votes.votes" Label="Votes" DataType="DT_I4" />
        <Column Name="fields.votes.hasVoted" Label="HasVoted" DataType="DT_BOOL"/>
        <Column Name="fields.parent.id" Label="ParentId" DataType="DT_I4" />
        <Column Name="fields.parent.key" Label="ParentKey" DataType="DT_WSTR" Length="50" />
        <Column Name="fields.parent.self" Label="ParentSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.parent.fields.summary" Label="ParentSummary" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.parent.fields.status.self" Label="ParentStatusSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.parent.fields.status.description" Label="ParentStatusDescription" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.parent.fields.status.iconUrl" Label="ParentStatusIconUrl" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.parent.fields.status.name" Label="ParentStatusName" DataType="DT_WSTR" Length="100" />
        <Column Name="fields.parent.fields.status.id" Label="ParentStatusId" DataType="DT_I8" />
        <Column Name="fields.parent.fields.status.statusCategory.self" Label="ParentStatusCategorySelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.parent.fields.status.statusCategory.id" Label="ParentStatusCategoryId" DataType="DT_I4" />
        <Column Name="fields.parent.fields.status.statusCategory.key" Label="ParentStatusCategoryKey" DataType="DT_WSTR" Length="50" />
        <Column Name="fields.parent.fields.status.statusCategory.colorName" Label="ParentStatusCategoryColorName" DataType="DT_WSTR" Length="50" />
        <Column Name="fields.parent.fields.status.statusCategory.name" Label="ParentStatusCategoryName" DataType="DT_WSTR" Length="50" />
        <Column Name="fields.parent.fields.priority.self" Label="ParentprioritySelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.parent.fields.priority.iconUrl" Label="ParentpriorityIconUrl" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.parent.fields.priority.name" Label="ParentpriorityName" DataType="DT_WSTR" Length="50" />
        <Column Name="fields.parent.fields.priority.id" Label="ParentpriorityId" DataType="DT_I4" />
        <Column Name="fields.parent.fields.issuetype.self" Label="ParentIssueTypeSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.parent.fields.issuetype.id" Label="ParentIssueTypeId" DataType="DT_I8" />
        <Column Name="fields.parent.fields.issuetype.description" Label="ParentIssueTypeDescription" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.parent.fields.issuetype.iconUrl" Label="ParentIssueTypeIconUrl" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.parent.fields.issuetype.name" Label="ParentIssueTypeName" DataType="DT_WSTR" Length="50" />
        <Column Name="fields.parent.fields.issuetype.subtask" Label="ParentIssueTypeSubtask" DataType="DT_BOOL" />
        <Column Name="fields.parent.fields.issuetype.avatarId" Label="ParentIssueTypeAvatarId" DataType="DT_I4" />
        <Column Name="fields.parent.fields.issuetype.entityId" Label="ParentIssueTypeEntityId" DataType="DT_GUID" />
        <Column Name="fields.parent.fields.issuetype.hierarchyLevel" Label="ParentIssueTypeHierarchyLevel" DataType="DT_I4" />
        <Column Name="fields.assignee" Label="Assignee" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.resolution.self" Label="ResolutionSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="fields.resolution.id" Label="ResolutionId" DataType="DT_I8" />
        <Column Name="fields.resolution.description" Label="ResolutionDescription" DataType="DT_WSTR" Length="500" />
        <Column Name="fields.resolution.name" Label="ResolutionName" DataType="DT_WSTR" Length="50" />

        <!-- DYNAMIC CUSTOM FIELDS  -->

        <!-- Textbox, Number, Date, Url... customfield_123: "xx" or customfield_123: ["tag1", "tag2"] -->
        <Column Name="fields.[$parent.key$]" Label="[$parent.key$]" Desc="[$parent.name$]" DataType="DT_WSTR" Length="2000"
                Expand="True"
                DataEndPoint="get_custom_fields"
                ColumnInfoMap="Name=key;DataType=schema.type"
                DataTypeMap="DT_DATE=date;DT_DBTIMESTAMP=datetime;DT_NUMERIC=number;DT_RAW=array;DT_BOOL=?;"
        />

        <!-- Dropdown ... customfield_123: {value: xx} -->
        <Column Name="fields.[$parent.key$].value" Label="[$parent.key$]_value" Desc="[$parent.name$]_value" DataType="DT_WSTR" Length="2000"
                Expand="True"
                DataEndPoint="get_custom_fields"
                ColumnInfoMap="Name=key;DataType=schema.type"
                DataTypeMap="DT_DATE=date;DT_DBTIMESTAMP=datetime;DT_NUMERIC=number;DT_RAW=array;DT_BOOL=?;"
        />

        <!-- Multi Select Checkbox ... customfield_123: [{value: xx}, {value: yy}, {value: zz}]. $.data[*].value is used becuase when Array format needs filter we wrap behind the scene unde { data: <content> } so filter can be invoked at root level-->
        <Column Name="fields.[$parent.key$]" Label="[$parent.key$]_values" Desc="[$parent.name$]_values" DataType="DT_WSTR" Length="2000"
                Expand="True"
                DataEndPoint="get_custom_fields"
                ColumnInfoMap="Name=key;DataType=schema.type"
                DataTypeMap="DT_DATE=date;DT_DBTIMESTAMP=datetime;DT_NUMERIC=number;DT_RAW=array;DT_BOOL=?;"
                Functions="[$1]|~|$.data[*].value|~|,,FUN_JSON_TO_TEXT"
        />
        
        <!-- Paragraph ... customfield_123: { content:[ {content: [{text: zzz},{text: zzz}...]} , {content: [{text: zzz}, {text: zzz},..]} , ...] } -->
        <Column Name="fields.[$parent.key$].content" Label="[$parent.key$]_text" Desc="[$parent.name$]_text" DataType="DT_WSTR" Length="2000"
                Expand="True"
                DataEndPoint="get_custom_fields"
                ColumnInfoMap="Name=key;DataType=schema.type"
                DataTypeMap="DT_DATE=date;DT_DBTIMESTAMP=datetime;DT_NUMERIC=number;DT_RAW=array;DT_BOOL=?;"
                Functions="[$1]|~|$..text|~| ,FUN_JSON_TO_TEXT"           
        />
        <!-- Above line Change Functions_NotUsed="..." to Functions="..." if you wish to get plain text rather than JSON-->
      </OutputColumns>
    </EndPoint>

    <!-- INSERT ISSUES -->
    <EndPoint Name="create_issues" Label="Create Issues" Url="/issue/bulk" Method="POST"
              BatchSize="100" ContentType="application/json" DotAsPath="True" Filter="$.issues[*]">
      <Body>
        <![CDATA[{ "issueUpdates" : {$rows$} } ]]>
      </Body>
      <InputColumns>
        <Column Name="fields.project.id" Label="ProjectId" DataType="DT_WSTR" Length="50" Desc="Project in which to create an issue. Must use this field or ProjectKey"/>
        <Column Name="fields.project.key" Label="ProjectKey" DataType="DT_WSTR" Length="50" Desc="Project in which to create an issue. Must use this field or ProjectId"/>
        <Column Name="fields.summary" Label="Summary"  DataType="DT_WSTR" Length="150" Desc="Issue title"/>
        <Column Name="fields.description" Label="Description" Raw="True"
                                                              ValueTemplate="{  &quot;type&quot;: &quot;doc&quot;, &quot;version&quot;: 1, &quot;content&quot;: [ { &quot;type&quot;: &quot;paragraph&quot;, &quot;content&quot;: [ { &quot;text&quot;: &quot;{$value$}&quot;, &quot;type&quot;: &quot;text&quot; } ] } ] }"
                                                              DataType="DT_WSTR"
                                                              Length="500" />
        <Column Name="fields.description" Label="DescriptionFormatted" DataType="DT_NTEXT" Example="{  &quot;type&quot;: &quot;doc&quot;, &quot;version&quot;: 1, &quot;content&quot;: [ { &quot;type&quot;: &quot;paragraph&quot;, &quot;content&quot;: [ { &quot;text&quot;: &quot;Your description&quot;, &quot;type&quot;: &quot;text&quot; } ] } ] }"
                                                                                           HelpLink="https://community.developer.atlassian.com/t/how-to-show-description-text-in-visual-format-instead-of-text-while-creating-issue-using-rest-call/37667"/>
        <Column Name="fields.environment" Label="Environment" Raw="True"
                                                              ValueTemplate="{ &quot;type&quot;: &quot;doc&quot;, &quot;version&quot;: 1, &quot;content&quot;: [ { &quot;type&quot;: &quot;paragraph&quot;, &quot;content&quot;: [ { &quot;text&quot;: &quot;{$value$}&quot;, &quot;type&quot;: &quot;text&quot; } ] } ] }"
                                                              DataType="DT_WSTR"
                                                              Length="500" />
        <Column Name="fields.environment_formatted" Label="EnvironmentFormatted" Desc="" DataType="DT_NTEXT"
                                                                                         Example="{  &quot;type&quot;: &quot;doc&quot;, &quot;version&quot;: 1, &quot;content&quot;: [ { &quot;type&quot;: &quot;paragraph&quot;, &quot;content&quot;: [ { &quot;text&quot;: &quot;Your description&quot;, &quot;type&quot;: &quot;text&quot; } ] } ] }"
                                                                                         HelpLink="https://community.developer.atlassian.com/t/how-to-show-description-text-in-visual-format-instead-of-text-while-creating-issue-using-rest-call/37667"/>
        <Column Name="fields.issuetype.id" Label="IssueTypeId"  DataType="DT_WSTR" Length="50" />
        <Column Name="fields.issuetype.name" Label="IssueTypeName" DataType="DT_WSTR" Length="50"/>
        <Column Name="fields.assignee.id" Label="AssigneeUserId" DataType="DT_WSTR" Length="50" Desc="User ID representing a user assigned to an issue" Example="12551:12be2e5a-9ebf-1235-be58-c3ea8c98b9e2"/>
        <Column Name="fields.reporter.id" Label="ReporterUserId" DataType="DT_WSTR" Length="50" Desc="User ID representing a user who reported an issue" Example="12551:12be2e5a-9ebf-1235-be58-c3ea8c98b9e2"/>  />
        <Column Name="fields.labels" Label="Labels" Desc="Labels, assigned to an issue in JSON string array format" Example="[&quot;myBadge&quot;,&quot;anotherBadge&quot;]" DataType="DT_NTEXT" />
        <Column Name="fields.duedate" Label="DueDate" DataType="DT_DBDATE" Desc="A date refering to due date of an issue" Example="2029-11-25" />
        <Column Name="fields.[$parent.key$]" Label="[$parent.key$]" Desc="[$parent.name$]" DataType="DT_WSTR" Length="2000"
                Expand="True"
                DataEndPoint="get_fields"
                DataEndPointParameters="Filter=$.data[?(@.custom==true)]"
                ColumnInfoMap="Name=key;DataType=schema.type"
                DataTypeMap="DT_DATE=date;DT_DBTIMESTAMP=datetime;DT_NUMERIC=number;DT_RAW=array;DT_BOOL=?;"/>
      </InputColumns>
      <OutputColumns>
        <Column Name="id" DataType="DT_WSTR" Length="50" />
        <Column Name="key" DataType="DT_WSTR" Length="50" />
        <Column Name="self" DataType="DT_WSTR" Length="450" />
      </OutputColumns>
    </EndPoint>

    <!-- UPDATE ISSUES -->
    <EndPoint Name="update_issue" Label="Update Issue" Url="/issue/[$IssueIdOrKey$]" Method="PUT"
              ContentType="application/json" DotAsPath="True" JsonRowFormat="Multicontent">
      <Params>
        <Param Name="IssueIdOrKey" Type="Placeholder" Desc="Enter Issue ID or Key" Example="100002 or MYISSUE-1"/>
        <Param Name="NotifyUsers" Key="notifyUsers" Type="Query" Value="false" Desc="Whether a notification email about the issue update is sent to all watchers. Possible values: true, false" Example="false" />
        <Param Name="OverrideScreenSecurity" Key="overrideScreenSecurity" Type="Query" Value="false" Desc="Whether screen security should be overridden to enable hidden fields to be edited. Possible values: true, false" Example="true" />
        <Param Name="OverrideEditableFlag" Key="overrideEditableFlag" Type="Query" Value="false" Desc="Whether screen security should be overridden to enable uneditable fields to be edited. Possible values: true, false" Example="false" />
      </Params>
      <Body>
        <![CDATA[ {$rows$} ]]>
      </Body>
      <OutputColumns>
        <Column Name="body" DataType="DT_WSTR" />
      </OutputColumns>
      <InputColumns>
        <Column Name="fields.project.id" Label="ProjectId" DataType="DT_WSTR" Length="50" Desc="Project in which to create an issue. Must use this field or ProjectKey"/>
        <Column Name="fields.project.key" Label="ProjectKey" DataType="DT_WSTR" Length="50" Desc="Project in which to create an issue. Must use this field or ProjectId"/>
        <Column Name="fields.summary" Label="Summary"  DataType="DT_WSTR" Length="150" Desc="Issue title"/>
        <Column Name="fields.description" Label="Description" Raw="True"
                                                              ValueTemplate="{  &quot;type&quot;: &quot;doc&quot;, &quot;version&quot;: 1, &quot;content&quot;: [ { &quot;type&quot;: &quot;paragraph&quot;, &quot;content&quot;: [ { &quot;text&quot;: &quot;{$value$}&quot;, &quot;type&quot;: &quot;text&quot; } ] } ] }"
                                                              DataType="DT_WSTR"
                                                              Length="500" />
        <Column Name="fields.description" Label="DescriptionFormatted" DataType="DT_NTEXT" Example="{  &quot;type&quot;: &quot;doc&quot;, &quot;version&quot;: 1, &quot;content&quot;: [ { &quot;type&quot;: &quot;paragraph&quot;, &quot;content&quot;: [ { &quot;text&quot;: &quot;Your description&quot;, &quot;type&quot;: &quot;text&quot; } ] } ] }"
                                                                                           HelpLink="https://community.developer.atlassian.com/t/how-to-show-description-text-in-visual-format-instead-of-text-while-creating-issue-using-rest-call/37667"/>
        <Column Name="fields.environment" Label="Environment" Raw="True"
                                                              ValueTemplate="{ &quot;type&quot;: &quot;doc&quot;, &quot;version&quot;: 1, &quot;content&quot;: [ { &quot;type&quot;: &quot;paragraph&quot;, &quot;content&quot;: [ { &quot;text&quot;: &quot;{$value$}&quot;, &quot;type&quot;: &quot;text&quot; } ] } ] }"
                                                              DataType="DT_WSTR"
                                                              Length="500" />
        <Column Name="fields.environment_formatted" Label="EnvironmentFormatted" Desc="" DataType="DT_NTEXT"
                                                                                         Example="{  &quot;type&quot;: &quot;doc&quot;, &quot;version&quot;: 1, &quot;content&quot;: [ { &quot;type&quot;: &quot;paragraph&quot;, &quot;content&quot;: [ { &quot;text&quot;: &quot;Your description&quot;, &quot;type&quot;: &quot;text&quot; } ] } ] }"
                                                                                         HelpLink="https://community.developer.atlassian.com/t/how-to-show-description-text-in-visual-format-instead-of-text-while-creating-issue-using-rest-call/37667"/>
        <Column Name="fields.issuetype.id" Label="IssueTypeId"  DataType="DT_WSTR" Length="50" />
        <Column Name="fields.issuetype.name" Label="IssueTypeName" DataType="DT_WSTR" Length="50"/>
        <Column Name="fields.assignee.id" Label="AssigneeUserId" DataType="DT_WSTR" Length="50" Desc="User ID representing a user assigned to an issue" Example="12551:12be2e5a-9ebf-1235-be58-c3ea8c98b9e2"/>
        <Column Name="fields.reporter.id" Label="ReporterUserId" DataType="DT_WSTR" Length="50" Desc="User ID representing a user who reported an issue" Example="12551:12be2e5a-9ebf-1235-be58-c3ea8c98b9e2"/>  />
        <Column Name="fields.labels" Label="Labels" Desc="Labels, assigned to an issue in JSON string array format"
                                                    Raw="True"
                                                    Example="[&quot;myBadge&quot;,&quot;anotherBadge&quot;]"
                                                    DataType="DT_NTEXT" />
        />
        <Column Name="fields.duedate" Label="DueDate" DataType="DT_DBDATE" Desc="A date refering to due date of an issue" Example="2029-11-25" />
        <Column Name="fields.[$parent.key$]" Label="[$parent.key$]" DataType="DT_WSTR" Length="2000"
                Expand="True"
                DataEndPoint="get_fields"
                DataEndPointParameters="Filter=$.data[?(@.custom==true)]"
                ColumnInfoMap="Name=key;DataType=schema.type"
                DataTypeMap="DT_DATE=date;DT_DBTIMESTAMP=datetime;DT_NUMERIC=number;DT_RAW=array;DT_BOOL=?;"/>
      </InputColumns>
    </EndPoint>

    <!-- DELETE ISSUE -->
    <EndPoint Name="delete_issue" Label="Delete Issue" Url="/issue/[$IssueIdOrKey$]" Method="DELETE"
              ResponseFormat="Json" >
      <Params>
        <Param Name="IssueIdOrKey" Type="Placeholder" Desc="Enter Issue ID or Key" Example="100002 or MYISSUE-1"/>
      </Params>
      <OutputColumns>
        <Column Name="Response" DataType="DT_NTEXT" />
      </OutputColumns>
    </EndPoint>

    <!-- 
      ========
      WORKLOGS
      ========
-->
    <EndPoint Template="IssuesTemplate" Name="get_worklogs" Label="Read Worklogs" Url="/search" Method="GET" Filter="$.issues[*]">
      <OutputColumns>
        <Column Name="issueId" Label="IssueId" DataType="DT_WSTR" Length="20" />
        <Column Name="p1_key" Label="IssueKey" DataType="DT_WSTR" Length="50" />
        <Column Name="id" Label="Id" DataType="DT_WSTR" Length="20" />
        <Column Name="self" Label="Self" DataType="DT_WSTR" Length="150" />
        <Column Name="P_startAt" Label="StartAt" DataType="DT_I4" />
        <Column Name="P_maxResults" Label="MaxResults" DataType="DT_I4" />
        <Column Name="P_total" Label="Total" DataType="DT_I8" />
        <Column Name="author.self" Label="AuthorSelf" DataType="DT_WSTR" Length="200" />
        <Column Name="author.accountId" Label="AuthorAccountId" DataType="DT_WSTR" Length="150" />
        <Column Name="author.emailAddress" Label="AuthorEmailAddress" DataType="DT_WSTR" Length="200" />
        <Column Name="author.displayName" Label="AuthorDisplayName" DataType="DT_WSTR" Length="200" />
        <Column Name="author.active" Label="AuthorIsActive" DataType="DT_BOOL" />
        <Column Name="author.timeZone" Label="AuthorTimeZone" DataType="DT_WSTR" Length="100" />
        <Column Name="author.accountType" Label="AuthorAccountType" DataType="DT_WSTR" Length="50" />
        <Column Name="comment.content" Label="CommentFormatted" DataType="DT_NTEXT" />
        <Column Name="comment.content" Label="Comment" DataType="DT_WSTR" Functions="[$1]|~|$..content[*].text|~| ,FUN_JSON_TO_TEXT" />
        <Column Name="updateAuthor.self" Label="UpdateAuthorSelf" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.accountId" Label="UpdateAuthorAccountId" DataType="DT_WSTR" Length="200" />
        <Column Name="updateAuthor.emailAddress" Label="UpdateAuthorEmailAddress" DataType="DT_WSTR" Length="200" />
        <Column Name="updateAuthor.displayName" Label="UpdateAuthorDisplayName" DataType="DT_WSTR" Length="200" />
        <Column Name="updateAuthor.active" Label="UpdateAuthorActive" DataType="DT_BOOL" />
        <Column Name="updateAuthor.timeZone" Label="UpdateAuthorTimeZone" DataType="DT_WSTR" Length="80" />
        <Column Name="updateAuthor.accountType" Label="UpdateAuthorAccountType" DataType="DT_WSTR" Length="50" />
        <Column Name="created" Label="Created" DataType="DT_DBTIMESTAMP" />
        <Column Name="updated" Label="Updated" DataType="DT_DBTIMESTAMP" />
        <Column Name="started" Label="Started" DataType="DT_DBTIMESTAMP" />
        <Column Name="timeSpent" Label="TimeSpent" DataType="DT_WSTR" Length="50" />
        <Column Name="timeSpentSeconds" Label="TimeSpentInSeconds" DataType="DT_I8" />
        <Column Name="author.avatarUrls.48x48" Label="AuthorAvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="author.avatarUrls.24x24" Label="AuthorAvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="author.avatarUrls.16x16" Label="AuthorAvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="author.avatarUrls.32x32" Label="AuthorAvatarUrls32x32" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.avatarUrls.48x48" Label="UpdateAuthorAvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.avatarUrls.24x24" Label="UpdateAuthorAvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.avatarUrls.16x16" Label="UpdateAuthorAvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.avatarUrls.32x32" Label="UpdateAuthorAvatarUrls32x32" DataType="DT_WSTR" Length="500" />
      </OutputColumns>
      <EndPoint Name="get_issue_worklogs" Label="Read Worklogs" Url="/issue/[$parent.id$]/worklog" Method="GET" Filter="$.worklogs[*]" IncludeParentColumns="True">
      </EndPoint>
    </EndPoint>

    <!-- CREATE WORKLOGS  -->
    <EndPoint Template="WorklogTemplate" Name="create_worklog" Label="Create Worklog" Url="/issue/[$IssueIdOrKey$]/worklog" Method="POST"
              ResponseFormat="Json"
              JsonRowFormat="Multicontent"
              ContentType="application/json"
              Body="{$rows$}">
    </EndPoint>

    <!-- UPDATE WORKLOGS  -->
    <EndPoint Template="WorklogTemplate" Name="update_worklog" Label="Update Worklog" Url="/issue/[$IssueIdOrKey$]/worklog/[$WorklogId$]" Method="PUT"
              ResponseFormat="Json"
              JsonRowFormat="Multicontent"
              ContentType="application/json"
              Body="{$rows$}">
      <Params>
        <Param Name="IssueIdOrKey" Type="Placeholder" />
        <Param Name="WorklogId" Type="Placeholder" />
      </Params>
    </EndPoint>

    <!-- DELETE WORKLOGS  -->
    <EndPoint Name="delete_worklogs" Label="Delete Worklog" Url="/issue/[$IssueIdOrKey$]/worklog/[$WorklogId$]" Method="DELETE"
              ResponseFormat="Json" >
      <Params>
        <Param Name="IssueIdOrKey" Type="Placeholder" />
        <Param Name="WorklogId" Type="Placeholder" />
      </Params>
      <OutputColumns>
        <Column Name="Response" DataType="DT_NTEXT" />
      </OutputColumns>
    </EndPoint>

    <!-- 
      ========
      COMMENTS
      ========
-->
    <EndPoint Template="IssuesTemplate"
              Name="get_comments" Label="Read Comments" Url="/search?startAt=0&amp;maxResults=50" Method="GET" Filter="$.issues[*]">
      <OutputColumns>
        <Column Name="p1_id" Label="IssueId" DataType="DT_WSTR" Length="20" />
        <Column Name="p1_key" Label="IssueKey" DataType="DT_WSTR" Length="50" />
        <Column Name="id" Label="Id" DataType="DT_WSTR" Length="20" />
        <Column Name="created" Label="Created" DataType="DT_DBTIMESTAMP" />
        <Column Name="updated" Label="Updated" DataType="DT_DBTIMESTAMP" />
        <Column Name="self" Label="Self" DataType="DT_WSTR" Length="150" />
        <Column Name="body.type" Label="BodyType" DataType="DT_WSTR" Length="50" />
        <Column Name="body.content" Label="BodyContent" DataType="DT_NTEXT" />
        <Column Name="body.content" Label="BodyContentText" DataType="DT_WSTR" Functions="[$1]|~|$..content[*].text|~| ,FUN_JSON_TO_TEXT" />
        <Column Name="body.version" Label="BodyVersion" DataType="DT_NUMERIC" />
        <Column Name="author.self" Label="AuthorSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="author.accountId" Label="AuthorAccountId" DataType="DT_WSTR" Length="100" />
        <Column Name="author.emailAddress" Label="AuthorEmailAddress" DataType="DT_WSTR" Length="100" />
        <Column Name="author.avatarUrls.48x48" Label="AuthorAvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="author.avatarUrls.24x24" Label="AuthorAvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="author.avatarUrls.16x16" Label="AuthorAvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="author.avatarUrls.32x32" Label="AuthorAvatarUrls32x32" DataType="DT_WSTR" Length="500" />
        <Column Name="author.displayName" Label="AuthorDisplayName" DataType="DT_WSTR" Length="100" />
        <Column Name="author.active" Label="AuthorActive" DataType="DT_BOOL" />
        <Column Name="author.timeZone" Label="AuthorTimeZone" DataType="DT_WSTR" Length="100" />
        <Column Name="author.accountType" Label="AuthorAccountType" DataType="DT_WSTR" Length="50" />
        <Column Name="updateAuthor.self" Label="UpdateAuthorSelf" DataType="DT_WSTR" Length="150" />
        <Column Name="updateAuthor.accountId" Label="UpdateAuthorAccountId" DataType="DT_WSTR" Length="50" />
        <Column Name="updateAuthor.emailAddress" Label="UpdateAuthorEmailAddress" DataType="DT_WSTR" Length="100" />
        <Column Name="updateAuthor.avatarUrls.48x48" Label="UpdateAuthorAvatarUrls48x48" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.avatarUrls.24x24" Label="UpdateAuthorAvatarUrls24x24" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.avatarUrls.16x16" Label="UpdateAuthorAvatarUrls16x16" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.avatarUrls.32x32" Label="UpdateAuthorAvatarUrls32x32" DataType="DT_WSTR" Length="500" />
        <Column Name="updateAuthor.displayName" Label="UpdateAuthorDisplayName" DataType="DT_WSTR" Length="100" />
        <Column Name="updateAuthor.active" Label="UpdateAuthorActive" DataType="DT_BOOL" />
        <Column Name="updateAuthor.timeZone" Label="UpdateAuthorTimeZone" DataType="DT_WSTR" Length="44" />
        <Column Name="updateAuthor.accountType" Label="UpdateAuthorAccountType" DataType="DT_WSTR" Length="36" />
        <Column Name="jsdPublic" DataType="DT_BOOL" />
      </OutputColumns>
      <EndPoint Name="get_issue_comments" Url="/issue/[$parent.key$]/comment" Method="GET" Filter="$.comments[*]">
      </EndPoint>
    </EndPoint>

    <!-- =====================
               Get changelogs 
      ====================== -->
    <EndPoint Name="get_changelogs"
              Label="Read Changelogs"
              Desc="Returns a paginated list of all changelogs for an issue sorted by date, starting from the oldest. OAuth scopes required: read:issue-meta:jira, read:avatar:jira, read:issue.changelog:jira"
              Url="/issue/[$IssueIdOrKey$]/changelog?startAt=0&amp;maxResults=50"
              Method="GET"
              Filter="$.values[*]">
      <Params>
        <Param Name="PagingMode" Type="Property" Value="1" />
        <Param Name="PagingByUrlAttributeName" Type="Property" Value="startAt" />
        <Param Name="PagingIncrementBy" Type="Property" Value="50" />
        <Param Name="IssueIdOrKey" Label="IssueId Or Key" Type="Placeholder" Required="True" />
      </Params>
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_WSTR" Length="200" />
        <Column Name="author.self" Label="AuthorSelfURL" DataType="DT_WSTR" Length="1000" />
        <Column Name="author.accountId" Label="AuthorAccountId" DataType="DT_WSTR" Length="200" />
        <Column Name="author.emailAddress" Label="AuthorEmailAddress" DataType="DT_WSTR" Length="500" />
        <Column Name="author.avatarUrls.48x48" Label="AvatarUrls48x48" DataType="DT_WSTR" Length="1000" />
        <Column Name="author.avatarUrls.24x24" Label="AvatarUrls24x24" DataType="DT_WSTR" Length="1000" />
        <Column Name="author.avatarUrls.16x16" Label="AvatarUrls16x16" DataType="DT_WSTR" Length="1000" />
        <Column Name="author.avatarUrls.32x32" Label="AvatarUrls32x32" DataType="DT_WSTR" Length="1000" />
        <Column Name="author.displayName" Label="AuthorDisplayName" DataType="DT_WSTR" Length="1000" />
        <Column Name="author.active" Label="Is AuthorActive" DataType="DT_BOOL" />
        <Column Name="author.timeZone" Label="AuthorTimeZone" DataType="DT_WSTR" Length="200" />
        <Column Name="created" Label="CreatedDateTime" DataType="DT_DBTIMESTAMP" />
        <Column Name="items" Label="Items" DataType="DT_WSTR" Length="4000" />
      </OutputColumns>
    </EndPoint>

    <!-- =====================
               Get changelog details 
      ====================== -->
    <EndPoint Name="get_changelog_details"
              Label="Read Changelog Details"
              Desc="Returns a paginated list of all changelogs and fields updated for an issue sorted by date, starting from the oldest. OAuth scopes required: read:issue-meta:jira, read:avatar:jira, read:issue.changelog:jira"
              Url="/issue/[$IssueIdOrKey$]/changelog?startAt=0&amp;maxResults=50"
              Method="GET"
              Filter="$.values[*].items[*]" 
              IncludeParentColumns="True" >
      <Params>
        <Param Name="PagingMode" Type="Property" Value="1" />
        <Param Name="PagingByUrlAttributeName" Type="Property" Value="startAt" />
        <Param Name="PagingIncrementBy" Type="Property" Value="50" />
        <Param Name="IssueIdOrKey" Label="IssueId Or Key" Type="Placeholder" Required="True" />
      </Params>
      <OutputColumns>
        <Column Name="P_values_id" Label="Id" DataType="DT_WSTR" Length="200" />
        <Column Name="P_values_author_self" Label="AuthorSelfURL" DataType="DT_WSTR" Length="1000" />
        <Column Name="P_values_author_accountId" Label="AuthorAccountId" DataType="DT_WSTR" Length="200" />
        <Column Name="P_values_author_emailAddress" Label="AuthorEmailAddress" DataType="DT_WSTR" Length="500" />
        <Column Name="P_values_author_avatarUrls_48x48" Label="AvatarUrls48x48" DataType="DT_WSTR" Length="1000" />
        <Column Name="P_values_author_avatarUrls_24x24" Label="AvatarUrls24x24" DataType="DT_WSTR" Length="1000" />
        <Column Name="P_values_author_avatarUrls_16x16" Label="AvatarUrls16x16" DataType="DT_WSTR" Length="1000" />
        <Column Name="P_values_author_avatarUrls_32x32" Label="AvatarUrls32x32" DataType="DT_WSTR" Length="1000" />
        <Column Name="P_values_author_displayName" Label="AuthorDisplayName" DataType="DT_WSTR" Length="1000" />
        <Column Name="P_values_author_active" Label="IsAuthorActive" DataType="DT_BOOL" />
        <Column Name="P_values_author_timeZone" Label="AuthorTimeZone" DataType="DT_WSTR" Length="200" />
        <Column Name="P_values_created" Label="CreatedDateTime" DataType="DT_DBTIMESTAMP" />
        <Column Name="field" Label="Field" DataType="DT_WSTR" Length="255" />
        <Column Name="fieldId" Label="FieldId" DataType="DT_WSTR" Length="255" />
        <Column Name="fieldtype" Label="FieldType" DataType="DT_WSTR" Length="255" />
        <Column Name="from" Label="From" DataType="DT_WSTR" Length="4000" />
        <Column Name="fromString" Label="FromString" DataType="DT_WSTR" Length="4000" />
        <Column Name="to" Label="To" DataType="DT_WSTR" Length="4000" />
        <Column Name="toString" Label="ToString" DataType="DT_WSTR" Length="4000" />
        
      </OutputColumns>
    </EndPoint>
    
    <!-- =====================
              Get changelogs by IDs
      ====================== -->
    <EndPoint Name="get_changelogs_by_ids"
              Label="Read Changelogs by IDs"
              Desc="Returns changelogs for an issue specified by a list of changelog IDs. OAuth scopes required: read:issue-meta:jira, read:avatar:jira, read:issue.changelog:jira"
              Url="/issue/[$IssueIdOrKey$]/changelog/list"
              Method="POST"
              Body="{&quot;changelogIds&quot;:[[$ChangeLogIds$]]}"
              Filter="$.histories[*]"
              ContentType="application/json"
      >
      <Params>
        <!--<Param Name="PagingMode" Type="Property" Value="1" />
        <Param Name="PagingByUrlAttributeName" Type="Property" Value="startAt" />
        <Param Name="PagingIncrementBy" Type="Property" Value="50" />-->
        <Param Name="IssueIdOrKey" Label="IssueId Or Key" Type="Placeholder" Required="True" />
        <Param Name="ChangeLogIds" Label="Comma Separated ChangeLog Ids" Type="Placeholder" Required="True" />
      </Params>
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_WSTR" Length="200" />
        <Column Name="author.self" Label="AuthorSelfURL" DataType="DT_WSTR" Length="1000" />
        <Column Name="author.accountId" Label="AuthorAccountId" DataType="DT_WSTR" Length="200" />
        <Column Name="author.emailAddress" Label="AuthorEmailAddress" DataType="DT_WSTR" Length="500" />
        <Column Name="author.avatarUrls.48x48" Label="AvatarUrls48x48" DataType="DT_WSTR" Length="1000" />
        <Column Name="author.avatarUrls.24x24" Label="AvatarUrls24x24" DataType="DT_WSTR" Length="1000" />
        <Column Name="author.avatarUrls.16x16" Label="AvatarUrls16x16" DataType="DT_WSTR" Length="1000" />
        <Column Name="author.avatarUrls.32x32" Label="AvatarUrls32x32" DataType="DT_WSTR" Length="1000" />
        <Column Name="author.displayName" Label="AuthorDisplayName" DataType="DT_WSTR" Length="1000" />
        <Column Name="author.active" Label="IsAuthorActive" DataType="DT_BOOL" />
        <Column Name="author.timeZone" Label="AuthorTimeZone" DataType="DT_WSTR" Length="200" />
        <Column Name="created" Label="CreatedDateTime" DataType="DT_DBTIMESTAMP" />
        <Column Name="items" Label="Items" DataType="DT_WSTR" Length="4000" />
      </OutputColumns>
    </EndPoint>
	
	<!-- =====================
               Get custom field contexts
      ====================== -->
    <EndPoint Name="get_custom_field_contexts"
              Label="Read Get custom field contexts Details"
              Desc="Returns a paginated list list of contexts for a custom field. OAuth scopes required: read:field:jira, read:custom-field-contextual-configuration:jira"
              Url="/field/[$FieldId$]/context?startAt=0&amp;maxResults=50"
              Method="GET"
              Filter="$.values[*]" 
              IncludeParentColumns="True" >
      <Params>
        <Param Name="PagingMode" Type="Property" Value="1" />
        <Param Name="PagingByUrlAttributeName" Type="Property" Value="startAt" />
        <Param Name="PagingIncrementBy" Type="Property" Value="50" />
        <Param Name="FieldId" Label="FieldId" DataType="DT_WSTR" Length="100"  Required="True"/>
      </Params>
      <OutputColumns>
        <Column Name="P_isLast" Label="IsLast" DataType="DT_BOOL" />
        <Column Name="id" Label="Id" DataType="DT_WSTR" Length="100" />
		<Column Name="name" Label="Name" DataType="DT_WSTR" Length="1000" />
		<Column Name="description" Label="Description" DataType="DT_WSTR" Length="4000" />
		<Column Name="isGlobalContext" Label="IsGlobalContext" DataType="DT_BOOL" />
		<Column Name="isAnyIssueType" Label="IsAnyIssueType" DataType="DT_BOOL" />
      </OutputColumns>
    </EndPoint>
	
	<!-- =====================
               Get custom field options (context)
      ====================== -->
    <EndPoint Name="get_custom_field_option_for_context"
              Label="Read Get custom field contexts Details"
              Desc="Returns a paginated list of all custom field option for a context. Options are returned first then cascading options, in the order they display in Jira. OAuth scopes required: read:field.option:jira"
              Url="/field/[$FieldId$]/context/[$ContextId$]/option?startAt=0&amp;maxResults=50"
              Method="GET"
              Filter="$.values[*]" 
              IncludeParentColumns="True" >
      <Params>
        <Param Name="PagingMode" Type="Property" Value="1" />
        <Param Name="PagingByUrlAttributeName" Type="Property" Value="startAt" />
        <Param Name="PagingIncrementBy" Type="Property" Value="50" />
        <Param Name="FieldId" Label="FieldId" DataType="DT_WSTR" Length="100"  Required="True"/>
		<Param Name="ContextId" Label="ContextId" DataType="DT_WSTR" Length="100"  Required="True"/>
      </Params>
      <OutputColumns>
        <Column Name="P_isLast" Label="IsLast" DataType="DT_BOOL" />
        <Column Name="id" Label="Id" DataType="DT_WSTR" Length="100" />
		<Column Name="value" Label="Value" DataType="DT_WSTR" Length="1000" />
		<Column Name="disabled" Label="Isdisabled" DataType="DT_BOOL" />
		<Column Name="optionId" Label="OptionId" DataType="DT_WSTR" Length="1000" />
      </OutputColumns>
    </EndPoint>

  </EndPoints>

  <Tables>
    <Table Name="Fields" SelectEndPoint="get_fields" />
    <Table Name="Projects" SelectEndPoint="get_projects" InsertEndPoint="create_project" UpdateEndPoint="upsert_project" UpsertEndPoint="upsert_project" DeleteEndPoint="delete_project"/>
    <Table Name="Users" SelectEndPoint="get_users" InsertEndPoint="create_user" DeleteEndPoint="delete_user" />
    <Table Name="IssueTypes" SelectEndPoint="get_types" />
    <Table Name="Issues" SelectEndPoint="get_issues" LookupEndPoint="get_issues" InsertEndPoint="create_issues" UpdateEndPoint="update_issue" DeleteEndPoint="delete_issue" />
    <Table Name="Worklogs" SelectEndPoint="get_worklogs" InsertEndPoint="create_worklog" UpdateEndPoint="update_worklog" DeleteEndPoint="delete_worklogs" />
    <Table Name="Comments" SelectEndPoint="get_comments" />
  </Tables>
  <!-- FIELDS -->
  <Examples>
    <Example Group="ODBC" Label="List fields" Code="SELECT * FROM Fields" Desc="Lists all fields that are used and available in issue entity" ></Example>

    <!-- PROJECT -->
    <Example Group="ODBC" Label="List projects" Code="SELECT * FROM Projects" Desc="Lists all available projects" ></Example>
    <Example Group="ODBC" Label="INSERT Project" Desc="Inserts a single project">
      <Code>
        <![CDATA[INSERT INTO Projects(ProjectKey, Name, ProjectTypeKey, LeadAccountId, AssigneeType)
VALUES ('TEST', 'Test Project', 'software', '70122:XXXXXXXX-XXXX-XXXX-XXXX-c5da8c98b9e2', 'PROJECT_LEAD)
WITH (Output=1)')]]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="UPDATE Project" Desc="Updates a single project">
      <Code>
        <![CDATA[UPDATE Projects
SET Name = 'My Test Kanban Project'
   ,ProjectCategoryId = 1
WITH (ProjectIdOrKey = 'MYPRJCT', Output=1)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="DELETE Project" Desc="Deletes a single project">
      <Code>
        <![CDATA[DELETE FROM Projects
WITH (ProjectIdOrKey = '10020', Output=1)]]>
      </Code>
    </Example>

    <!-- USERS -->
    <Example Group="ODBC" Label="List users" Code="SELECT * FROM Users" Desc="Lists all available users" ></Example>
    <Example Group="ODBC" Label="INSERT User" Desc="Inserts a single user">
      <Code>
        <![CDATA[INSERT INTO Users(EmailAddress, DisplayName, Name, Password)
VALUES ('my@user.com', 'John Doe', 'John', 'xhedkspstdadaothoua')
WITH (OUTPUT=1)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="DELETE User" Desc="Deletes a single user">
      <Code>
        <![CDATA[DELETE FROM Users
WITH (OUTPUT=1, accountId = ''547059:136095a0-XXXX-XXXX-XXXX-3e4c66f26551'')]]>
      </Code>
    </Example>

    <!-- ISSUES -->
    <Example Group="ODBC" Label="List issues" Code="SELECT * FROM Issues" Desc="Lists all available issues across all projects" ></Example>
    <Example Group="ODBC" Label="INSERT Issue" Desc="Inserts a single issue to a particular project">
      <Code>
        <![CDATA[INSERT INTO Issues(ProjectKey, IssueTypeName, Summary, Description)
VALUES('SMP', 'Task', 'My ticket inserted through the API', 'A description about an issue')
WITH (OUTPUT=1)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="UPDATE Issue" Desc="Updates an issue">
      <Code>
        <![CDATA[UPDATE Issues
SET Summary = 'This is my summary'
   ,Description = 'Lot''s of stuff to describe'
   ,Labels = '[ "bugfix" ]'
   ,DueDate = '2029-10-10'
WITH (IssueIdOrKey='ISSKEY', OUTPUT=1)']]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="DELETE Issue" Desc="Deletes a single issue">
      <Code>
        <![CDATA[DELETE FROM Issues
WITH (IssueIdOrKey='10020', OUTPUT=1)]]>
      </Code>
    </Example>

    <!-- WORKLOGS -->
    <Example Group="ODBC" Label="List worklogs" Code="SELECT * FROM Worklogs" Desc="Lists all worklogs from all issues" ></Example>
    <Example Group="ODBC" Label="INSERT Worklog" Desc="Inserts a single worklog to a particular issue">
      <Code>
        <![CDATA[INSERT INTO Worklogs(TimeSpentInSeconds, Comment, StartedAt)
      VALUES(7200,'My Comment!','2020-02-23T16:20:30.123+0000')
      WITH (IssueIdOrKey='ISSKEY-1', OUTPUT=1)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="UPDATE Worklog" Desc="Updates a worklog">
      <Code>
        <![CDATA[UPDATE Worklogs
SET TimeSpentInSeconds = 28800
   ,Comment='My Comment!'
   ,StartedAt='2020-01-23T16:20:30.123+0000'
WITH (IssueIdOrKey='MTK-1', WorklogId='123465', OUTPUT=1)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="DELETE Worklog" Desc="Deletes a single worklog of an issue">
      <Code>
        <![CDATA[DELETE FROM Worklogs
WITH (IssueIdOrKey='10020', WorklogId='123465', OUTPUT=1)]]>
      </Code>
    </Example>
  </Examples>
</ApiConfig>