Azure DevOps Connector
Documentation
Version: 2
Documentation

Azure DevOps Connector - Source Code


<?xml version="1.0" encoding="utf-8"?>
<ApiConfig Name="Azure DevOps"
           Desc="Azure DevOps Connector can be used to integrate Azure DevOps data in your App / BI Tools. You can create, read, query, modify, and delete WorkItems, Projects, Teams and more."
           Slug="azure-devops-connector"
           Id="db3fba88-bb48-47dd-9527-0c0050f4423d"
           Logo="data:image/png;base64,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"
           Version="2"
           EngineVersion="12">
  <VersionHistory>
	<Change Date="2024-03-04" Type="Fix">Query list doesnt refresh after changing Project prameter for get_workitems_by_query_id endpoint on Query Builder UI</Change>
	<Change Date="2024-01-30" Type="New">Added new endpoint get_queries and get_workitems_by_query_id endpoint to fetch result from predefined query</Change>
	<Change Date="2023-10-09" Type="New">Updated query_workitems endpoint to be treated as IsSqlEndPoint (support for #DirectSQL prefix)</Change>
	<Change Date="2023-10-09" Type="Fix">Using slash throws JSON encoding error sometimes (e.g. IterationPath can have slash)</Change>
	<Change Date="2023-10-09" Type="New">Updated examples to show how to query more than 20000 AzureDevOps / TFS workitems</Change>
    <Change Date="2023-06-14" Type="New">Initial version</Change>
  </VersionHistory>

  
  <ServiceUrls>
    <ServiceUrl Url="https://dev.azure.com" />
	<ServiceUrl Url="https://auditservice.dev.azure.com" Hidden="True" Desc="Private URL needed for some operations"/>
	<ServiceUrl Url="https://almsearch.dev.azure.com" Hidden="True" Desc="Private URL needed for some operations"/>	
  </ServiceUrls>
  
  <Auths>
    <Auth Name="OAuth" Type="OAuth"
          ConnStr="Provider=Vsts;ScopeSeparator={space};ReturnUrl=[$ReturnUrl$];Scope=[$Scope$];"
          TestEndPoint="get_projects">
      <Notes>
<![CDATA[Connecting to your Azure DevOps data requires you to authenticate your REST API access. Follow the instructions below:
<ol>
  <li>Go to <a target="_blank" href="https://app.vsaex.visualstudio.com/app/register">https://app.vsaex.visualstudio.com/app/register</a> to register your app.</li>
  <li>Fill in your application and company's information as required, and then select the scopes that your application needs.
  This should typically be <b>Project and team (read and write)</b> and <b>Work items (read and write)</b>.
  <div style="background-color: #f5f2c4; border-style: solid; border-color: #000000; border-width: 1px; margin-top: 3px; margin-bottom: 6px; padding: 6px;">
    <div>
      Your selected scopes when registering your app <u><i><b>must</b></i></u> match the scopes you enter here on the connector screen.
      <span style="color: #bb0000;"><u><i><b>If they don't match, the connector will not be able to work with your Azure DevOps account!</b></i></u></span>
    </div>
    <div style="margin-top: 8px;">
      If you need further information about the scopes used in Azure DevOps, or need to see what to enter into the connector screen to
      match up with your selected scopes, visit
      <a target="_blank" href="https://learn.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth?view=azure-devops">https://learn.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth?view=azure-devops</a>.
    </div>
  </div>
  </li>
  <li>Select <b>Create Application</b> and then the <b>Application Settings</b> page will be displayed.</li>
  <li>Record the application settings that are displayed for us to use later, especially the <b>App ID</b> and the <b>Client Secret</b>.</li>  
  <li>Visit <a target="_blank" href="https://aex.dev.azure.com">https://aex.dev.azure.com</a>.
  Once you are logged in, record your organization name in the URL that is displayed on the page.
  For example, if your organization is called "acmeinc", the URL on the page would be acmeinc.visualstudio.com.</li>  
  <li>Back at the connector screen, enter the App ID that was recorded in step 4 into the <b>Client Id (App ID)</b> field.</li>
  <li>Enter the client secret that was recorded in step 4 into the <b>Client Secret</b> field. In order to edit the text in this field,
      select the ellipses (...) button that appears when the textbox is clicked and edit the client secret with the dialog box that appears.</li>
  <li>Enter the organization that was recorded in step 5 into the <b>Organization name or Id for url</b> field.</li>
  <li>Click <b>Generate Token</b>. If proper authentication occurs, you will see a notice saying so. You can click <b>Yes</b> to save
      a backup file of your generated tokens.</li>
  <li>Select the project you want to connect to by default from the <b>Default Project (Choose after Generating Token)</b> field.</li>
  <li>Select the <b>Security</b> tab.</li>
  <li>Enter <span style="text-decoration: underline;"><i>https://auditservice.dev.azure.com,https://almsearch.dev.azure.com</i></span> into the <b>Additional Trusted Domains</b> field.</li>
  <li>Select the <b>Test Connection</b> button at the bottom of the window to verify proper connectivity with your Azure DevOps account.</li>
  <li>If the connection test succeeds, select <b>OK</b>.</li>
</ol>]]>
      </Notes>
      <Params>
        <Param Name="ClientId" Label="Client Id (App ID)" Required="True" Desc="The App ID obtained from the Azure Portal." />
        <Param Name="ClientSecret" Label="Client Secret" Desc="The Client Secret obtained from the Azure Portal." Secret="True" Required="True" />
        <Param Name="Organization" Label="Organization name or Id for url (e.g. mycompany)" Desc="The organization name or Id obtained from the Azure Portal." Functions="URLENC" Required="True" />
        <Param Name="Project" Label="Default Project Name (Choose after Generating Token)" Desc="The default project name to make API calls for." 
			 Template="ProjectParam" Required="False"/>
        <Param Name="ReturnUrl" Label="Return URL" Desc="The URL to send the authentication token back to." Value="https://zappysys.com/oauth" Options=";https://zappysys.com/oauth" Required="True" />
        <Param Name="Scope" Required="True" MultiSelectSeparator=" " MultiSelect="True" Value="vso.project~vso.work_full"
               Options="Project and team (read)=vso.project;Project and team (read and write)=vso.project_write;Project and team (read, write and manage)=vso.project_manage;Work items (read)=vso.work;Work items (read and write)=vso.work_write;Work items (full)=vso.work_full" Desc="The scopes of access needed for the Azure DevOps API connection." />
        <Param Name="ApiVersion" Key="api-version" Label="API Version" Desc="The version of the Azure DevOps API to use." Value="7.0" Options="6.0;7.0;7.1-preview.2;" Type="Query" Required="True" Hidden="True" />
        <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 Name="Token" Label="Personal Access Token (PAT)" Type="Http"
          ConnStr="Provider=Vsts;CredentialType=Basic;AuthScheme=[$AuthScheme$];TokenAuthHeader=[$AuthHeader$];"
          TestEndPoint="get_projects">
      <Notes>
<![CDATA[To connect to Azure DevOps using a Personal Access Token (PAT), you must first create a valid PAT:
<ol>
  <li>Go to your Azure DevOps home page: https://dev.azure.com/{your organization name}.</li>
  <li>On the home page, select the <b>User Settings</b> menu dropdown (looks like a person icon with a small gear over it), and then select <b>Personal access tokens</b>.</li>
  <li>Select the <b>New Token</b> button.</li>
  <li>Enter a name for the new personal access token.</li>
  <li>Select the appropriate organization for the new personal access token.</li>
  <li>Select the expiration date for the new personal access token.</li>
  <li>Select the scopes for this token. (You may be restricted from creating full-scoped PATs. If so, your Azure DevOps administrator in Azure AD has enabled a policy which limits you to a specific custom defined set of scopes.)</li>
  <li>Select the <b>Create</b> button.</li>
  <li>The new Personal Access Token (PAT) is created and displayed. Copy and save this token, since it is as sensitive as a password.</li>
  <li>Visit <a target="_blank" href="https://aex.dev.azure.com">https://aex.dev.azure.com</a>.
      Once you are logged in, record your organization name in the URL that is displayed on the page.
      For example, if your organization is called "acmeinc", the URL on the page would be acmeinc.visualstudio.com.</li>
  <li>Back at the connector screen, enter the token you recorded from step 9 into the <b>Personal Access Token (PAT)</b> field.</li>
  <li>Enter the organization that was recorded in step 10 into the <b>Organization name or Id for url</b> field.</li>
  <li>Enter the name or Id of the project you want to connect to by default in the <b>Default Project (Choose after above fields)</b> field.</li>
  <li>Select the <b>Security</b> tab.</li>
  <li>Enter <span style="text-decoration: underline;"><i>https://auditservice.dev.azure.com,https://almsearch.dev.azure.com,https://analytics.dev.azure.com</i></span> into the <b>Additional Trusted Domains</b> field.</li>
  <li>Select the <b>Test Connection</b> button at the bottom of the window to verify proper connectivity with your Azure DevOps account.</li>
  <li>If the connection test succeeds, select <b>OK</b>.</li>
</ol>]]>
      </Notes>
      <Params>
        <Param Name="AuthScheme" Value="Bearer" Hidden="True" />
        <Param Name="AuthHeader" Value="Authorization" Hidden="True" />
        <Param Name="UserName" Hidden="True" />
        <Param Name="Password" Label="Personal Access Token (PAT)" Secret="True" Required="True"/>
        <Param Name="Organization" Label="Organization name or Id for url" Desc="The organization name or Id obtained from the Azure Portal." Functions="URLENC" Required="True" />
        <Param Name="Project" Label="Default Project Name (Choose after Generating Token)" Desc="The default project name to make API calls for." 
			 Template="ProjectParam" Required="False"/>
        <Param Name="ApiVersion" Key="api-version" Label="API Version" Desc="The version of the Azure DevOps API to use." Value="7.0" Options="6.0;7.0;7.0-preview;7.1-preview.2;" Type="Query" Required="True" Hidden="True" />
        <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="QueryIdParam" Label="Query Id" Desc="The Id of the predefined Query." 
		OptionsEndPoint="get_queries" OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="name" Required="True" OptionsEndPointParameters="Project=[$Project$]" />
		
    <Param Name="ProjectParam" Label="Project Name" Desc="The Name of the project." Functions="" 
		OptionsEndPoint="get_projects" OptionsEndPointValueColumn="name" OptionsEndPointLabelColumn="name" Required="True" />
    <Param Name="TeamParam" Label="Team Id or Name" OptionsEndPoint="get_teams" OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="name" Required="True" OptionsEndPointParameters="Project=[$Project$];" />
	<Param Name="IterationParam" Label="Itertation Id or Name" OptionsEndPoint="get_team_iterations" OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="name" Required="True" OptionsEndPointParameters="Project=[$Project$];Team=[$Team$];" />
    <Param Name="QueryParam" Label="Wiql Query" Desc="The WIQL query (refer Azure DevOps Help to learn Wiql syntax." Required="True"
			Value="SELECT * FROM WorkItems Order By [System.Id] DESC" ValueTemplate="&lt;&lt;{$value$}|~|{$Project$}|~|[$Project$],FUN_REPLACE&gt;&gt;"
			HelpLink="https://learn.microsoft.com/en-us/azure/devops/boards/queries/wiql-syntax?view=azure-devops" Editor="MultiLine"/>
			
    <Param Name="DateSelectionParam" Type="Query"
       Value="" Options="1900-12-31;today;yesterday;monthstart;monthend;yearstart;yearend;weekstart;weekend;yearstart-1y;yearend-1y;monthstart-1d;monthend+1d"
       ValueTemplate="&lt;&lt;{$value$}||yyyy-MM-ddTHH:mm:ss,FUN_TO_DATETIME&gt;&gt;" />

	
	<EndPoint Name="Paginated">
      <Params>
		 <Param Name="NextUrlAttributeOrExpr" Type="Property" Value="$.nextPage" />
	  </Params>
    </EndPoint>
	
	<EndPoint Name="QueryOutputColumns">
      <OutputColumns>
		    <Column Name="id" DataType="DT_WSTR" Label="Id" Length="200" Key="True" />
		    <Column Name="name" DataType="DT_WSTR" Label="Name" Length="200" />
			<Column Name="path" DataType="DT_WSTR" Label="Path" Length="200" />
		    <Column Name="url" DataType="DT_WSTR" Label="Url" Length="2048" />
			<Column Name="createdDate" Label="CreatedDate" DataType="DT_DBTIMESTAMP"  />
			<Column Name="lastModifiedDate" Label="LastModifiedDate" DataType="DT_DBTIMESTAMP"  />
			<Column Name="isFolder" Label="IsFolder" DataType="DT_BOOL"  />
			<Column Name="hasChildren" Label="HasChildren" DataType="DT_BOOL"  />
			<Column Name="createdBy.displayName" DataType="DT_WSTR" Label="CreatedByName" Length="255" />
			<Column Name="createdBy.uniqueName" DataType="DT_WSTR" Label="CreatedByUniqueName" Length="255" />
			<Column Name="createdBy.id" DataType="DT_WSTR" Label="CreatedById" Length="200" />
			<Column Name="lastModifiedBy.displayName" DataType="DT_WSTR" Label="LastModifiedByName" Length="255" />
			<Column Name="lastModifiedBy.uniqueName" DataType="DT_WSTR" Label="LastModifiedByUniqueName" Length="255" />
			<Column Name="lastModifiedBy.id" DataType="DT_WSTR" Label="LastModifiedById" Length="200" />			
	    </OutputColumns>
    </EndPoint>
	
    <EndPoint Name="IterationOutputColumns">
      <OutputColumns>
		    <Column Name="id" DataType="DT_WSTR" Label="Id" Length="200" Key="True" />
		    <Column Name="name" DataType="DT_WSTR" Label="Name" Length="200" />
			<Column Name="path" DataType="DT_WSTR" Label="Path" Length="200" />
		    <Column Name="url" DataType="DT_WSTR" Label="Url" Length="2048" />
			<Column Name="attributes.startDate" Label="StartDate" DataType="DT_DBTIMESTAMP"  />
			<Column Name="attributes.finishDate" Label="EndDate" DataType="DT_DBTIMESTAMP"  />
			<Column Name="attributes.timeFrame" Label="Timeframe"  />
	    </OutputColumns>
    </EndPoint>
	
    <EndPoint Name="OperationReferenceOutputColumns">
      <OutputColumns>
		    <Column Name="id" DataType="DT_WSTR" Label="Id" Length="200" Key="True" />
		    <Column Name="pluginId" DataType="DT_WSTR" Label="PluginId" Length="200" />
		    <Column Name="status" DataType="DT_WSTR" Label="Status" Length="100" />
		    <Column Name="url" DataType="DT_WSTR" Label="Url" Length="2048" />
	    </OutputColumns>
    </EndPoint>

    <EndPoint Name="ProjectPostParamsAndInputColumns">
      <Params>
        <Param Name="Name" Label="Project Name" Desc="The name of the project." Type="Placeholder" Required="True" />
        <Param Name="Abbreviation" Label="Project Abbreviation" Desc="The abbreviation of the project." Type="Placeholder" Required="True" />
        <Param Name="Description" Label="Project Description" Desc="The description of the project." Type="Placeholder" Required="True" />
        <Param Name="SourceControlType" Label="Source Control Type" Desc="The type of source control to be used with the project." Options="Git;Tfvc" Type="Placeholder" Required="True" />
        <Param Name="TemplateTypeId" Label="Template Type Id" Desc="The template type id to use for the project." Type="Placeholder" Required="True" />
        <Param Name="Visibility" Desc="The visibility of the project to organizational users. If set to private, the project is only visible to users with explicit access. If set to public, the project is visible to all." Value="private" Options="private;public" Type="Placeholder" Required="True" />
      </Params>
    </EndPoint>    

    <EndPoint Name="ProjectPutParamsAndInputColumns">
      <Params>
        <Param Name="Name" Label="Project Name" Desc="The name of the project." Type="Placeholder" />
        <Param Name="Abbreviation" Label="Project Abbreviation" Desc="The abbreviation of the project." Type="Placeholder" />
        <Param Name="Description" Label="Project Description" Desc="The description of the project." Type="Placeholder" />
        <Param Name="SourceControlType" Label="Source Control Type" Desc="The type of source control to be used with the project." Options="Git;Tfvc" Type="Placeholder" />
        <Param Name="TemplateTypeId" Label="Template Type Id" Desc="The template type id to use for the project." Type="Placeholder" />
        <Param Name="Visibility" Desc="The visibility of the project to organizational users. If set to private, the project is only visible to users with explicit access. If set to public, the project is visible to all." Value="private" Options="private;public" Type="Placeholder" />
      </Params>
    </EndPoint>

    <EndPoint Name="ProjectOutputColumns">
      <OutputColumns>
		    <Column Name="id" DataType="DT_WSTR" Label="Id" Length="500" Key="True" />
		    <Column Name="name" DataType="DT_WSTR" Label="Name" Length="500" />
		    <Column Name="description" DataType="DT_WSTR" Label="Description" Length="1160" />
		    <Column Name="url" DataType="DT_WSTR" Label="Url" Length="1000" />
		    <Column Name="state" DataType="DT_WSTR" Label="State" Length="100" />
		    <Column Name="revision" DataType="DT_I4" Label="Revision" />
		    <Column Name="visibility" DataType="DT_WSTR" Label="Visibility" Length="100" />
		    <Column Name="lastUpdateTime" DataType="DT_DBTIMESTAMP" Label="LastUpdateTime" />
	    </OutputColumns>
    </EndPoint>

    <EndPoint Name="WorkItemOutputColumns">
      <OutputColumns>
			    <Column Name="id" DataType="DT_I4" Label="Id" Key="True" />
			    <Column Name="fields.System.Title" DataType="DT_WSTR" Label="Title" Length="1000" />
			    <Column Name="fields.System.Description" DataType="DT_WSTR" Label="Description" Length="4000" />
			    <Column Name="fields.System.WorkItemType" DataType="DT_WSTR" Label="WorkItemType" Length="100" />
			    <Column Name="fields.System.State" DataType="DT_WSTR" Label="State" Length="100" />
			    <Column Name="url" DataType="DT_WSTR" Label="Url" Length="2048" />
			    <Column Name="fields.System.Tags" DataType="DT_WSTR" Label="Tags" Length="4000" />          
			    <Column Name="rev" DataType="DT_I4" Label="Revision" />
			    <Column Name="fields.System.AreaPath" DataType="DT_WSTR" Label="AreaPath" Length="500" />
			    <Column Name="fields.System.TeamProject" DataType="DT_WSTR" Label="TeamProject" Length="500" />
			    <Column Name="fields.System.IterationPath" DataType="DT_WSTR" Label="IterationPath" Length="500" />
			    <Column Name="fields.System.Reason" DataType="DT_WSTR" Label="Reason" Length="500" />
			    <Column Name="fields.System.CreatedDate" DataType="DT_DBTIMESTAMP" Label="CreatedDate" />
			    <Column Name="fields.System.ChangedDate" DataType="DT_DBTIMESTAMP" Label="ChangedDate" />
				<Column Name="fields.System.CommentCount" DataType="DT_I4" Label="CommentCount" />

				<Column Name="fields.System.AssignedTo.displayName" DataType="DT_WSTR" Label="AssignedToDisplayName" Length="500" />
			    <Column Name="fields.System.AssignedTo.url" DataType="DT_WSTR" Label="AssignedToUrl" Length="2048" />
			    <Column Name="fields.System.AssignedTo._links.avatar.href" DataType="DT_WSTR" Label="AssignedToLinksAvatarHref" Length="4000" />
			    <Column Name="fields.System.AssignedTo.id" DataType="DT_WSTR" Label="AssignedToId" Length="500" />
			    <Column Name="fields.System.AssignedTo.uniqueName" DataType="DT_WSTR" Label="AssignedToUniqueName" Length="500" />
			    <Column Name="fields.System.AssignedTo.imageUrl" DataType="DT_WSTR" Label="AssignedToImageUrl" Length="2048" />
			    <Column Name="fields.System.AssignedTo.descriptor" DataType="DT_WSTR" Label="AssignedToDescriptor" Length="2000" />
			    
				<Column Name="fields.System.CreatedBy.displayName" DataType="DT_WSTR" Label="CreatedByDisplayName" Length="500" />
			    <Column Name="fields.System.CreatedBy.url" DataType="DT_WSTR" Label="CreatedByUrl" Length="2048" />
			    <Column Name="fields.System.CreatedBy._links.avatar.href" DataType="DT_WSTR" Label="CreatedByLinksAvatarHref" Length="2048" />
			    <Column Name="fields.System.CreatedBy.id" DataType="DT_WSTR" Label="CreatedById" Length="500" />
			    <Column Name="fields.System.CreatedBy.uniqueName" DataType="DT_WSTR" Label="CreatedByUniqueName" Length="500" />
			    <Column Name="fields.System.CreatedBy.imageUrl" DataType="DT_WSTR" Label="CreatedByImageUrl" Length="2048" />
			    <Column Name="fields.System.CreatedBy.descriptor" DataType="DT_WSTR" Label="CreatedByDescriptor" Length="2000" />
			    
				
			    <Column Name="fields.System.ChangedBy.displayName" DataType="DT_WSTR" Label="ChangedByDisplayName" Length="500" />
			    <Column Name="fields.System.ChangedBy.url" DataType="DT_WSTR" Label="ChangedByUrl" Length="2048" />
			    <Column Name="fields.System.ChangedBy._links.avatar.href" DataType="DT_WSTR" Label="ChangedByLinksAvatarHref" Length="2048" />
			    <Column Name="fields.System.ChangedBy.id" DataType="DT_WSTR" Label="ChangedById" Length="500" />
			    <Column Name="fields.System.ChangedBy.uniqueName" DataType="DT_WSTR" Label="ChangedByUniqueName" Length="500" />
			    <Column Name="fields.System.ChangedBy.imageUrl" DataType="DT_WSTR" Label="ChangedByImageUrl" Length="2048" />
			    <Column Name="fields.System.ChangedBy.descriptor" DataType="DT_WSTR" Label="ChangedByDescriptor" Length="2000" />
			    
				
				<Column Name="fields.System.Watermark" DataType="DT_WSTR" Label="Watermark" Length="500" />
								
			    <Column Name="fields.Microsoft.VSTS.Common.StateChangeDate" DataType="DT_DBTIMESTAMP" Label="StateChangeDate" />
			    <Column Name="fields.Microsoft.VSTS.Common.Priority" DataType="DT_I4" Label="Priority" />
			    <Column Name="fields.Microsoft.VSTS.Common.Triage" DataType="DT_WSTR" Label="Triage" Length="1000" />
			    <Column Name="fields.Microsoft.VSTS.Common.StackRank" DataType="DT_I4" Label="StackRank" />
				
			    <Column Name="fields.Microsoft.VSTS.CMMI.Blocked" DataType="DT_WSTR" Label="Blocked" Length="500" />
			    <Column Name="fields.Microsoft.VSTS.CMMI.TaskType" DataType="DT_WSTR" Label="TaskType" Length="500" />
			    <Column Name="fields.Microsoft.VSTS.CMMI.RequiresReview" DataType="DT_WSTR" Label="RequiresReview" Length="100" />
			    <Column Name="fields.Microsoft.VSTS.CMMI.RequiresTest" DataType="DT_WSTR" Label="RequiresTest" Length="100" />
				
			    <Column Name="fields.Microsoft.VSTS.Common.ActivatedDate" DataType="DT_DBTIMESTAMP" Label="ActivatedDate" />
			    <Column Name="fields.Microsoft.VSTS.Common.ActivatedBy.displayName" DataType="DT_WSTR" Label="ActivatedByDisplayName" Length="500" />
			    <Column Name="fields.Microsoft.VSTS.Common.ActivatedBy.url" DataType="DT_WSTR" Label="ActivatedByUrl" Length="2048" />
			    <Column Name="fields.Microsoft.VSTS.Common.ActivatedBy._links.avatar.href" DataType="DT_WSTR" Label="ActivatedByLinksAvatarHref" Length="2048" />
			    <Column Name="fields.Microsoft.VSTS.Common.ActivatedBy.id" DataType="DT_WSTR" Label="ActivatedById" Length="500" />
			    <Column Name="fields.Microsoft.VSTS.Common.ActivatedBy.uniqueName" DataType="DT_WSTR" Label="ActivatedByUniqueName" Length="500" />
			    <Column Name="fields.Microsoft.VSTS.Common.ActivatedBy.imageUrl" DataType="DT_WSTR" Label="ActivatedByImageUrl" Length="2048" />
			    <Column Name="fields.Microsoft.VSTS.Common.ActivatedBy.descriptor" DataType="DT_WSTR" Label="ActivatedByDescriptor" Length="2000" />
			    
				<Column Name="fields.Microsoft.VSTS.Common.ClosedDate" DataType="DT_DBTIMESTAMP" Label="ClosedDate" />
			    <Column Name="fields.Microsoft.VSTS.Common.ClosedBy.displayName" DataType="DT_WSTR" Label="ClosedByDisplayName" Length="500" />
			    <Column Name="fields.Microsoft.VSTS.Common.ClosedBy.url" DataType="DT_WSTR" Label="ClosedByUrl" Length="2048" />
			    <Column Name="fields.Microsoft.VSTS.Common.ClosedBy._links.avatar.href" DataType="DT_WSTR" Label="ClosedByLinksAvatarHref" Length="2048" />
			    <Column Name="fields.Microsoft.VSTS.Common.ClosedBy.id" DataType="DT_WSTR" Label="ClosedById" Length="500" />
			    <Column Name="fields.Microsoft.VSTS.Common.ClosedBy.uniqueName" DataType="DT_WSTR" Label="ClosedByUniqueName" Length="500" />
			    <Column Name="fields.Microsoft.VSTS.Common.ClosedBy.imageUrl" DataType="DT_WSTR" Label="ClosedByImageUrl" Length="2048" />
			    <Column Name="fields.Microsoft.VSTS.Common.ClosedBy.descriptor" DataType="DT_WSTR" Label="ClosedByDescriptor" Length="2000" />
			    
				<Column Name="fields.Microsoft.VSTS.Common.ResolvedDate" DataType="DT_DBTIMESTAMP" Label="ResolvedDate" />
			    
				<Column Name="fields.Microsoft.VSTS.Common.ResolvedBy.displayName" DataType="DT_WSTR" Label="ResolvedByDisplayName" Length="500" />
			    <Column Name="fields.Microsoft.VSTS.Common.ResolvedBy.url" DataType="DT_WSTR" Label="ResolvedByUrl" Length="2048" />
			    <Column Name="fields.Microsoft.VSTS.Common.ResolvedBy._links.avatar.href" DataType="DT_WSTR" Label="ResolvedByLinksAvatarHref" Length="2048" />
			    <Column Name="fields.Microsoft.VSTS.Common.ResolvedBy.id" DataType="DT_WSTR" Label="ResolvedById" Length="500" />
			    <Column Name="fields.Microsoft.VSTS.Common.ResolvedBy.uniqueName" DataType="DT_WSTR" Label="ResolvedByUniqueName" Length="500" />
			    <Column Name="fields.Microsoft.VSTS.Common.ResolvedBy.imageUrl" DataType="DT_WSTR" Label="ResolvedByImageUrl" Length="2048" />
			    <Column Name="fields.Microsoft.VSTS.Common.ResolvedBy.descriptor" DataType="DT_WSTR" Label="ResolvedByDescriptor" Length="2000" />
			    <Column Name="fields.Microsoft.VSTS.Common.ResolvedReason" DataType="DT_WSTR" Label="ResolvedReason" Length="4000" />
				
				<Column Name="fields.System.AreaId" DataType="DT_WSTR" Label="AreaId" Length="500" />
				<Column Name="fields.System.IterationId" DataType="DT_WSTR" Label="IterationId" Length="500" />
				<Column Name="fields.System.RevisedDate" DataType="DT_DBTIMESTAMP" Label="RevisedDate" />
				<Column Name="fields.System.RemoteLinkCount" DataType="DT_I4" Label="RemoteLinkCount" />
				<Column Name="fields.System.RelatedLinkCount" DataType="DT_I4" Label="RelatedLinkCount" />
				<Column Name="fields.System.HyperLinkCount" DataType="DT_I4" Label="HyperLinkCount" />
				<Column Name="fields.System.ExternalLinkCount" DataType="DT_I4" Label="ExternalLinkCount" />
				<Column Name="fields.System.History" DataType="DT_WSTR" Label="History" Length="2000" />
				<Column Name="fields.Microsoft.VSTS.Build.IntegrationBuild" DataType="DT_WSTR" Label="IntegrationBuild" Length="500" />
				<Column Name="fields.Microsoft.VSTS.Build.FoundIn" DataType="DT_WSTR" Label="FoundIn" Length="500" />
				<Column Name="fields.Microsoft.VSTS.Scheduling.OriginalEstimate" DataType="DT_R4" Label="OriginalEstimate" />
				<Column Name="fields.Microsoft.VSTS.Scheduling.RemainingWork" DataType="DT_R4" Label="RemainingWork" />
				<Column Name="fields.Microsoft.VSTS.Scheduling.CompletedWork" DataType="DT_R4" Label="CompletedWork" />
				<Column Name="fields.Microsoft.VSTS.Scheduling.Size" DataType="DT_R4" Label="Size" />
				<Column Name="fields.Microsoft.VSTS.Scheduling.Effort" DataType="DT_R4" Label="Effort" />
				<Column Name="fields.Microsoft.VSTS.Scheduling.TargetDate" DataType="DT_DBTIMESTAMP" Label="TargetDate" />
				<Column Name="fields.Microsoft.VSTS.Scheduling.StoryPoints" DataType="DT_R4" Label="StoryPoints" />
				<Column Name="fields.Microsoft.VSTS.Scheduling.StartDate" DataType="DT_DBTIMESTAMP" Label="StartDate" />
				<Column Name="fields.Microsoft.VSTS.Scheduling.FinishDate" DataType="DT_DBTIMESTAMP" Label="FinishDate" />
				<Column Name="fields.Microsoft.VSTS.Scheduling.DueDate" DataType="DT_DBTIMESTAMP" Label="DueDate" />
				<Column Name="fields.Microsoft.VSTS.Common.Discipline" DataType="DT_WSTR" Label="Discipline" Length="500" />
				
				<Column Name="fields.Microsoft.VSTS.TCM.SystemInfo" DataType="DT_WSTR" Label="SystemInfo" Length="4000" />
				<Column Name="fields.Microsoft.VSTS.TCM.Steps" DataType="DT_WSTR" Label="Steps" Length="4000" />
				<Column Name="fields.Microsoft.VSTS.TCM.ReproSteps" DataType="DT_WSTR" Label="ReproSteps" Length="4000" />
				
				
			    <Column Name="fields.[$parent.referenceName$]" Label="[$parent.referenceName$]" Expand="True" 
				   DataEndPoint="get_query_fields" CachedTtl="60"
                   DataEndPointParameters="Filter=$.columns[?(@referenceName=~/^Custom./)];Project=[$Project$];Query=SELECT * FROM WorkItems Where [System.Id]=1"
                   ColumnInfoMap="Name=referenceName"   
                   UseCamelCaseLabel="True"
                />
      </OutputColumns>
    </EndPoint>

    <EndPoint Name="WorkItemUpdateColumns">
      <InputColumns>
        <Column Name="Id" Type="DT_WSTR" MapToParam="True" Key="True" ExcludeFromRowMap="True"/>
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.WorkItemType&quot; }" Name="System.WorkItemType" Type="DT_WSTR" Label="WorkItemType" Length="1000" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.Title&quot; }"  Name="System.Title" Type="DT_WSTR" Label="Title" Length="1000" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.Description&quot; }"  Name="System.Description" Type="DT_WSTR" Label="Description" Length="4000" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.State&quot; }"  Name="System.State" Type="DT_WSTR" Label="State" Length="100" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.History&quot; }"  Name="System.History" Type="DT_WSTR" Label="History" Length="100" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.Tags&quot; }"  Name="fields.System.Tags" Type="DT_WSTR" Label="Tags" Length="4000" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/rev&quot; }"  Name="rev" Type="DT_I4" Label="Revision" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.AreaPath&quot; }"  Name="System.AreaPath" Type="DT_WSTR" Label="AreaPath" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.TeamProject&quot; }"  Name="System.TeamProject" Type="DT_WSTR" Label="TeamProject" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.IterationPath&quot; }"  Name="System.IterationPath" Type="DT_WSTR" Label="IterationPath" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.Reason&quot; }"  Name="System.Reason" Type="DT_WSTR" Label="Reason" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.AssignedTo&quot; }"  Name="System.AssignedTo" Type="DT_WSTR" Label="AssignedTo" Length="500"/>
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.Priority&quot; }"  Name="Microsoft.VSTS.Common.Priority" Type="DT_I4" Label="Priority" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.Triage&quot; }"  Name="Microsoft.VSTS.Common.Triage" Type="DT_WSTR" Label="Triage" Length="1000" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.CMMI.StackRank&quot; }"  Name="Microsoft.VSTS.Common.StackRank" Type="DT_I4" Label="StackRank" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.CMMI.Blocked&quot; }"  Name="Microsoft.VSTS.CMMI.Blocked" Type="DT_WSTR" Label="Blocked" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.CMMI.TaskType&quot; }"  Name="Microsoft.VSTS.CMMI.TaskType" Type="DT_WSTR" Label="TaskType" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.CMMI.RequiresReview&quot; }"  Name="Microsoft.VSTS.CMMI.RequiresReview" Type="DT_WSTR" Label="RequiresReview" Length="100" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.CMMI.RequiresTest&quot; }"  Name="Microsoft.VSTS.CMMI.RequiresTest" Type="DT_WSTR" Label="RequiresTest" Length="100" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.ActivatedDate&quot; }"  Name="Microsoft.VSTS.Common.ActivatedDate" Type="DT_DBTIMESTAMP" Label="ActivatedDate" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.ActivatedBy&quot; }"  Name="Microsoft.VSTS.Common.ActivatedBy" Type="DT_WSTR" Label="ActivatedBy" Length="500"/>
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.ClosedDate&quot; }"  Name="Microsoft.VSTS.Common.ClosedDate" Type="DT_DBTIMESTAMP" Label="ClosedDate" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.ClosedBy&quot; }"  Name="Microsoft.VSTS.Common.ClosedBy" Type="DT_WSTR" Label="ClosedBy" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.ResolvedDate&quot; }"  Name="Microsoft.VSTS.Common.ResolvedDate" Type="DT_DBTIMESTAMP" Label="ResolvedDate" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.ResolvedReason&quot; }"  Name="Microsoft.VSTS.Common.ResolvedReason" Type="DT_WSTR" Label="ResolvedReason" Length="4000" />
                                                                  
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Build.IntegrationBuild&quot; }" Name="Microsoft.VSTS.Build.IntegrationBuild" DataType="DT_WSTR" Label="IntegrationBuild" Length="500" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Build.FoundIn&quot; }" Name="Microsoft.VSTS.Build.FoundIn" DataType="DT_WSTR" Label="FoundIn" Length="500" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.OriginalEstimate&quot; }" Name="Microsoft.VSTS.Scheduling.OriginalEstimate" DataType="DT_R4" Label="OriginalEstimate" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.RemainingWork&quot; }" Name="Microsoft.VSTS.Scheduling.RemainingWork" DataType="DT_R4" Label="RemainingWork" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.CompletedWork&quot; }" Name="Microsoft.VSTS.Scheduling.CompletedWork" DataType="DT_R4" Label="CompletedWork" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.Size&quot; }" Name="Microsoft.VSTS.Scheduling.Size" DataType="DT_R4" Label="Size" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.Effort&quot; }" Name="Microsoft.VSTS.Scheduling.Effort" DataType="DT_R4" Label="Effort" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.TargetDate&quot; }" Name="Microsoft.VSTS.Scheduling.TargetDate" DataType="DT_DBTIMESTAMP" Label="TargetDate" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.StartDate&quot; }" Name="Microsoft.VSTS.Scheduling.StartDate" DataType="DT_DBTIMESTAMP" Label="StartDate" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.FinishDate&quot; }" Name="Microsoft.VSTS.Scheduling.FinishDate" DataType="DT_DBTIMESTAMP" Label="FinishDate" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.DueDate&quot; }" Name="Microsoft.VSTS.Scheduling.DueDate" DataType="DT_DBTIMESTAMP" Label="DueDate" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.StoryPoints&quot; }" Name="Microsoft.VSTS.Scheduling.StoryPoints" DataType="DT_R4" Label="StoryPoints" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.Discipline&quot; }" Name="Microsoft.VSTS.Scheduling.Discipline" DataType="DT_WSTR" Label="Discipline" Length="100"/>		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.TCM.SystemInfo&quot; }" Name="Microsoft.VSTS.TCM.SystemInfo" DataType="DT_WSTR" Label="SystemInfo" Length="4000"/>		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.TCM.Steps&quot; }" Name="Microsoft.VSTS.TCM.Steps" DataType="DT_WSTR" Label="Steps" Length="4000"/>		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.TCM.ReproSteps&quot; }" Name="Microsoft.VSTS.TCM.ReproSteps" DataType="DT_WSTR" Label="ReproSteps" Length="4000"/>		
		
        <Column Raw="True" Name="[$parent.referenceName$]" Expand="True" DataEndPoint="get_query_fields" CachedTtl="60"
                DataEndPointParameters="Filter=$.columns[?(@referenceName=~/^Custom./)];Project=[$Project$];Query=SELECT * FROM WorkItems Where [System.Id]=1"
                ColumnInfoMap="Name=referenceName"
                ValueTemplate="{ &quot;op&quot;: &quot;[$Operation$]&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/[$parent.referenceName$]&quot; }"
                UseCamelCaseLabel="True"
                />
      </InputColumns>    
  </EndPoint>
    
    <EndPoint Name="WorkItemAddColumns">
      <InputColumns>
        <Column Name="WorkItemType" DataType="DT_WSTR" MapToParam="True" ExcludeFromRowMap="True"/>
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.WorkItemType&quot; }" Name="System.WorkItemType" Type="DT_WSTR" Label="WorkItemType" Length="1000" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.Title&quot; }"  Name="System.Title" Type="DT_WSTR" Label="Title" Length="1000" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.Description&quot; }"  Name="System.Description" Type="DT_WSTR" Label="Description" Length="4000" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.State&quot; }"  Name="System.State" Type="DT_WSTR" Label="State" Length="100" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.History&quot; }"  Name="System.History" Type="DT_WSTR" Label="History" Length="100" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.Tags&quot; }"  Name="fields.System.Tags" Type="DT_WSTR" Label="Tags" Length="4000" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/rev&quot; }"  Name="rev" Type="DT_I4" Label="Revision" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.AreaPath&quot; }"  Name="System.AreaPath" Type="DT_WSTR" Label="AreaPath" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.TeamProject&quot; }"  Name="System.TeamProject" Type="DT_WSTR" Label="TeamProject" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.IterationPath&quot; }"  Name="System.IterationPath" Type="DT_WSTR" Label="IterationPath" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.Reason&quot; }"  Name="System.Reason" Type="DT_WSTR" Label="Reason" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/System.AssignedTo&quot; }"  Name="System.AssignedTo" Type="DT_WSTR" Label="AssignedTo" Length="500"/>
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.Priority&quot; }"  Name="Microsoft.VSTS.Common.Priority" Type="DT_I4" Label="Priority" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.Triage&quot; }"  Name="Microsoft.VSTS.Common.Triage" Type="DT_WSTR" Label="Triage" Length="1000" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.CMMI.StackRank&quot; }"  Name="Microsoft.VSTS.Common.StackRank" Type="DT_I4" Label="StackRank" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.CMMI.Blocked&quot; }"  Name="Microsoft.VSTS.CMMI.Blocked" Type="DT_WSTR" Label="Blocked" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.CMMI.TaskType&quot; }"  Name="Microsoft.VSTS.CMMI.TaskType" Type="DT_WSTR" Label="TaskType" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.CMMI.RequiresReview&quot; }"  Name="Microsoft.VSTS.CMMI.RequiresReview" Type="DT_WSTR" Label="RequiresReview" Length="100" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.CMMI.RequiresTest&quot; }"  Name="Microsoft.VSTS.CMMI.RequiresTest" Type="DT_WSTR" Label="RequiresTest" Length="100" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.ActivatedDate&quot; }"  Name="Microsoft.VSTS.Common.ActivatedDate" Type="DT_DBTIMESTAMP" Label="ActivatedDate" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.ActivatedBy&quot; }"  Name="Microsoft.VSTS.Common.ActivatedBy" Type="DT_WSTR" Label="ActivatedBy" Length="500"/>
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.ClosedDate&quot; }"  Name="Microsoft.VSTS.Common.ClosedDate" Type="DT_DBTIMESTAMP" Label="ClosedDate" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.ClosedBy&quot; }"  Name="Microsoft.VSTS.Common.ClosedBy" Type="DT_WSTR" Label="ClosedBy" Length="500" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.ResolvedDate&quot; }"  Name="Microsoft.VSTS.Common.ResolvedDate" Type="DT_DBTIMESTAMP" Label="ResolvedDate" />
        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Common.ResolvedReason&quot; }"  Name="Microsoft.VSTS.Common.ResolvedReason" Type="DT_WSTR" Label="ResolvedReason" Length="4000" />

        <Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Build.IntegrationBuild&quot; }" Name="Microsoft.VSTS.Build.IntegrationBuild" DataType="DT_WSTR" Label="IntegrationBuild" Length="500" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Build.FoundIn&quot; }" Name="Microsoft.VSTS.Build.FoundIn" DataType="DT_WSTR" Label="FoundIn" Length="500" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.OriginalEstimate&quot; }" Name="Microsoft.VSTS.Scheduling.OriginalEstimate" DataType="DT_R4" Label="OriginalEstimate" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.RemainingWork&quot; }" Name="Microsoft.VSTS.Scheduling.RemainingWork" DataType="DT_R4" Label="RemainingWork" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.CompletedWork&quot; }" Name="Microsoft.VSTS.Scheduling.CompletedWork" DataType="DT_R4" Label="CompletedWork" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.Size&quot; }" Name="Microsoft.VSTS.Scheduling.Size" DataType="DT_R4" Label="Size" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.Effort&quot; }" Name="Microsoft.VSTS.Scheduling.Effort" DataType="DT_R4" Label="Effort" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.TargetDate&quot; }" Name="Microsoft.VSTS.Scheduling.TargetDate" DataType="DT_DBTIMESTAMP" Label="TargetDate" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.StartDate&quot; }" Name="Microsoft.VSTS.Scheduling.StartDate" DataType="DT_DBTIMESTAMP" Label="StartDate" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.FinishDate&quot; }" Name="Microsoft.VSTS.Scheduling.FinishDate" DataType="DT_DBTIMESTAMP" Label="FinishDate" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.DueDate&quot; }" Name="Microsoft.VSTS.Scheduling.DueDate" DataType="DT_DBTIMESTAMP" Label="DueDate" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.StoryPoints&quot; }" Name="Microsoft.VSTS.Scheduling.StoryPoints" DataType="DT_R4" Label="StoryPoints" />		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.Scheduling.Discipline&quot; }" Name="Microsoft.VSTS.Scheduling.Discipline" DataType="DT_WSTR" Label="Discipline" Length="100"/>		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.TCM.SystemInfo&quot; }" Name="Microsoft.VSTS.TCM.SystemInfo" DataType="DT_WSTR" Label="SystemInfo" Length="4000"/>		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.TCM.Steps&quot; }" Name="Microsoft.VSTS.TCM.Steps" DataType="DT_WSTR" Label="Steps" Length="4000"/>		
		<Column Raw="True" ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/Microsoft.VSTS.TCM.ReproSteps&quot; }" Name="Microsoft.VSTS.TCM.ReproSteps" DataType="DT_WSTR" Label="ReproSteps" Length="4000"/>				
		
        <Column Raw="True" Name="[$parent.referenceName$]" Expand="True" DataEndPoint="get_query_fields" CachedTtl="60"
                DataEndPointParameters="Filter=$.columns[?(@referenceName=~/^Custom./)];Project=[$Project$];Query=SELECT * FROM WorkItems Where [System.Id]=1"
                ColumnInfoMap="Name=referenceName"
                ValueTemplate="{ &quot;op&quot;: &quot;add&quot;, &quot;value&quot;: &quot;&lt;&lt;{$value$},FUN_JSONENC&gt;&gt;&quot;, &quot;path&quot;: &quot;/fields/[$parent.referenceName$]&quot; }"
                UseCamelCaseLabel="True"
                />
      </InputColumns>
    </EndPoint>

    <EndPoint Name="TextSearchWorkItemOutputColumns">
      <OutputColumns>
        <Column Name="fields.system.id" DataType="DT_WSTR" Label="Id" Length="50" />
        <Column Name="fields.system.title" DataType="DT_WSTR" Label="Title" Length="4000" />
        <Column Name="fields.system.workitemtype" DataType="DT_WSTR" Label="WorkItemType" Length="50" />
        <Column Name="fields.system.assignedto" DataType="DT_WSTR" Label="AssignedTo" Length="500" />
        <Column Name="fields.system.state" DataType="DT_WSTR" Label="State" Length="100" />
        <Column Name="fields.system.tags" DataType="DT_WSTR" Label="Tags" Length="500" />
        <Column Name="fields.system.rev" DataType="DT_WSTR" Label="Revision" Length="50" />
        <Column Name="fields.system.createddate" DataType="DT_DBTIMESTAMP" Label="CreatedDate" />
        <Column Name="fields.system.changeddate" DataType="DT_DBTIMESTAMP" Label="ChangedDate" />
        <Column Name="project.id" DataType="DT_WSTR" Label="ProjectId" Length="500" />
        <Column Name="project.name" DataType="DT_WSTR" Label="ProjectName" Length="500" />
        <Column Name="hits" DataType="DT_WSTR" Label="Hits" Length="4000" />
        <Column Name="url" DataType="DT_WSTR" Label="Url" Length="1000" />
      </OutputColumns>
    </EndPoint>
	
	
    <EndPoint Name="WorkItemCommentOutputColumns" >
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_I4" />
		<Column Name="workItemId" Label="WorkItemId" DataType="DT_I4" />
        <Column Name="text" Label="Text" DataType="DT_NTEXT" />
		<Column Name="renderedText" Label="RenderedText" DataType="DT_NTEXT" />
		<Column Name="format" Label="Format" DataType="DT_WSTR"  />
		
        <Column Name="createdDate" Label="CreatedDate" DataType="DT_DBTIMESTAMP" />
		<Column Name="createdBy.uniqueName" Label="CreatedByUniqueName" DataType="DT_WSTR" />
		<Column Name="createdBy.id" Label="CreatedById" DataType="DT_WSTR" />
		<Column Name="createdBy.displayName" Label="CreatedByDisplayName" DataType="DT_WSTR" />
		
		<Column Name="modifiedDate" Label="ModifiedDate" DataType="DT_DBTIMESTAMP" />
		<Column Name="modifiedBy.uniqueName" Label="ModifiedByUniqueName" DataType="DT_WSTR" />
		<Column Name="modifiedBy.id" Label="ModifiedById" DataType="DT_WSTR" />
		<Column Name="modifiedBy.displayName" Label="ModifiedByDisplayName" DataType="DT_WSTR" />		
		
		<Column Name="url" DataType="DT_WSTR" Label="Url" Length="1000" />
      </OutputColumns>
    </EndPoint>
	
    <EndPoint Name="QueryWorkItemOutputColumns" Template="WorkItemOutputColumns">
		<OutputColumns>
			  
		</OutputColumns>
    </EndPoint>

    <EndPoint Name="TeamPostParamsAndInputColumns">
      <Params>
        <Param Name="Name" Label="Team Name" Desc="The name of the team." Type="Placeholder" Required="True" />
        <Param Name="Description" Label="Team Description" Desc="The description of the team." Type="Placeholder" Required="True" />
      </Params>
      <InputColumns>
        <Column Name="name" Label="Name" Desc="The name of the team." MapToParam="True" DataType="DT_WSTR" Length="200" />
        <Column Name="description" Label="Description" Desc="The description of the team." MapToParam="True" DataType="DT_WSTR" Length="500" />
      </InputColumns>
    </EndPoint>    
    
    <EndPoint Name="TeamPutParamsAndInputColumns">
      <Params>
        <Param Name="Name" Label="Team Name" Desc="The name of the team." Type="Placeholder" />
        <Param Name="Description" Label="Team Description" Desc="The description of the team." Type="Placeholder" />
      </Params>
      <InputColumns>
        <Column Name="name" Label="Name" Desc="The name of the team." MapToParam="True" DataType="DT_WSTR" Length="200" />
        <Column Name="description" Label="Description" Desc="The description of the team." MapToParam="True" DataType="DT_WSTR" Length="500" />
      </InputColumns>
    </EndPoint>    
	
	
    <EndPoint Name="TeamOutputColumns">
      <OutputColumns>
			  <Column Name="id" DataType="DT_WSTR" Label="Id" Length="200" Key="True" />
			  <Column Name="name" DataType="DT_WSTR" Label="Name" Length="200" />
			  <Column Name="projectId" DataType="DT_WSTR" Label="ProjectId" Length="200" />
			  <Column Name="projectName" DataType="DT_WSTR" Label="ProjectName" Length="200" />
			  <Column Name="url" DataType="DT_WSTR" Label="Url" Length="2048" />
			  <Column Name="description" DataType="DT_WSTR" Label="Description" Length="4000" />
			  <Column Name="identityUrl" DataType="DT_WSTR" Label="IdentityUrl" Length="2048" />
		  </OutputColumns>
    </EndPoint>
    <EndPoint Name="TeamMemberOutputColumns">
      <OutputColumns>
		<Column Name="identity.id" Label="Id" Length="200"/>
		<Column Name="identity.displayName" Label="DisplayName"/>
		<Column Name="identity.uniqueName" Label="UniqueName"/>		
		<Column Name="identity.url" Label="Url"/>
		<Column Name="identity.imageUrl" Label="ImageUrl"/>
		<Column Name="identity.inactive" Label="Inactive" DataType="DT_BOOL"/>
		<Column Name="isTeamAdmin" Label="IsTeamAdmin"  DataType="DT_BOOL"/>
	  </OutputColumns>
	</EndPoint>  
    
    <EndPoint Name="AuditRecordOutputColumns">
      <OutputColumns>
			  <Column Name="id" DataType="DT_WSTR" Label="Id" Length="1000" Key="True" />
			  <Column Name="correlationId" DataType="DT_WSTR" Label="CorrelationId" Length="500" />
			  <Column Name="activityId" DataType="DT_WSTR" Label="ActivityId" Length="500" />
			  <Column Name="actorCUID" DataType="DT_WSTR" Label="ActorCUID" Length="500" />
			  <Column Name="actorUserId" DataType="DT_WSTR" Label="ActorUserId" Length="500" />
			  <Column Name="authenticationMechanism" DataType="DT_WSTR" Label="AuthenticationMechanism" Length="200" />
			  <Column Name="timestamp" DataType="DT_DBTIMESTAMP" Label="Timestamp" />
			  <Column Name="scopeType" DataType="DT_WSTR" Label="ScopeType" Length="200" />
			  <Column Name="scopeDisplayName" DataType="DT_WSTR" Label="ScopeDisplayName" Length="200" />
			  <Column Name="scopeId" DataType="DT_WSTR" Label="ScopeId" Length="200" />
			  <Column Name="ipAddress" DataType="DT_WSTR" Label="IpAddress" Length="200" />
			  <Column Name="userAgent" DataType="DT_WSTR" Label="UserAgent" Length="2048" />
			  <Column Name="actionId" DataType="DT_WSTR" Label="ActionId" Length="200" />
			  <Column Name="data.ProjectId" DataType="DT_WSTR" Label="ProjectId" Length="200" />
			  <Column Name="data.ProjectName" DataType="DT_WSTR" Label="ProjectName" Length="200" />
			  <Column Name="data.ProcessTemplate" DataType="DT_WSTR" Label="ProcessTemplate" Length="200" />
			  <Column Name="data.ProjectVisibility" DataType="DT_WSTR" Label="ProjectVisibility" Length="200" />
			  <Column Name="data.Filter.StartTime" DataType="DT_DBTIMESTAMP" Label="StartTime" />
			  <Column Name="data.Filter.EndTime" DataType="DT_DBTIMESTAMP" Label="EndTime" />
			  <Column Name="data.Filter.ContinuationToken" DataType="DT_WSTR" Label="ContinuationToken" Length="4000" />
			  <Column Name="data.Filter.BatchSize" DataType="DT_I4" Label="BatchSize" />
			  <Column Name="data.Filter.HasMore" DataType="DT_WSTR" Label="HasMore" />        
			  <Column Name="data.EventSummary" DataType="DT_WSTR" Label="EventSummary" Length="4000" />
			  <Column Name="details" DataType="DT_WSTR" Label="Details" Length="4000" />
			  <Column Name="area" DataType="DT_WSTR" Label="Area" Length="500" />
			  <Column Name="category" DataType="DT_WSTR" Label="Category" Length="500" />
			  <Column Name="categoryDisplayName" DataType="DT_WSTR" Label="CategoryDisplayName" Length="500" />
			  <Column Name="actorDisplayName" DataType="DT_WSTR" Label="ActorDisplayName" Length="500" />
			  <Column Name="actorImageUrl" DataType="DT_WSTR" Label="ActorImageUrl" Length="2048" />
		  </OutputColumns>
    </EndPoint>

  </Template>


  <EndPoints>

    <!-- Get Query Fields -->
    <EndPoint Name="get_query_fields"
              Label="Get Query Fileds"
              Desc="Gets query fields for work items."
              Method="POST"
              CachedTtl="60"
              Url="https://dev.azure.com/[$Organization$]/[$Project$][$Team$]/_apis/wit/wiql?$top=1"
              ContentType="application/json"              
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/wiql/query-by-wiql?view=azure-devops-rest-7.0">
        <Body>
<![CDATA[{ "query": "<<[$Query$],FUN_JSONENC>>" }]]>
        </Body>
        <Params>
          <Param Name="Project" Template="ProjectParam" />
          <Param Name="Team" Label="Team Id or Name" Type="Placeholder" Desc="Id or name of the team associated with the query." ValueTemplate="/{$value$}" 
		   OptionsEndPointParameters="Project=[$Project$]" />
          <Param Name="TimePrecision" Key="timePrecision" Label="Use time precision" Type="Query" Desc="Whether or not to use time precision." Options=";false;true" />
          <Param Name="Query" Template="QueryParam" />
		  <Param Name="Filter" Value="$.columns[*]" Type="Property" Options="All=$.columns[*];Custom Fields=$.columns[?(@referenceName=~ /^Custom./ )];System Fields=$.columns[?(@referenceName=~ /.System/  )]"/> 
		</Params>
		<OutputColumns>
			<Column Name="name" Label="Name" />
			<Column Name="referenceName" Label="ReferenceName" />
		</OutputColumns>
    </EndPoint>
		
<!-- Query Work Items -->
    <EndPoint Name="get_workitems_by_query_id"
              Label="Get Work Items for Specified Query Id"
              Desc="Get work items associated with the specified project, organization and query. (A team can optionally be specified as well.). Read more about this API here https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/wiql/query-by-id?view=azure-devops-rest-7.1"
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/[$Project$][$Team$]/_apis/wit/wiql/[$Query$]"
              ContentType="application/json"
              Filter="$.workItems[*]"
              Template="QueryWorkItemOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/wiql/query-by-id?view=azure-devops-rest-7.1">
        <Params>
		  <Param Name="Project" Template="ProjectParam" />	
		  <Param Name="Query" Label="Query Id" Template="QueryIdParam" />          
          <Param Name="Team" Label="Team Id or Name" Type="Placeholder" Desc="Id or name of the team associated with the query." 
			ValueTemplate="/{$value$}" OptionsEndPoint="get_teams" 
				OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="name" 
				OptionsEndPointParameters="Project=[$Project$]"
				/>
          <Param Name="TimePrecision" Key="timePrecision" Label="Use time precision" Type="Query" Desc="Whether or not to use time precision." Options=";false;true" />
        </Params>

       <EndPoint Name="child_get_workitems_by_ids_for_projects"
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitems?ids={$rows$}"
              ContentType="application/json"
              Filter="$.value[*]"
              BatchSize="200"
              RequestFormat="Csv">
        <LayoutMap>
          <![CDATA[<?xml version="1.0" encoding="utf-8"?>
            <settings>
              <dataset id="root" readfrominput="True" />
              <map name="id" src="id" />
            </settings>]]>
        </LayoutMap>
      </EndPoint>
      
    </EndPoint>
	
    <!-- Query Work Items -->
    <EndPoint Name="query_workitems"
              Label="Query Work Items"
              Desc="Get work items associated with the specified project and organization that are filtered by a Wiql query. (A team can optionally be specified as well.). Read more about this API here https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/wiql/query-by-wiql?view=azure-devops-rest-7.0 and here https://learn.microsoft.com/en-us/azure/devops/boards/queries/query-operators-variables?view=azure-devops"
              Method="POST"
              Url="https://dev.azure.com/[$Organization$]/[$Project$][$Team$]/_apis/wit/wiql"
              ContentType="application/json"
              Filter="$.workItems[*]"
			  IsSqlEndPoint="True"
              Template="QueryWorkItemOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/azure/devops/boards/queries/wiql-syntax?view=azure-devops">
        <Body>
<![CDATA[{ "query": "<<[$Query$],FUN_JSONENC>>" }]]>
        </Body>
        <Params>
          <Param Name="Project" Template="ProjectParam" />
          <Param Name="Team" Label="Team Id or Name" Type="Placeholder" Desc="Id or name of the team associated with the query." 
			ValueTemplate="/{$value$}" OptionsEndPoint="get_teams" 
				OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="name" 
				OptionsEndPointParameters="Project=[$Project$]"
				/>
          <Param Name="TimePrecision" Key="timePrecision" Label="Use time precision" Type="Query" Desc="Whether or not to use time precision." Options=";false;true" />
          <Param Name="Query" Template="QueryParam" IsSqlParameter="True"/>
        </Params>

       <EndPoint Name="child_get_workitems_by_ids_for_projects"
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitems?ids={$rows$}"
              ContentType="application/json"
              Filter="$.value[*]"
              BatchSize="200"
              RequestFormat="Csv">
        <LayoutMap>
          <![CDATA[<?xml version="1.0" encoding="utf-8"?>
            <settings>
              <dataset id="root" readfrominput="True" />
              <map name="id" src="id" />
            </settings>]]>
        </LayoutMap>
      </EndPoint>
      
    </EndPoint>
    
    <!-- Query Work Items -->
    <EndPoint Name="query_workitem_comments"
              Label="Query Work Item Comments"
              Desc="Get work item comments associated with the specified project and organization that are filtered by a Wiql query. (A team can optionally be specified as well.). Read more about this API here https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/wiql/query-by-wiql?view=azure-devops-rest-7.0 and here https://learn.microsoft.com/en-us/azure/devops/boards/queries/query-operators-variables?view=azure-devops"
              Method="POST"
              Url="https://dev.azure.com/[$Organization$]/[$Project$][$Team$]/_apis/wit/wiql"
              ContentType="application/json"
              Filter="$.workItems[*]"
              Template="WorkItemCommentOutputColumns,Paginated"
              HelpLink="https://learn.microsoft.com/en-us/azure/devops/boards/queries/wiql-syntax?view=azure-devops">
        <Body>
<![CDATA[{ "query": "<<[$Query$],FUN_JSONENC>>" }]]>
        </Body>
        <Params>
          <Param Name="Project" Template="ProjectParam" />
          <Param Name="Team" Label="Team Id or Name" Type="Placeholder" Desc="Id or name of the team associated with the query." 
			ValueTemplate="/{$value$}" OptionsEndPoint="get_teams" 
				OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="name" 
				OptionsEndPointParameters="Project=[$Project$]"
				/>
          <Param Name="TimePrecision" Key="timePrecision" Label="Use time precision" Type="Query" Desc="Whether or not to use time precision." Options=";false;true" />
          <Param Name="Query" Template="QueryParam" />
        </Params>

       <EndPoint Name="child_get_workitem_comments"
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitems/[$parent.id$]/comments"
              ContentType="application/json"
              Filter="$.comments[*]"
              BatchSize="1"
              >
		<Params>
          <Param Name="api-version" Type="Query" Value="7.0-preview" Desc="For this API you must set 7.0-preview for now"/>
        </Params> 
      </EndPoint>      
    </EndPoint>
	
    <EndPoint Name="get_workitem_comments"
              Label="Get Work Item Comments (by WorkItem Id)"
              Desc="Get work item comments associated with WorkItem Id "
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitems/[$WorkItemId$]/comments"
              ContentType="application/json"
              Filter="$.comments[*]"
              Template="WorkItemCommentOutputColumns,Paginated"
              HelpLink="https://learn.microsoft.com/en-us/azure/devops/boards/queries/wiql-syntax?view=azure-devops">
        <Params>
		  <Param Name="WorkItemId" Desc="WorkItem Id for which you like to get comments" Required="True" IsKey="True"/>	
          <Param Name="Project" Template="ProjectParam" />
		  <Param Name="api-version" Type="Query" Value="7.0-preview" Desc="For this API you must set 7.0-preview for now"/>
        </Params>
    </EndPoint>	
	
    <EndPoint Name="get_workitem_comment"
              Label="Get Work Item Comment by Comment Id and Work Item Id"
              Desc="Get work item comment by its Comment Id (for specific WorkItem Id)"
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitems/[$WorkItemId$]/comments/[$Id$]"
              ContentType="application/json"
              Template="WorkItemCommentOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/comments/get?tabs=HTTP">
        <Params>
		  <Param Name="Id" Desc="Comment Id" Required="True" IsKey="True"/>		
		  <Param Name="WorkItemId" Desc="WorkItem Id for which you like to get comments" Required="True" IsKey="True"/>	
          <Param Name="Project" Template="ProjectParam" />
		   <Param Name="api-version" Type="Query" Value="7.0-preview" Desc="For this API you must set 7.0-preview for now"/>
        </Params>
    </EndPoint>

    <EndPoint Name="add_workitem_comment"
              Label="Create Work Item Comment"
              Desc="Creates work item comment for a specific WorkItem Id"
              Method="POST"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitems/[$WorkItemId$]/comments/[$Id$]"
              ContentType="application/json"
              Template="WorkItemCommentOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/comments/add?tabs=HTTP"			  
			  >
        <Body>
<![CDATA[
{
  "text": "[$Text$]"
}
]]>
        </Body>
        <Params>
		  <Param Name="Id" Desc="Comment Id" Required="True" IsKey="True"/>		
		  <Param Name="WorkItemId" Desc="WorkItem Id for which you like to get comments" Required="True" IsKey="True"/>	
          <Param Name="Project" Template="ProjectParam" />
		  <Param Name="Text" Label="Comment Text" Functions="JSONENC" />
		  <Param Name="api-version" Type="Query" Value="7.0-preview" Desc="For this API you must set 7.0-preview for now"/>
        </Params>
		<InputColumns>
			<Column Name="WorkItemId" MapToParam="True" DataType="DT_I4" />
			<Column Name="Text" MapToParam="True" DataType="DT_NTEXT" />			
		</InputColumns>
    </EndPoint>	
	
    <EndPoint Name="update_workitem_comment"
              Label="Update Work Item Comment"
              Desc="Update work item comment for a specific Work Item Id and Comment Id"
              Method="PATCH"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitems/[$WorkItemId$]/comments/[$Id$]"
              ContentType="application/json"
              Template="WorkItemCommentOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/comments/update?tabs=HTTP"			  
			  >
        <Body>
<![CDATA[
{
  "text": "<<[$Text$],FUN_JSONENC>>"
}
]]>
        </Body>
        <Params>
		  <Param Name="Id" Desc="Comment Id" Required="True" IsKey="True"/>		
		  <Param Name="WorkItemId" Desc="WorkItem Id for which you like to get comments" Required="True" IsKey="True"/>	
          <Param Name="Project" Template="ProjectParam" />
		  <Param Name="Text" Label="Comment Text" Functions="JSONENC" />
		  <Param Name="api-version" Type="Query" Value="7.0-preview" Desc="For this API you must set 7.0-preview for now"/>
        </Params>
		<InputColumns>
			<Column Name="WorkItemId" MapToParam="True" DataType="DT_I4" Key="True" />
			<Column Name="Id" MapToParam="True" DataType="DT_I4" Key="True" />
			<Column Name="Text" MapToParam="True" DataType="DT_NTEXT" />			
		</InputColumns>
    </EndPoint>	

    <EndPoint Name="delete_workitem_comment"
              Label="Delete Work Item Comment"
              Desc="Delete work item comment for a specific Work Item Id and Comment Id"
              Method="DELETE"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitems/[$WorkItemId$]/comments/[$Id$]"
              ContentType="application/json"
			  OutputHeaders="StatusCode"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/comments/delete?tabs=HTTP"			  
			  >
        <Params>
		  <Param Name="Id" Desc="Comment Id" Required="True" IsKey="True"/>		
		  <Param Name="WorkItemId" Desc="WorkItem Id for which you like to get comments" Required="True" IsKey="True"/>	
          <Param Name="Project" Template="ProjectParam" />
		  <Param Name="api-version" Type="Query" Value="7.0-preview" Desc="For this API you must set 7.0-preview for now"/>
		  <Param Name="RawOutputDataRowTemplate" Value="{}" ValueTemplate="{Status:'Deleted', Id:'[$Id$]', WorkItemId: [$WorkItemId$]}" Type="Property" />
          <Param Name="EnableRawOutputModeSingleRow" Value="True"  Type="Property" />
		  <Param Name="ContineOnErrorForStatusCode" Value="True" Type="Property" />		
		  <Param Name="ErrorStatusCodeToMatchRegex" Value="404|405" Type="Property" />		  
        </Params>
		<InputColumns>
			<Column Name="WorkItemId" MapToParam="True" DataType="DT_I4" Key="True" />
			<Column Name="Id" MapToParam="True" DataType="DT_I4" Key="True" />
		</InputColumns>
        <OutputColumns>
          <Column Name="Id" DataType="DT_I4" />	  
          <Column Name="WorkItemId" DataType="DT_I4" />	  		  
          <Column Name="Status" />
		  <Column Name="ResponseHeaders_StatusCode" Label="StatusCode" DataType="DT_I4" />	
        </OutputColumns>
    </EndPoint>		
    
    <!-- Get Work Item Column Fields -->
    <EndPoint Name="get_workitem_fields"
              Label="Get Work Item Column Fields"
              Desc="Get work item column fields in the default project within the organization. Read more about description on each field here https://learn.microsoft.com/en-us/azure/devops/boards/work-items/guidance/work-item-field?view=azure-devops"
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/fields"
              ContentType="application/json"
              Filter="$.value[*]"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/fields/list?view=azure-devops-rest-7.1">
        <Params>
		  <Param Name="Project" Template="ProjectParam" />
          <Param Name="Expand" Key="$expand" Label="Expand Parameters" Type="Query" Desc="The expand parameters for work item attributes. Possible options are 'None', 'Relations', 'Fields', 'Links', and 'All'." Options="None;Relations;Fields;Links;All" />
        </Params>
    </EndPoint>


    <!-- Get Work Items by Ids --> 
    <EndPoint Name="get_workitems_by_ids" 
              Label="Get Work Items by Ids"
              Desc="Get work items in the default project within the organization by their work item Ids."
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitems"
              ContentType="application/json"
              Filter="$.value[*]" 
              BatchSize="200"
              Template="WorkItemOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/work-items/list?view=azure-devops-rest-7.1">
        <Params>
		  <Param Name="Project" Template="ProjectParam" />	
          <Param Name="Ids" Key="ids" ReadAs="Id" IsKey="True" Label="Work Item Id List (comma separated)" 
			Type="Query" Desc="The comma-separated list of requested work item ids. (Maximum 200 ids allowed)." />
          <Param Name="AsOf" Key="asOf" Label="As-Of Date" Type="Query" Desc="AsOf UTC date time string." />
          <Param Name="Expand" Key="$expand" Label="Expand Parameters" Type="Query" Desc="The expand parameters for work item attributes. Possible options are 'None', 'Relations', 'Fields', 'Links', and 'All'." Options="None;Relations;Fields;Links;All" />
          <Param Name="ErrorPolicy" Key="errorPolicy" Label="Error Policy" Type="Query" Desc="The flag to control error policy in a bulk get work items request. Possible options are 'Fail' and 'Omit'." Options="Fail;Omit" />
          <Param Name="Fields" Key="fields" Label="Fields" Type="Query" Desc="Comma-separated list of requested fields." MultiSelect="True" MultiSelectSeparator="," OptionsEndPoint="get_workitem_fields" OptionsEndPointValueColumn="referenceName" OptionsEndPointLabelColumn="name" />
          <Param Name="ContineOn404Error" Label="Continue processing on 404 error" Type="Property" Value="True" Hidden="False" />
        </Params>
    </EndPoint>


    <!-- Get Work Item Types -->
    <EndPoint Name="get_workitemtypes"
              Label="Get Work Item Types"
              Desc="Get work item types in the default project within the organization."
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitemtypes"
              Filter="$.value[*]"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/work-item-types/list?view=azure-devops-rest-7.1">
      <Params>
			<Param Name="Project" Template="ProjectParam" />
      </Params>
      <OutputColumns>
        <Column Name="name" Label="Name" />
        <Column Name="referenceName" Label="ReferenceName" />
        <Column Name="description" Label="Description" />
        <Column Name="isDisabled" Label="IsDisabled" />
        <Column Name="url" Label="Url" />
        <Column Name="color" Label="Color" />        
        <Column Name="fields" Label="Fields" Length="4000" />
      </OutputColumns>
    </EndPoint>


    <!-- Create Work Item -->
    <EndPoint Name="add_workitem"
              Label="Create Work Item"
              Desc="Creates a new work item in the default project within the organization."
              Method="POST"
              Body="{$rows$}"
              Headers="Content-Type: application/json-patch+json"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitems/$[$WorkItemType$]"              
              BatchSize="1"
              JsonRowFormat="ArrayLines"
              Template="WorkItemAddColumns,WorkItemOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/work-items/create?view=azure-devops-rest-7.1">
      <Params>
		<Param Name="Project" Template="ProjectParam" />
        <Param Name="WorkItemType" Required="True" OptionsEndPoint="get_workitemtypes" OptionsEndPointValueColumn="Name" />
		<Param Name="ByPassRules" Key="bypassRules" Options=";true;false" Desc="Set this to true to allow setting values for some fields which otherwise wont work due to certain rules" />
		bypassRules
      </Params>
    </EndPoint>


    <!-- Update Work Item -->
    <EndPoint Name="update_workitem"
              Label="Update Work Item"
              Desc="Updates an existing work item in the default project within the organization."
              Method="PATCH"
              Body="{$rows$}"
              Headers="Content-Type: application/json-patch+json"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitems/[$Id$]"
              BatchSize="1"
              JsonRowFormat="ArrayLines"
              Template="WorkItemUpdateColumns,WorkItemOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/work-items/update?view=azure-devops-rest-7.1">
      <Params>
		<Param Name="Project" Template="ProjectParam" />
        <Param Name="Id" IsKey="True" Label="Work Item Id" />
        <Param Name="ContineOn404Error" Label="Continue processing on 404 error" Type="Property" Value="True" Hidden="False" />
		<Param Name="Operation" Value="replace" Options="replace;add;remove;copy;move;test;" Desc="Some operation requires you to supply 'add' rather than 'replace' (e.g. adding new tag)" />
      </Params>
    </EndPoint>


    <!-- Delete Work Item -->
    <EndPoint Name="delete_workitem"
              Label="Delete Work Item"
              Desc="Deletes an existing work item in the default project within the organization."
              Method="DELETE"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/workitems/[$Id$]"
              BatchSize="1"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/work-items/delete?view=azure-devops-rest-7.1">
      <Params>
		<Param Name="Project" Template="ProjectParam" />
        <Param Name="Id" IsKey="True" Label="Work Item Id" />
        <Param Name="ContineOn404Error" Label="Continue processing on 404 error" Type="Property" Value="True" Hidden="False" />
      </Params>
      <InputColumns>
        <Column Name="Id" MapToParam="True" Key="True" />
      </InputColumns>
      <OutputColumns>
		<Column Name="id" Label="Id" DataType="DT_I4" Key="True" />
		<Column Name="project" Label="project" />
		<Column Name="name" Label="Title"/>
		<Column Name="type" Label="WorkItemType"/>
        <Column Name="deletedBy" Label="DeletedBy"/>
		<Column Name="deletedDate" Label="DeletedDate"/>
		
      </OutputColumns>
    </EndPoint>


    <!-- Get List of Projects -->
    <EndPoint Name="get_queries"
              Label="Get List of Queries"
              Desc="Gets a list of predefined queries within the organization."
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/_apis/wit/queries?api-version=7.1-preview.2"
              ContentType="application/json"
              Filter="$..children[*]"
              Template="QueryOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/queries/list?view=azure-devops-rest-7.1">
      <Params>
		<Param Name="Project" Template="ProjectParam" />
		<Param Name="Depth" Key="$depth" Label="Max Depth (items inside nested folders)" Type="Query" Value="2" Hidden="True" />
		
      </Params>			  
    </EndPoint>


    <!-- Get List of Projects -->
    <EndPoint Name="get_projects"
              Label="Get List of Projects"
              Desc="Gets a list of projects within the organization."
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/_apis/projects"
              ContentType="application/json"
              Filter="$.value[*]"
              Template="ProjectOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/core/projects/list?view=azure-devops-rest-7.0">
    </EndPoint>
    
    
    <!-- Get Project Details -->
    <EndPoint Name="get_project"
              Label="Get Project Details"
              Desc="Gets the details of the specified project within the organization by its project Id."
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/_apis/projects/[$Id$]"
              ContentType="application/json"
              Template="ProjectOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/core/projects/get?view=azure-devops-rest-7.0">
      <Params>
        <Param Name="Id" IsKey="True" Required="True" Type="Placeholder" Desc="" OptionsEndPoint="get_projects" OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="name" />
      </Params>
      <InputColumns>
        <Column Name="Id" Key="True" Label="Project Id" MapToParam="True" Desc="" DataType="DT_WSTR" Length="300" />
      </InputColumns>
    </EndPoint>
    
    
    <!-- Create Project -->
    <EndPoint Name="add_project"
              Label="Create Project"
              Desc="Create a new project within the organization."
              Method="POST"
              Url="https://dev.azure.com/[$Organization$]/_apis/projects"
              ContentType="application/json"
              JsonRowFormat="Multicontent"
              Body="{$rows$}"
              Template="ProjectPostParamsAndInputColumns,OperationReferenceOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/core/projects/create?view=azure-devops-rest-7.0">
      <LayoutMap>
        <![CDATA[<?xml version="1.0" encoding="utf-8"?>
				<settings ver="3" singledataset="True">
					<dataset id="root" main="True" readfrominput="True"></dataset>
					<map src="Name" name="name" />
					<map src="Abbreviation" name="abbreviation" />
					<map src="Description" name="description" />            
          <map name="capabilities">
            <map name="versioncontrol">
              <map src="SourceControlType" name="sourceControlType" />
            </map>
            <map name="processTemplate">
              <map src="TemplateTypeId" name="templateTypeId" />
            </map>
          </map>
					<map src="Visibility" name="visibility" />
				</settings>]]>
      </LayoutMap>
    </EndPoint>


    <!-- Update Project -->
    <EndPoint Name="update_project"
              Label="Update Project"
              Desc="Update an existing project within the organization."
              Method="PATCH"
              Url="https://dev.azure.com/[$Organization$]/_apis/projects/[$Id$]"
              ContentType="application/json"
              JsonRowFormat="Multicontent"
              Body="{$rows$}"
              Template="ProjectPutParamsAndInputColumns,OperationReferenceOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/core/projects/update?view=azure-devops-rest-7.0">
      <Params>
        <Param Name="Id" IsKey="True" Label="Project Id" Type="Placeholder" Desc="The ID of the project to update." OptionsEndPoint="get_projects" OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="name" Required="True" />
      </Params>
      <InputColumns>
        <Column Name="Id" MapToParam="True" Key="True" DataType="DT_WSTR" Length="200" ExcludeFromRowMap="True" Desc="The ID of the project to update." Required="True" />
      </InputColumns>
    </EndPoint>


    <!-- Delete Project -->
    <EndPoint Name="delete_project"
              Label="Delete Project"
              Desc="Delete an existing project within the organization."
              Method="DELETE"
              Url="https://dev.azure.com/[$Organization$]/_apis/projects/[$Id$]"
              ContentType="application/json"
              Template="OperationReferenceOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/core/projects/delete?view=azure-devops-rest-7.0">
      <Params>
        <Param Name="Id" IsKey="True" Label="Project Id" Type="Placeholder" Desc="The ID of the project to delete." OptionsEndPoint="get_projects" OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="name" Required="True" />
      </Params>
      <InputColumns>
        <Column Name="Id" MapToParam="True" Key="True" DataType="DT_WSTR" Length="200" ExcludeFromRowMap="True" Desc="The ID of the project to delete." Required="True" />
      </InputColumns>
    </EndPoint>


    <!-- Get List of Teams -->
    <EndPoint Name="get_teams"
              Label="Get List of Teams"
              Desc="Gets a list of teams in the default project within the organization."
              Method="GET"
              Filter="$.value[*]"
              Url="https://dev.azure.com/[$Organization$]/_apis/projects/[$Project$]/teams"
              ContentType="application/json"
              Template="TeamOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/core/teams/get-teams?view=azure-devops-rest-7.1">
      <Params>
        <Param Name="Project" IsKey="True" Template="ProjectParam"  />
      </Params>    
	</EndPoint>
    
    
    <!-- Get Team Details -->
    <EndPoint Name="get_team"
              Label="Get Team Details"
              Desc="Gets the details of the specified team in the default project within the organization by its team Id or team name."
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/_apis/projects/[$Project$]/teams/[$Id$]"
              ContentType="application/json"
              Template="TeamOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/core/teams/get?view=azure-devops-rest-7.1">
      <Params>
        <!-- We had to override the API version for this endpoint since 7.0 (that is not preview) does not yet work with this endpoint -->
        <Param Name="ApiVersion" Key="api-version" Label="API Version" Value="7.0-preview" Options="7.0-preview;7.1-preview.2;" Type="Query" Required="True" Hidden="True" />
        <Param Name="Id" Label="Team Id or Name" IsKey="True" OptionsEndPoint="get_teams" OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="name" Required="True" />
        <Param Name="Project" Template="ProjectParam" />
	  </Params>
      <InputColumns>
        <Column Name="Id" Key="True" MapToParam="True" DataType="DT_WSTR" Length="300" />
      </InputColumns>
    </EndPoint>


    <!-- Create Team -->
    <EndPoint Name="add_team"
              Label="Create Team"
              Desc="Creates a new team in the default project within the organization."
              Method="POST"
              Body="{$rows$}"
              JsonRowFormat="Multicontent"
              Url="https://dev.azure.com/[$Organization$]/_apis/projects/[$Project$]/teams"
              ContentType="application/json"
              Template="TeamPostParamsAndInputColumns,OperationReferenceOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/core/teams/create?view=azure-devops-rest-7.0">
    </EndPoint>


    <!-- Update Team -->
    <EndPoint Name="update_team"
              Label="Update Team"
              Desc="Updates the details of the specified team in the default project within the organization by its team Id."
              Method="PATCH"
              Url="https://dev.azure.com/[$Organization$]/_apis/projects/[$Project$]/teams/[$Id$]"
              ContentType="application/json"
              JsonRowFormat="Multicontent"
              Body="{$rows$}"
              Template="TeamPutParamsAndInputColumns,TeamOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/core/teams/update?view=azure-devops-rest-7.0">
        <LayoutMap>
          <![CDATA[<?xml version="1.0" encoding="utf-8"?>
				  <settings ver="3" singledataset="True">
					  <dataset id="root" main="True" readfrominput="True"></dataset>
					  <map src="Name" name="name" />
					  <map src="Description" name="description" />            
				  </settings>]]>
        </LayoutMap>
        <Params>
          <!-- We had to override the API version for this endpoint since 7.0 (that is not preview) does not yet work with this endpoint -->
          <Param Name="ApiVersion" Key="api-version" Label="API Version" Value="7.0-preview" Options="7.0-preview;7.1-preview.2;" Type="Query" Required="True" Hidden="True" />
          <Param Name="Id" Label="Team Id" IsKey="True" OptionsEndPoint="get_teams" OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="name" Required="True" />
        </Params>
        <InputColumns>
          <Column Name="Id" Key="True" MapToParam="True" DataType="DT_WSTR" Length="300" />
        </InputColumns>
    </EndPoint>

    
    <!-- Delete Team -->
    <EndPoint Name="delete_team"
              Label="Delete Team"
              Desc="Deletes the specified team in the default project within the organization by its team Id."
              Method="GET"
              Url="https://dev.azure.com/[$Organization$]/_apis/projects"
              ContentType="application/json"
              Filter="$.value[*]"
              Template="TeamOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/core/teams/delete?view=azure-devops-rest-7.0">
        <Params>
          <!-- We had to override the API version for this endpoint since 7.0 (that is not preview) does not yet work with this endpoint -->
          <Param Name="ApiVersion" Key="api-version" Label="API Version" Value="7.0-preview" Options="7.0-preview;7.1-preview.2;" Type="Query" Required="True" Hidden="True" />
          <Param Name="Id" IsKey="True" Label="Team Id" Desc="The ID of the team to delete." OptionsEndPoint="get_teams" OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="name" Required="True" />
        </Params>
        <InputColumns>
          <Column Name="Id" MapToParam="True" Key="True" DataType="DT_WSTR" Length="200" ExcludeFromRowMap="True" Desc="The ID of the team to delete." Required="True" />
        </InputColumns>
      <EndPoint Name="delete_team_for_projects"
                Method="DELETE"
                Url="https://dev.azure.com/[$Organization$]/_apis/projects/[$parent.id$]/teams/[$Id$]"
                ContentType="application/json"
                Template="OperationReferenceOutputColumns">
      </EndPoint>
    </EndPoint>
    
    
    <!-- Get List of Audit Records -->
    <EndPoint_unused Name="get_audit_records"
              Label="Get List of Audit Records"
              Desc="Gets the audit records for the organization."
              Method="GET"
              Url="https://auditservice.dev.azure.com/[$Organization$]/_apis/audit/auditlog"
              ContentType="application/json"
              Filter="$.value.decoratedAuditLogEntries[*]"
              Template="AuditRecordOutputColumns"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/audit/audit-log/query?view=azure-devops-rest-7.0">
      <Params>
        <Param Name="startTime" Label="Start Time" Desc="Start time of download window." Type="Query" Template="DateSelectionParam" />
        <Param Name="endTime" Label="End Time" Desc="End time of download window." Type="Query" Template="DateSelectionParam" />
        <Param Name="skipAggregation" Label="Skip Aggregation" Desc="Skips aggregating events and leaves them as individual entries instead. By default events are aggregated. Event types that are aggregated: AuditLog.AccessLog." Value="false" Options="true;false" Type="Query" />
        <Param Name="batchSize" Label="Batch Size" Desc="Max number of results to return." Value="1000" Type="Query" Hidden="True" />
      </Params>
    </EndPoint_unused>
    

    <!-- Search for Work Items by Text -->
    <EndPoint Name="search_workitems_by_text"
            Label="Search for Work Items by Text"
            Desc="Search for specific text within work items in the default project of the organization."
            Method="POST"
            Url="https://almsearch.dev.azure.com/[$Organization$]/[$Project$]/_apis/search/workitemsearchresults"
            DotAsPath="True"
            JsonRowFormat="Multicontent"
            ContentType="application/json"
            Filter="$.results[*]"
            Template="TextSearchWorkItemOutputColumns"
            HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/search/work-item-search-results/fetch-work-item-search-results?view=azure-devops-rest-7.0">
      <Params>
        <Param Name="SearchText" Label="Text to Search For" Type="Placeholder" Required="True" Function="JSONENC"/>
      </Params>
      <Body>
        <![CDATA[{
  "searchText": "[$SearchText$]",
  "$top": 1000
}]]>
      </Body>

    </EndPoint>
	
	
 
    <EndPoint Name="get_team_members"
              Label="Get Team Members"
              Desc="Lists all members part of a specified Team in the project within the organization (by team Id or team name)."
              Method="GET"
			                                              
              Url="https://dev.azure.com/[$Organization$]/_apis/projects/[$Project$]/teams/[$Team$]/members"
              ContentType="application/json"
              Template="TeamMemberOutputColumns"
			  Filter="$.value[*]"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/core/teams/get-team-members-with-extended-properties?view=azure-devops-rest-6.0">
      <Params>
        <!-- We had to override the API version for this endpoint since 7.0 (that is not preview) does not yet work with this endpoint -->
        <Param Name="ApiVersion" Key="api-version" Label="API Version" Value="7.0-preview" Options="7.0-preview;7.1-preview.2;" Type="Query" Required="True" Hidden="True" />
		<Param Name="Project" Template="ProjectParam" />
		<Param Name="Team" Template="TeamParam" />
	  </Params>

    </EndPoint>
	
	
	<EndPoint Name="get_team_iterations"
              Label="Get Team Iterations"
              Desc="Lists Team iterations for a specified project / team."
              Method="GET"
			  Filter="$.value[*]"
			  Template="IterationOutputColumns"                                    
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/[$Team$]/_apis/work/teamsettings/iterations"
              ContentType="application/json"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/work/iterations/list?view=azure-devops-rest-6.0">
      <Params>
        <!-- We had to override the API version for this endpoint since 7.0 (that is not preview) does not yet work with this endpoint -->
        <Param Name="ApiVersion" Key="api-version" Label="API Version" Value="7.0-preview" Options="7.0-preview;7.1-preview.2;" Type="Query" Required="True" Hidden="True" />
		<Param Name="Project" Template="ProjectParam" Required="True"/>
		<Param Name="Team" Template="TeamParam" Required="True"/>	
	  </Params>
    </EndPoint>
	
    <EndPoint Name="get_team_iteration_capacities"
              Label="Get Team Iteration Capacities"
              Desc="Lists capacity for all team members in a specified project / team / iteration."
              Method="GET"
			  IncludeParentColumns="True"
			  Filter="$.teamMembers[*].activities[*]"                                            
              Url="https://dev.azure.com/[$Organization$]/[$Project$]/[$Team$]/_apis/work/teamsettings/iterations/[$Iteration$]/capacities"
              ContentType="application/json"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/azure/devops/work/capacities/replace-capacities-with-identity-ref?view=azure-devops-rest-6.0">
      <Params>
        <!-- We had to override the API version for this endpoint since 7.0 (that is not preview) does not yet work with this endpoint -->
		<Param Name="Project" Template="ProjectParam" Required="True"/>
		<Param Name="Team" Template="TeamParam" Required="True"/>		
		<Param Name="Iteration" Template="IterationParam" Required="True" />        
		 <Param Name="ApiVersion" Key="api-version" Label="API Version" Value="7.0-preview" Options="7.0-preview;7.1-preview.2;" Type="Query" Required="True" Hidden="True" />
	  </Params>
		<OutputColumns>
			<Column Name="P_teamMembers_teamMember_displayName" DataType="DT_WSTR" Label="TeamMemberDisplayName" Length="500" />
			<Column Name="P_teamMembers_teamMember_uniqueName" DataType="DT_WSTR" Label="TeamMemberUniqueName" Length="500" />
			<Column Name="P_totalCapacityPerDay" DataType="DT_R4" Label="TeamCapacityPerDay" />
			<Column Name="capacityPerDay" DataType="DT_R4" Label="MemberCapacityPerDay" />			
			<Column Name="P_totalDaysOff" DataType="DT_R4" Label="TotalDaysOff" />			
			<Column Name="P_teamMembers_teamMember_url" DataType="DT_WSTR" Label="TeamMemberUrl" Length="1350" />
			<Column Name="P_teamMembers_teamMember__links_avatar_href" DataType="DT_WSTR" Label="TeamMemberLinksAvatarHref" Length="1160" />
			<Column Name="P_teamMembers_teamMember_id" DataType="DT_WSTR" Label="TeamMemberId" Length="500" />
			<Column Name="P_teamMembers_teamMember_imageUrl" DataType="DT_WSTR" Label="TeamMemberImageUrl" Length="1160" />
			<Column Name="P_teamMembers_teamMember_descriptor" DataType="DT_WSTR" Label="TeamMemberDescriptor" Length="1000" />
			<Column Name="P_teamMembers_url" DataType="DT_WSTR" Label="TeamMembersUrl" Length="4000" />
			<Column Name="name" DataType="DT_WSTR" Label="Name" Length="500" />
		</OutputColumns>	  
    </EndPoint>

    
  </EndPoints>


  <Tables>
    <Table Name="WorkItems"
      SelectEndPoint="query_workitems"
      LookupEndPoint="get_workitems_by_ids"
      InsertEndPoint="add_workitem"
      UpdateEndPoint="update_workitem"
      DeleteEndPoint="delete_workitem"
    >
        <Params>
          <Param Name="Query" Label="Wiql Query" Value="SELECT * FROM WorkItems Where [System.TeamProject]='{$Project$}' ORDER BY [System.Id] DESC" 				  
                 Desc="The text of the WIQL query." Required="True" Functions="JSONENC" />
        </Params>
    </Table>
    <Table Name="WorkItemComments"
      SelectEndPoint="query_workitem_comments"
      LookupEndPoint="get_workitem_comments,get_workitem_comment"
	  InsertEndPoint="add_workitem_comment"
	  UpdateEndPoint="update_workitem_comment"
	  DeleteEndPoint="delete_workitem_comment"
    >
        <Params>
          <Param Name="Query" Label="Wiql Query" Value="SELECT * FROM WorkItems Where [System.TeamProject]='{$Project$}' ORDER BY [System.Id] DESC" 				  
                 Desc="The text of the WIQL query." Required="True" Functions="JSONENC" />
        </Params>
    </Table>
	
    <Table Name="Projects"
      SelectEndPoint="get_projects"
      LookupEndPoint="get_project"
      InsertEndPoint="add_project"
      UpdateEndPoint="update_project"
      DeleteEndPoint="delete_project"
    />
    <Table Name="Teams"
      SelectEndPoint="get_teams"
      LookupEndPoint="get_team"
      InsertEndPoint="add_team"
      UpdateEndPoint="update_team"
      DeleteEndPoint="delete_team"
    />
 
    <TableXX Name="AuditRecords"
      SelectEndPoint="get_audit_records"
    />


  </Tables>


  <Examples>
    <Example Group="ODBC" Label="Get work items for the default project(specified by connection settings).">
      <Code>
        <![CDATA[SELECT * FROM WorkItems]]>
      </Code>
    </Example>
	
    <Example Group="ODBC" Label="Get work items for the specific project.">
      <Code>
        <![CDATA[SELECT * FROM WorkItems WITH (Project='ProductTesting')]]>
      </Code>
    </Example>	
	
    <Example Group="ODBC" Label="Get a specific work item by its Id.">
      <Code>
        <![CDATA[SELECT * FROM WorkItems WHERE Id=1001]]>
      </Code>
    </Example>
  
    <Example Group="ODBC" Label="Get multiple work items by their Ids (Comma-separated)">
      <Code>
        <![CDATA[SELECT * FROM get_workitems_by_ids WITH (ids='6444,5578,9467')]]>
      </Code>
    </Example>
    

    <Example Group="ODBC" Label="Search for work items by text contained within the work item.">
      <Code>
        <![CDATA[SELECT * FROM search_workitems_by_text WITH (SearchText='Text that I want to search for')]]>
      </Code>
    </Example>
	
    <Example Group="ODBC" Label="Get a specific work item by its Id, but halt the process if a 404 error is encountered.">
      <Code>
        <![CDATA[SELECT * FROM WorkItems WHERE Id='8563' WITH (ContineOn404Error='False')]]>
      </Code>
    </Example>
  
    <Example Group="ODBC" Label="Create a query to get work items by the Id of the work items in the default project for the organization." Desc="To learn more about Query syntax refer to this link https://learn.microsoft.com/en-us/azure/devops/boards/queries/wiql-syntax?view=azure-devops and this link https://learn.microsoft.com/en-us/azure/devops/boards/queries/query-operators-variables?view=azure-devops">
      <Code>
        <![CDATA[
SELECT * FROM WorkItems WITH (Query='SELECT * FROM WorkItems 
WHERE [System.Id] > 2000 AND [System.Id] < 7050 
	AND [System.TeamProject]=''ProductTesting''
	AND [System.ChangedDate] < @Today
	AND [System.CreatedDate] > @StartOfYear
	AND [System.WorkItemType]=''Task'' 
	AND [System.State]=''Resolved'' 
	AND [Microsoft.VSTS.Common.Priority] >= 1
	ORDER BY [System.ChangedDate] DESC
	')]]>
      </Code>
    </Example>
  
    <Example Group="ODBC" Label="Create a query to get work items by the Id of the work items in the specified project for the organization.">
      <Code>
        <![CDATA[SELECT * FROM WorkItems WITH (Project='PosProject', Query='SELECT * FROM WorkItems WHERE [System.Id] = 2819')]]>
      </Code>
    </Example>
  
    <Example Group="ODBC" Label="Create a query to get work items by the types of work items in the default project for the organization.">
      <Code>
        <![CDATA[SELECT * FROM WorkItems WITH (Query='SELECT * FROM WorkItems WHERE [System.WorkItemType] = ''Task''')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Create a new work item in the default project for the organization.">
      <Code>
<![CDATA[INSERT INTO WorkItems (WorkItemType, Title, [CustomFieldText], [CustomFieldDate], [CustomFieldNumber])
VALUES ('task', 'Fix Issues in System', 'My Custom Text', '2021-01-01T23:59:59.123', 1000)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="Create a new work item in a specific project.">
      <Code>
<![CDATA[INSERT INTO WorkItems (WorkItemType, Title, [CustomFieldText], [CustomFieldDate], [CustomFieldNumber])
VALUES ('task', 'Fix Issues in System', 'My Custom Text', '2021-01-01T23:59:59.123', 1000)
WITH(Project='MyProject')
]]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="Create a new work with many fields in a specific project.">
      <Code>
<![CDATA[
INSERT INTO WorkItems  (   
      [WorkItemType]   
    , [Title] 
	, [Description] 
	, [Tags]
	, [AreaPath]  
	, [IterationPath] 
	, [AssignedTo] 
	, [Priority]
    , [Triage] 	
  --, [StackRank]  
	, [Blocked]  
	, [TaskType] 
	, [RequiresReview]
	, [RequiresTest] 
	, [IntegrationBuild] 
	, [FoundIn] 
	, [OriginalEstimate] 
	, [RemainingWork] 
	, [CompletedWork] 
	, [Size] 
	, [Effort] 
	, [TargetDate] 
	, [StartDate] 
	, [FinishDate] 
	, [DueDate] 
	, [StoryPoints] 
  --, [Discipline] 
	, [SystemInfo] 
	, [Steps] 
	, [ReproSteps] 
	--, [CustomFieldText]  --custom field prefix with CustomYOUR_FIELD_NAME_WITHOUT_SPACE_OR_DASH_OR_DOT
	--, [CustomFieldDate] 
	--, [CustomFieldNumber] 
	--, [CustomFieldDecimal] 
	--, [CustomFieldPickListString] 
	--, [CustomFieldPickListNum] 
)
VALUES (
      'Bug' -- Task, User Story -- WorkItemType
    , 'My Task Title - Created on <<FUN_NOW>>'  --Title
    , 'Some Description - Created on <<FUN_NOW>>' --Description
    , 'odata; api' --Tags
    , 'ProductTesting\SSISPowerPack' --AreaPath
    , 'ProductTesting\2021.6' --IterationPath
    , 'build@mycompany.com' --AssignedTo
    , 1 --Priority
    , 'Pending' --Triage
  --, ??? --[StackRank]
	, 'No' --Blocked
	, 'Planned' --TaskType
	, 'No' --RequiresReview
	, 'No' --RequiresTest
	, '101.1.2.3' --IntegrationBuild
	, '100.1.2.3' --FoundIn
	, 9999.111 --OriginalEstimate
	, 9999.222 --RemainingWork
	, 9999.333 --CompletedWork
	, 9999.444 --Size
	, 9999.555 --Effort
	, '2021-01-31' --TargetDate
	, '2022-01-31' --StartDate
	, '2023-01-31' --FinishDate
	, '2024-01-31' --DueDate
	, 100.5 --StoryPoints
  --, 'Some Discipline' --Discipline
	, 'Windows 10' --SystemInfo
	, 'Here are steps' --Steps
	, 'Here are steps to reproduce' --ReproSteps
	--, 'abcd'  --CustomFieldText
	--, '2021-01-31' --CustomFieldDate
	--, 9999  --CustomFieldNumber 
	--, 9999.123 --CustomFieldDecimal
	--, 'BBB' --CustomFieldPickListString
	--, '2' --CustomFieldPickListNum
)
WITH(Project='ProductTesting')
]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Update a specific work item by its Id.">
      <Code>
        <![CDATA[UPDATE WorkItems SET
Title = 'Renamed Work Item Title',
CustomMyField = 'New Custom Text'
WHERE Id = 7455]]>
      </Code>
    </Example>
	
    <Example Group="ODBC" Label="Update a work item by its Id (many columns).">
      <Code>
        <![CDATA[UPDATE WorkItems
SET   [Title] = 'Update-QA Task <<FUN_NOW>>'
	, [Description] = 'Updated desc <<FUN_NOW>>'
  --, [WorkItemType]='Bug' -- Task
	, [State] = 'Active'
	, [Tags] = 'odata; api'
	, [Revision] = 1
	, [AreaPath] = 'ProductTesting\SSISPowerPack'
	, [TeamProject] = 'ProductTesting'
	, [IterationPath] = 'ProductTesting\2021.6'
	, [Reason] = 'Reactivated'
	, [AssignedTo] = 'build@mycompany.com'
	, [Priority] = 1
  --, [Triage] = 'Pending'	
  --, [StackRank] = ???
	, [Blocked] = 'No'
	, [TaskType] = 'Planned'
	, [RequiresReview] = 'No'
	, [RequiresTest] = 'No'
	, [ActivatedDate] = '2021-01-31'
  --, [ResolvedReason] = 'Complete and Requires Review/Test'
	, [IntegrationBuild] = '101.1.2.3'
	, [FoundIn] = '100.1.2.3'
	, [OriginalEstimate] = 9999.123
	, [RemainingWork] = 9999.123
	, [CompletedWork] = 9999.123
	, [Size] = 9999.123
	, [Effort] = 9999.123
	, [TargetDate] = '2021-01-31'
	, [StartDate] = '2021-01-31'
	, [FinishDate] = '2021-01-31'
	, [DueDate] = '2021-01-31'
	, [StoryPoints] = 100.5
--	, [Discipline] = 'abcd'
	, [SystemInfo] = 'abcd'
	, [Steps] = 'abcd'
	, [ReproSteps] = 'abcd'
--	, [CustomFieldText] = 'abcd' 
--	, [CustomFieldDate] = '2021-01-31' 
--	, [CustomFieldNumber] = 9999  
--	, [CustomFieldDecimal] = 9999.123 
--	, [CustomFieldPickListString] = 'BBB' 
--	, [CustomFieldPickListNum] = '2' 
WHERE [Id] = 6455
]]>
      </Code>
    </Example>	
    <Example Group="ODBC" Label="Add Tags to an exising workitem.">
      <Code>
        <![CDATA[UPDATE WorkItems
SET   Tags = 'newtag1; newtag2'
WHERE Id = 6455
WITH(
	   Project='ProductTesting'
	  ,Operation='add'
)]]>
      </Code>
    </Example>
	
    <Example Group="ODBC" Label="Delete a specific work item by its Id.">
      <Code>
        <![CDATA[DELETE FROM WorkItems WHERE Id = 7455]]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="Delete work items match with Wiql Query.">
      <Code>
        <![CDATA[DELETE FROM WorkItems
Where 1=1 
WITH(Query='SELECT * FROM WorkItems Where [System.TeamProject]=''MyProject'' AND ([System.Id]=6469 OR [System.Id]=6468) ')]]>
      </Code>
    </Example>
	
    <Example Group="ODBC" Label="Update work items match with Wiql Query.">
      <Code>
        <![CDATA[UPDATE WorkItems
Set Title='New Title - Updated on <<FUN_NOW>>'
Where 1=1 
WITH(Query='SELECT * FROM WorkItems Where [System.TeamProject]=''MyProject'' AND ([System.Id]=6469 OR [System.Id]=6468) ')]]>
      </Code>
    </Example>	

    <Example Group="ODBC" Label="Get all comments for all work items">
      <Code>
        <![CDATA[SELECT * FROM WorkItemComments]]>
      </Code>
    </Example>
	
    <Example Group="ODBC" Label="Get all comments for a work item">
      <Code>
        <![CDATA[SELECT * FROM WorkItemComments 
WHERE WorkItemId=6455]]>
      </Code>
    </Example>
	
    <Example Group="ODBC" Label="Get a comment by Id for a work item">
      <Code>
        <![CDATA[SELECT * FROM WorkItemComments 
WHERE WorkItemId=6455 and Id=5283490]]>
      </Code>
    </Example>	
	
	
    <Example Group="ODBC" Label="Query work items using Wiql." Desc="This example shows how to use WIQL language to query Azure DevOps WorkItems. To learn more about WIQL Syntax you can refer this link https://learn.microsoft.com/en-us/azure/devops/boards/queries/wiql-syntax?view=azure-devops">
      <Code>
        <![CDATA[SELECT 
	  Id
	, Title
	, Description
	, CreatedDate
	, Url
FROM WorkItems 
--WHERE Id=5283490 -- get just one comment for specific WorkItem Id
WITH(Query='SELECT * FROM WorkItems WHERE [System.TeamProject]=''ProductTesting'' and [System.Id]=6455 ORDER BY [System.Id] DESC')]]>
      </Code>
    </Example>
	
    <Example Group="ODBC" Label="Query work items using Wiql (with #DirectSQL Tag)." Desc="This example shows how to use WIQL language to query Azure DevOps WorkItems using #DirectSQL pre processor to invoke server side query engine. This one is same as previous example except simplified SQL. To learn more about WIQL Syntax you can refer this link https://learn.microsoft.com/en-us/azure/devops/boards/queries/wiql-syntax?view=azure-devops">
      <Code>
        <![CDATA[#DirectSQL SELECT * FROM WorkItems WHERE [System.TeamProject]=''ProductTesting'' and [System.Id]=6455 ORDER BY [System.Id] DESC')]]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="Query Sprint Hours by Team Member - Esimated vs Actual Completed" Desc="This query shows how to query total time spent by team members during a specific Sprint (i.e. Iteration Path). This query only works if your team is updating Original Estimate and Completed Hours on work item after they are done with the task.">
      <Code>
        <![CDATA[SELECT 
	  IterationPath as Sprint
	, AssignedToUniqueName as AssignedTo
	, SUM(OriginalEstimate) as OriginalHours_Total
	, SUM(RemainingWork) as RemainingWork_Total
	, SUM(CompletedWork) as CompletedHours_Total
FROM WorkItems
GROUP BY IterationPath,AssignedToUniqueName
WITH(
	  Project='ProductTesting'
	  
	  --//On Preview UI Change [Max Rows] to use more sample rows - else it will use only 100 rows
	  ,Query='SELECT * FROM WorkItems WHERE [System.IterationPath] UNDER ''ProductTesting\Sprint 1'' and State IN(''Resolved'', ''Closed'')'
	  
	  --Use below to query all sprints for this Product
	  --,Query='SELECT * FROM WorkItems WHERE [System.IterationPath] UNDER ''ProductTesting\'' and State IN(''Resolved'', ''Closed'')'
)]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Read more than 20000 work items (UNION ALL)." Desc="By default Azure DevOps API returns max 20000 items. If you want more than 20000 items then you can try below technique. Run enire query at once. Basically it creates many temp table each consisting 20000 rows each and then in final query we do UNION ALL">
      <Code>
        <![CDATA[ SELECT * INTO #t1 FROM WorkItems WITH(Project='ProductTesting', Query='SELECT * FROM WorkItems WHERE [System.Id]>=1 and [System.Id]<20000');
SELECT * INTO #t2 FROM WorkItems WITH(Project='ProductTesting', Query='SELECT * FROM WorkItems WHERE [System.Id]>=20000 and [System.Id]<40000');
SELECT * INTO #t3 FROM WorkItems WITH(Project='ProductTesting', Query='SELECT * FROM WorkItems WHERE [System.Id]>=40000 and [System.Id]<60000');
--//....
--//add more temp tables above and update UNION ALL too

SELECT * FROM #t1 
UNION ALL 
SELECT * FROM #t2
UNION ALL 
SELECT * FROM #t3
;]]>
      </Code>
    </Example>
    
    <Example Group="ODBC" Label="Query work item comments using Wiql.">
      <Code>
        <![CDATA[SELECT 
	  Id
	, WorkItemId
	, Text
	, RenderedText
	, Format
	, CreatedDate
	, CreatedByUniqueName
	, CreatedById
	, CreatedByDisplayName
	, ModifiedDate
	, ModifiedByUniqueName
	, ModifiedById
	, ModifiedByDisplayName
	, Url
FROM WorkItemComments 
--WHERE Id=5283490 -- get just one comment for specific WorkItem Id
WITH(Query='SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject]=''ProductTesting'' and [System.Id]=6455 ORDER BY [System.Id] DESC')]]>
      </Code>
    </Example>
	
    <Example Group="ODBC" Label="Create work item comment">
      <Code>
        <![CDATA[INSERT INTO WorkItemComments(WorkItemId, Text)
VALUES(6455, 'Adding <b>html comment</b> - created on <<FUN_NOW>>')
WITH(Project='ProductTesting')]]>
      </Code>
    </Example>	
	
    <Example Group="ODBC" Label="Update work item comment">
      <Code>
        <![CDATA[UPDATE WorkItemComments
SET Text='Updating <b>html comment</b> - updated on <<FUN_NOW>>'
Where WorkItemId=6455 and Id=5284411
WITH(Project='ProductTesting')]]>
      </Code>
    </Example>		
    <Example Group="ODBC" Label="Delete a specific work item by its Id.">
      <Code>
        <![CDATA[DELETE FROM WorkItemComments WHERE WorkItemId=6455 and Id=5284411]]>
      </Code>
    </Example>
	


    <Example Group="ODBC" Label="Upload file (attachment).">
      <Code>
        <![CDATA[SELECT *
FROM generic_request
WITH(
	  Url='YOUR_ORGANIZATION/YOUR_PROJECT/_apis/wit/attachments?api-version=7.0',
	  RequestMethod='POST',
	  RequestContentTypeCode='ApplicationOctetStream', --//Binary upload
	  --Headers='Content-Type: application/octet-stream', --//same as above
	  Body='@c:\temp\screeenshot-1.png',
	  IsMultiPart=1,
	  Meta='id:string(100);url:string(500)' --response columns you like to display
)]]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="Add link to an exising WorkItem (add attachment as reference link)." Desc="If you know the attachment file URL you can use that in below query and attach a link to an exising WorkItem">
      <Code>
        <![CDATA[SELECT *
FROM generic_request
WITH(
	  Url='YOUR_ORGANIZATION/YOUR_PROJECT/_apis/wit/workitems/WORK_ITEM_NUMBER?api-version=7.0',
	  RequestMethod='PATCH',
	  Headers='Content-Type: application/json-patch+json',
	  Meta='id:int; fields.System.Title:string; fields.System.State:string; fields.System.WorkItemType:string; relations:string(4000)',
	  Body='
[
  {
    "op": "add",
    "path": "/fields/System.History",
    "value": "Adding the necessary spec"
  },
  {
    "op": "add",
    "path": "/relations/-",
    "value": {
      "rel": "AttachedFile",
      "url": "https://dev.azure.com/YOUR_ORGANIZATION/YOUR_PROJECT/_apis/wit/attachments/ATTACHMENT_ID?fileName=Screenshot.png",
      "attributes": {
        "comment": "Error screenshot"
      }
    }
  }
]
'
)]]>
      </Code>
    </Example>



    <Example Group="ODBC" Default="True" Label="Get a list of projects associated with your Azure DevOps organization.">
      <Code>
        <![CDATA[SELECT * FROM Projects]]>
      </Code>
    </Example>
	

    <Example Group="ODBC" Label="Get specific columns from a list of projects associated with your Azure DevOps organization.">
      <Code>
        <![CDATA[SELECT Id, Name, Description, Url, State, Revision, Visibility, LastUpdateTime FROM Projects]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get details about a specific project by its Id.">
      <Code>
        <![CDATA[SELECT * FROM Projects WHERE Id='a80fb082-f7c4-4345-911d-1c05ad1b1fc9']]>
      </Code>
    </Example>


    <Example Group="ODBC" Label="Create a new project for your organization.">
      <Code>
        <![CDATA[INSERT INTO Projects (Name, Abbreviation, Description, SourceControlType, Visibility)
VALUES
('My New Project', 'MNP',
'The system we use for implementing point-of-service walk-in payment systems.',
'Git', 'private')]]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Update an existing project for your organization by referencing its Id.">
      <Code>
        <![CDATA[UPDATE Projects SET Description = 'The system we use for implementing point-of-service walk-in payment systems and phone payments.'
WHERE Id='1be9ccef-45d7-4574-af67-7dc6c0699b6a']]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Delete the specified project from your organization.">
      <Code>
        <![CDATA[DELETE FROM Projects WHERE Id='85kd1641-5555-49b1-9c5e-22c22a61d4c4']]>
      </Code>
    </Example>

    <Example Group="ODBC" Label="Get a list of all teams associated with your organization and default project.">
      <Code>
        <![CDATA[SELECT * FROM Teams]]>
      </Code>
    </Example>
  
    <Example Group="ODBC" Label="Get a list of all teams associated with your organization and the specified project Id.">
      <Code>
        <![CDATA[SELECT * FROM Teams WITH (Project='841e1641-325d-49b1-9c5e-22c11a61d4c4')]]>
      </Code>
    </Example>    

    <Example Group="ODBC" Label="Get specific columns of a list of all teams associated with your organization and default project.">
      <Code>
        <![CDATA[SELECT Id, Name, ProjectId, ProjectName, Url, Description, IdentityUrl FROM Teams]]>
      </Code>
    </Example>
  
    <Example Group="ODBC" Label="Get details about a specific team within your default project by its team Id.">
      <Code>
        <![CDATA[SELECT * FROM Teams WHERE Id='a0aa750f-1550-44af-a056-223696077df6']]>
      </Code>
    </Example>
  
    <Example Group="ODBC" Label="Create a team within the default project for the organization.">
      <Code>
        <![CDATA[INSERT INTO Teams (Name, Description) VALUES
('PosProject Team', 'This is the team who will be working on the Point of Service project.')]]>
      </Code>
    </Example>
  
    <Example Group="ODBC" Label="Create a team within the specified project for the organization.">
      <Code>
        <![CDATA[INSERT INTO Teams (Name, Description) VALUES
('PosProject Team', 'This is the team who will be working on the Point of Service project.')
WITH (ProjectId='85kd1641-5555-49b1-9c5e-22c22a61d4c4')]]>
      </Code>
    </Example>
  
    <Example Group="ODBC" Label="Update a team within the default project for the organization by its team Id.">
      <Code>
        <![CDATA[UPDATE Teams SET	Name = 'PointOfServiceProject Team' WHERE Id='8djr4d07-5555-5555-9552-0b6d7je99w7f']]>
      </Code>
    </Example>
  
    <Example Group="ODBC" Label="Delete the specified team by its Id.">
      <Code>
        <![CDATA[DELETE FROM Teams WHERE Id='8djr4d07-5555-5555-9552-0b6d7je99w7f']]>
      </Code>
    </Example>
  
    <Example Group="ODBC" Label="Get a list of audit records for the organization.">
      <Code>
        <![CDATA[SELECT * FROM AuditRecords]]>
      </Code>
    </Example>
  
    <Example Group="ODBC" Label="Get specific columns from a list of audit records for the organization.">
      <Code>
        <![CDATA[SELECT Id, CorrelationId, ActivityId, ActorCUID, ActorUserId, AuthenticationMechanism,
Timestamp, ScopeType, ScopeDisplayName, ScopeId, IpAddress, UserAgent, ActionId, ProjectId, ProjectName,
ProcessTemplate, ProjectVisibility, StartTime, EndTime, BatchSize, EventSummary, Details, Area, Category,
CategoryDisplayName, ActorDisplayName, ActorImageUrl FROM AuditRecords]]>
      </Code>
    </Example>
    <Example Group="ODBC" Label="Get a list of predefined queries" >
      <Code>
        <![CDATA[SELECT * FROM get_queries
WITH(
	Project='Odbc'
)		
]]>
      </Code>
    </Example>		
    <Example Group="ODBC" Label="Get workitems for a predefiended query id" Desc="If you created a shared query for team or your private query then you can get result of that by query id">
      <Code>
        <![CDATA[SELECT * FROM get_workitems_by_query_id
WITH(
	  Query='e5150e18-1323-485d-8937-6991bf09ab1c' --see get_queries endpoint
	, Project='Odbc'
)		
]]>
      </Code>
    </Example>	

  </Examples>


</ApiConfig>