Reference

Source code


<?xml version="1.0" encoding="utf-8"?>
<ApiConfig Name="Hubspot"
           Slug="hubspot-connector"
           Id="125a72f8-ba3c-430a-96a6-41b6507dfc43"
           EngineVersion="12"
           Version="6"
           Desc="Read and write HubSpot data effortlessly. Integrate, manage, and automate contacts, companies, deals, and tickets — almost no coding required."
           Logo="data:image/png;base64,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"
  >
  
  <VersionHistory>
	<Change Ver="6" Date="2025-06-21" Type="New">Added AuthorizeInFullBrowser=True to avoid login error in OAuth Popup</Change>	
    <Change Ver="5" Date="2024-12-10">Added images to authentication instructions</Change>
    <Change Date="2023-07-07">Added upload_file endpoint</Change>
    <Change Date="2022-12-08">Added error retry on status code 429</Change>
    <Change Date="2022-12-08">Added new endpoints for Quotes</Change>
    <Change Date="2022-12-08">Added search endpoints for companies, contacts, deals, tickets, products and lineitems. You can search by filter expressions</Change>
    <Change Date="2022-10-04">Added support for private app authentication (Using static AccessToken)</Change>
    <Change Date="2021-10-19">Added "Get Owners" endpoint.</Change>
    <Change Date="2021-09-30">Initial version</Change>
  </VersionHistory>
  <ServiceUrls>
    <ServiceUrl Name="Hubspot API" Url="https://api.hubapi.com" />
  </ServiceUrls>
  <Auths>
	<Auth Type="HTTP" Name="PrivateApp" Label="Private app (Static Access Token)"
           Desc="Private apps allow you to use HubSpot's APIs to access specific data from your HubSpot account.
                 You can authorize what each private app can request or change in your account, which will generate an access token that's unique to your app."
           TODO_Desc="Authenticate using static AccessToken (Private app) to access specific account. Follow 3 simple steps. 1) Create an App, 2) select permissions and 3) get Token and use on this UI. For more information on how to obtain AccessToken visit https://developers.hubspot.com/docs/api/private-apps"
           HelpLink="https://developers.hubspot.com/docs/api/private-apps"
           TestEndPoint="get_contact_properties" ConnStr="CredentialType=Token;">
      <Notes>
        <![CDATA[
<p>
    Follow these instructions to create a Private app in HubSpot and configure HubSpot authentication in SSIS package or ODBC data source:
<p/>

<ol> 
    <li>
        First of all, go to <a target="_blank" href="https://app.hubspot.com">HubSpot portal</a>.
    </li>
    <li>
        Then click <strong>Data Management</strong> option on the left 
        and then hit <strong>Integrations</strong> menu item:
        
        <img src="https://cdn.zappysys.com/api/images/authentication/hubspot/Private-App/go-to-integrations-in-hubspot.png"
             loading="lazy"
             decoding="async"
             class="img-thumbnail block"
             alt="Go to integrations in HubSpot"
             title="Going to integrations in HubSpot"
             width="1000"
             height="790" />
    </li>            
    <li>    
        Move on by clicking <strong>Private Apps</strong> menu item
        and then click <strong>Create a private app</strong> button to create one:
        
        <img src="https://cdn.zappysys.com/api/images/authentication/hubspot/Private-App/create-private-app-to-get-hubspot-data-via-rest-api.png"
             loading="lazy"
             decoding="async"
             class="img-thumbnail block"
             alt="Create private app to get HubSpot data via REST API"
             title="Creating private app to get HubSpot data via REST API"
             width="1000"
             height="700" />
    </li>
    <li>
        Then continue by following the instructions on <a target="_blank" href="https://developers.hubspot.com/beta-docs/guides/apps/private-apps/overview#create-a-private-app">HubSpot Docs</a>.
    </li>
    <li>
        Once you create an app, go to SSIS package or ODBC data source and in <strong>Private App</strong> authentication set these parameters:
        <ul>
            <li>For <strong>AccessToken</strong> field use <strong>Access token</strong> value from the Private app configuration in HubSpot.</li>
        </ul>
    </li>    
    <li>
        Done! Now you are ready to use HubSpot Connector!
    </li>    
</ol>
]]>
      </Notes>
      <Params>
        <Param Name="Password" Label="AccessToken" Type="Property" Secret="True" Required="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 Type="OAuth" Name="UserCreds" Label="Public app"
          Desc="In HubSpot, a public app is a type of integration that can be installed on customer accounts or listed on the App Marketplace.
                It requires authentication via OAuth. Once a user installs your app on their HubSpot account, you’ll be able to make API calls to that account using an OAuth access token."
          HelpLink="https://developers.hubspot.com/docs/api/creating-an-app"
          ConnStr="Provider=HubSpot;AuthorizeInFullBrowser=True;OAuthVersion=OAuth2;ScopeSeparator={space};GrantType=Default;Scope=[$Scope$];ScopeSeparator={space};ContentType=application/x-www-form-urlencoded;ClientId=[$ClientId$];ClientSecret=[$ClientSecret$];"
          TestEndpoint="get_contact_properties">
      <Notes>
        <![CDATA[
<p>
    Follow these instructions to create a Public app in HubSpot and configure HubSpot authentication in SSIS package or ODBC data source:
<p/>        
<ol>
    <li>
        First of all, if you don't have HubSpot Developer's account, <a href="https://app.hubspot.com/signup/developers">register one</a>.
    </li>
    <li>
        Go to <a href="https://app.hubspot.com">HubSpot</a> and select your Developer account.
    </li>
    <li>
        Click <strong>Apps</strong> on the left hand side and then click <strong>Create app</strong> button to create a Public app:
        
        <img src="https://cdn.zappysys.com/api/images/authentication/hubspot/OAuth/create-public-app-to-get-hubspot-data-via-rest-api.png"
             loading="lazy"
             decoding="async"
             class="img-thumbnail block"
             alt="Create public app to get HubSpot data via REST API"
             title="Creating public app to get HubSpot data via REST API"
             width="1000"
             height="350" />
    </li>    
    <li>
        Then continue by following the instructions in <a target="_blank" href="https://developers.hubspot.com/beta-docs/guides/apps/public-apps/overview#create-a-public-app">HubSpot Docs</a>.
        
        <div class="alert alert-info">
            <strong>NOTE:</strong>
            If you don't have a working Redirect URL, you can use <code>https://zappysys.com/oauth</code> (it's safe).
        </p>
    </li>
    <li>
        Once you create an app, go to SSIS package or ODBC data source 
        and in <strong>Public app</strong> authentication set these parameters 
        (use values from your Public app configuration in HubSpot):
                
        <ul>
            <li>For <strong>ClientId</strong> field use <strong>Client ID</strong> value.</li>
            <li>For <strong>ClientSecret</strong> field use <strong>Client secret</strong> value.</li>
            <li>
                For <strong>Scope</strong> field use <strong>Scopes</strong> values, e.g.:
                
<pre>accounting
tickets
files

crm.lists.read
crm.lists.write

crm.objects.contacts.read
crm.objects.contacts.write
crm.schemas.contacts.read

crm.objects.custom.read
crm.objects.custom.write
crm.schemas.custom.read

crm.objects.companies.read
crm.objects.companies.write
crm.schemas.companies.read

crm.objects.deals.read
crm.objects.deals.write
crm.schemas.deals.read

crm.objects.quotes.read
crm.objects.quotes.write
crm.schemas.quotes.read

crm.objects.line_items.read
crm.objects.line_items.write
crm.schemas.line_items.read
</pre>

                <div class="alert alert-info">
                    <strong>NOTE:</strong>
                    You can use other scopes too, but they <strong>must</strong> match the scopes defined in your Public app.
                </p>
            </li>   
            <li>For <strong>ReturnUrl</strong> field use one of <strong>Redirect URLs</strong>.</li>            
        </ul>
    </li>    
    <li>
        When you are done with that, click <strong>Generate Token</strong> button to generate Access and Refresh Tokens.
     </li>    
    <li>
        Done! Now you are ready to use HubSpot Connector!
    </li>        
</ol>
]]>
      </Notes>
      <Params>
        <Param Name="UseCustomApp" Value="True" Required="True" Hidden="False" Desc="Use your own app credentials or inbuilt app provided by ZappySys for ease of use. If you choose UseCustomApp=true then make sure to obtain your own ClientId and Secret using steps provided (Click [Steps to Configure] link found next to Authentication Type dropdown)" />
        <Param Name="ClientId" Label="Client ID" VisibleIf="UseCustomApp" RequiredIf="UseCustomApp==true"/>
        <Param Name="ClientSecret" Label="Client Secret" VisibleIf="UseCustomApp" RequiredIf="UseCustomApp==true" Secret="True"/>
        <Param Name="Scope"
			Label="Scope (Must Match with App Scopes)"
               Required="True"
               Options="account-info.security.read;accounting;actions;automation;business-intelligence;cms.domains.read;cms.domains.write;communication_preferences.read;communication_preferences.read_write;communication_preferences.write;content;conversations.read;conversations.write;crm.export;crm.import;crm.lists.read;crm.lists.write;crm.objects.companies.read;crm.objects.companies.write;crm.objects.contacts.read;crm.objects.contacts.write;crm.objects.custom.read;crm.objects.custom.write;crm.objects.deals.read;crm.objects.deals.write;crm.objects.line_items.read;crm.objects.line_items.write;crm.objects.marketing_events.read;crm.objects.marketing_events.write;crm.objects.owners.read;crm.objects.quotes.read;crm.objects.quotes.write;crm.schemas.companies.read;crm.schemas.contacts.read;crm.schemas.contacts.write;crm.schemas.custom.read;crm.schemas.custom.write;crm.schemas.deals.read;crm.schemas.deals.write;crm.schemas.line_items.read;crm.schemas.quotes.read;e-commerce;files;files.ui_hidden.read;forms;forms-uploaded-files;integration-sync;media_bridge.read;media_bridge.write;oauth;sales-email-read;settings.users.read;settings.users.teams.read;settings.users.teams.write;settings.users.write;tickets;timeline;"
               MultiSelectSeparator=" "
               MultiSelect="True"
               Value="accounting~files~crm.lists.read~crm.lists.write~crm.objects.companies.read~crm.objects.companies.write~crm.objects.contacts.read~crm.objects.contacts.write~crm.objects.custom.read~crm.objects.custom.write~crm.objects.deals.read~crm.objects.deals.write~crm.objects.line_items.read~crm.objects.line_items.write~crm.objects.quotes.read~crm.objects.quotes.write~crm.schemas.companies.read~crm.schemas.contacts.read~crm.schemas.custom.read~crm.schemas.deals.read~crm.schemas.line_items.read~crm.schemas.quotes.read~tickets"
               Desc="Permissions you want to use."
               Example="contacts~tickets"
               HelpLink=""/>
        <Param Name="ReturnUrl" Options="https://zappysys.com/oauth"/>  
        
        <Param Name="RetryMode" Value="RetryWhenStatusCodeMatch" Options="None;RetryAny;RetryWhenStatusCodeMatch;" Hidden="True" />
        <Param Name="RetryStatusCodeList" Value="429" Hidden="True" />
        <Param Name="RetryCountMax" Value="5" Hidden="True" />
        <Param Name="RetryMultiplyWaitTime" Value="True" Hidden="True" />
      </Params>
    </Auth>
    
    <Auth Type="HTTP" Name="Token" Label="Developer API key (Deprecated)" 
          Desc="Deprecated authentication method. Use [Private app] instead." 
          HelpLink="https://developers.hubspot.com/beta-docs/guides/apps/authentication/intro-to-auth"
		TestEndPoint="get_contact_properties" ConnStr="">
      <Notes>
        <![CDATA[        
<p>
    Using HubSpot API key is <strong>deprecated</strong> method for authentication. Use <strong>Private app</strong> authentication instead. If you still need one, then follow these instructions to get HubSpot API key:
<p/>

<ul>
    <li>
        First of all, if you don't have HubSpot Developer's account, <a href="https://app.hubspot.com/signup/developers">register one</a>.
    </li>
    <li>
        Go to <a href="https://app.hubspot.com">HubSpot</a> and select your Developer account.
    </li>
    <li>
        Click <strong>Apps</strong> on the left hand side and then click <strong>Get HubSpot API key</strong> button to get one:
        
        <img src="https://cdn.zappysys.com/api/images/authentication/hubspot/API-Key/get-hubspot-api-key.png"
             loading="lazy"
             decoding="async"
             class="img-thumbnail block"
             alt="Get HubSpot API key"
             title="Getting HubSpot API key"
             width="1000"
             height="350" />
    </li>    
    <li>
        When a popup appears, click <strong>Show Key</strong> button and then hit <strong>Copy</strong> button to copy API key:
        
        <img src="https://cdn.zappysys.com/api/images/authentication/hubspot/API-Key/use-api-key-to-read-hubspot-data-via-rest-api.png"
             loading="lazy"
             decoding="async"
             class="img-thumbnail block"
             alt="Use API key to read HubSpot data via REST API"
             title="Using API key to read HubSpot data via REST API"
             width="1000"
             height="770" />
    </li>
    <li>
        Once copy the API key, go to SSIS package or ODBC data source and use it in <strong>API Key</strong> authentication configuration:
        <ul>
            <li>Paste it in <strong>ApiKey</strong> parameter field.</li>
        </ul>
    </li>    
    <li>
        Done! Now you are ready to use HubSpot Connector!
    </li>         
</ul>

]]>
      </Notes>    
      <Params>
        <Param Name="hapikey" Label="ApiKey" Type="Query" Secret="True" Required="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>
    <EndPoint Name="Pagination">
      <Params>
        <Param Name="NextUrlAttributeOrExpr"
               Value="$.paging.next.link"
               Type="Property"
          />
      </Params>
    </EndPoint>
    
    <EndPoint Name="PaginationAndSeveralColumns" Template="Pagination">
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_WSTR" />
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />  
      </OutputColumns>
    </EndPoint>
    
    <EndPoint Name="SingleRow" Method="GET">
      <Params>
        <Param Name="Id"
          Required="True"
          IsKey="True"
          />

      </Params>
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_WSTR" Key="True" />
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />
      </OutputColumns>
    </EndPoint>    

    <EndPoint Name="ArchiveItems" Method="POST" DotAsPath="True" BatchSize="100" ContentType="application/json">
      <Params>
        <Param Name="RawOutputDataRowTemplate" Type="Property" Value="{Status:'Archived'}" />
        <Param Name="EnableRawOutputModeSingleRow" Type="Property" Value="True" />                
      </Params>
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>
      <InputColumns>
        <Column Name="id" Key="True" ReadAs="Id" Label="Id" Desc="Id of a company" 
                DataType="DT_WSTR" 
                Length="100"
          />      
      </InputColumns>
      <OutputColumns>
        <Column Name="Status" DataType="DT_WSTR" Length="50" />
      </OutputColumns>
    </EndPoint>      
	
    <EndPoint Name="PaginationForSearch"
	Method="POST" Filter="$.results[*]" ContentType="application/json" MaxRows="10000"
	HelpLink="https://developers.hubspot.com/docs/api/crm/search">
       <Body><![CDATA[{ "limit": 100, "after": "{$after$}", "filters": [$SearchFilters$], "properties" : [ [$Properties$] ] }]]>
      </Body>
      <Params>
	    <Param Name="SearchFilters" 
			Editor="MultiLine"
			Value="[ {&quot;propertyName&quot;: &quot;createdate&quot;, &quot;operator&quot;: &quot;GT&quot;, &quot;value&quot;: &quot;&lt;&lt;today-10year||unix_timestamp_ms,FUN_TO_DATE&gt;&gt;&quot; } ]" />
		  
		<Param Name="PagingMode" Value="ByPostData" Hidden="True" Type="Property"/>
		<Param Name="PagingByUrlCurrentPage" Value="0" Hidden="True" Type="Property"/>
		<Param Name="PagingByUrlAttributeName" Value="{$after$}"  Hidden="True" Type="Property"/>
		<Param Name="PagingIncrementBy" Value="100"  Hidden="True" Type="Property"/>
      </Params>
	  
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_WSTR" />
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />  
      </OutputColumns>
    </EndPoint>	
  </Template>
  
  <EndPoints>

	
    <!-- ==================
        Search Contacts, Company, Deal, Ticket, Product, LineItem, Quote
       ================== -->  
	   
	<EndPoint Name="search_companies" Label="Search Companies" Desc="Search companies using one or more filter conditions. Choose properties to include in the output." Template="PaginationForSearch" 
		Url="/crm/v3/objects/companies/search" > 
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_company_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="&quot;{@value}&quot;" 
               MultiSelectSeparator=","
          />

      </Params>		
      <OutputColumns>         
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_company_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />       
      </OutputColumns>
    </EndPoint>
	
 	<EndPoint Name="search_contacts" Label="Search Contacts" Desc="Search contacts using one or more filter conditions. Choose properties to include in the output." Template="PaginationForSearch" 
		Url="/crm/v3/objects/contacts/search" > 
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_contact_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="&quot;{@value}&quot;" 
               MultiSelectSeparator=","
          />

      </Params>		
      <OutputColumns>         
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_contact_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />       
      </OutputColumns>
    </EndPoint>
	
 	<EndPoint Name="search_tickets" Label="Search Tickets" Desc="Search tickets using one or more filter conditions. Choose properties to include in the output." Template="PaginationForSearch" 
		Url="/crm/v3/objects/tickets/search" > 
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_ticket_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="&quot;{@value}&quot;" 
               MultiSelectSeparator=","
          />

      </Params>		
      <OutputColumns>         
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_ticket_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />       
      </OutputColumns>
    </EndPoint>

    <EndPoint Name="search_deals" Label="Search Deals" Desc="Search deals using one or more filter conditions. Choose properties to include in the output." Template="PaginationForSearch" 
		Url="/crm/v3/objects/deals/search" > 
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_deal_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="&quot;{@value}&quot;" 
               MultiSelectSeparator=","
          />

      </Params>		
      <OutputColumns>         
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_deal_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />       
      </OutputColumns>
    </EndPoint>
	
    <EndPoint Name="search_products" Label="Search Products" Desc="Search products using one or more filter conditions. Choose properties to include in the output." Template="PaginationForSearch" 
		Url="/crm/v3/objects/products/search" > 
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_product_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="&quot;{@value}&quot;" 
               MultiSelectSeparator=","
          />
      </Params>
      <OutputColumns>         
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_product_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />       
      </OutputColumns>
    </EndPoint>
	
    <EndPoint Name="search_lineitems" Label="Search LineItems" Desc="Search LineItems using one or more filter conditions. Choose properties to include in the output." Template="PaginationForSearch" 
		Url="/crm/v3/objects/line_items/search" > 
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_lineitem_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="&quot;{@value}&quot;" 
               MultiSelectSeparator=","
          />

      </Params>		
      <OutputColumns>         
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_lineitem_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />       
      </OutputColumns>
    </EndPoint>

    <EndPoint Name="search_quotes" Label="Search Quotes" Desc="Search Quotes using one or more filter conditions. Choose properties to include in the output." Template="PaginationForSearch" 
		Url="/crm/v3/objects/quotes/search" > 
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_quote_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="&quot;{@value}&quot;" 
               MultiSelectSeparator=","
          />

      </Params>		
      <OutputColumns>         
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_quote_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />       
      </OutputColumns>
    </EndPoint>		
    <!-- ==================
        CONTACTS
       ================== -->  
    <EndPoint Template="PaginationAndSeveralColumns" Name="get_contacts" Label="Get Contacts" Url="/crm/v3/objects/contacts?limit=100&amp;[$Properties$]" Method="GET" Filter="$.results[*]">
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_contact_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}" 
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />
      </Params>
      <OutputColumns>         
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_contact_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </OutputColumns>
    </EndPoint>
	

	
    <!-- ====================
         CONTACT BY ID
         ===================== -->
    <EndPoint Template="SingleRow" Name="get_contact" Label="Get Contact By ID" Url="/crm/v3/objects/contacts/[$Id$]?[$Properties$]"
              >
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_contact_properties"
               OptionsEndPointValueColumn="name"
               MultiSelect="True"
               MultiSelectAllOnBlank="True"
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}"
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />
      </Params>
      <OutputColumns>
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]"
                DataType="DT_WSTR"
                Length="2000"
                Expand="True"
                DataEndPoint="get_contact_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint>
    
    <!-- ====================
         CONTACT PROPERTIES
         ===================== -->
    <EndPoint Template="Pagination" Name="get_contact_properties" Label="Get Contact Properties" CachedTtl="120" Url="/crm/v3/properties/contacts" Method="GET" Filter="$.results[*]">
      <OutputColumns>
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="300" />
        <Column Name="label" Label="Label" DataType="DT_WSTR" Length="300" />
        <Column Name="type" Label="Type" DataType="DT_WSTR" Length="150" />
        <Column Name="hidden" Label="IsHidden" DataType="DT_BOOL" />
        <Column Name="fieldType" Label="FieldType" DataType="DT_WSTR" Length="150" />
        <Column Name="description" Label="Description" DataType="DT_WSTR" Length="1500" />
      </OutputColumns>
    </EndPoint>    
    
    <!-- ====================
         CREATE CONTACTS
         ===================== -->
    <EndPoint Name="create_contacts" Label="Create Contacts" Url="/crm/v3/objects/contacts/batch/create" Method="POST" Filter="$.results[*]" DotAsPath="True" ContentType="application/json" BatchSize="100">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>
      <InputColumns>        
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_contact_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime,date;DT_BOOL=bool"
          />        
      </InputColumns>      
      <OutputColumns>     
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />     
        
        <!-- DYNAMIC CUSTOM FIELDS  -->      
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_contact_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </OutputColumns>      
    </EndPoint>
    
    <!-- ====================
         UPDATE CONTACTS
         ===================== -->
    <EndPoint Name="update_contacts" Label="Update Contacts" Url="/crm/v3/objects/contacts/batch/update" Method="POST" Filter="$.results[*]" DotAsPath="True" ContentType="application/json" BatchSize="100">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>     
      <InputColumns>         
        <Column Name="id" Key="True" ReadAs="Id" Label="Id" DataType="DT_I8" />
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_contact_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </InputColumns>      
      <OutputColumns>     
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />    
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        
        <!-- DYNAMIC CUSTOM FIELDS  -->      
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_contact_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </OutputColumns>      
    </EndPoint>
    
    <!-- ======================
         ARCHIVE CONTACTS
         =========================== -->
    <EndPoint Template="ArchiveItems" Name="archive_contacts" Label="Archive Contacts" Url="/crm/v3/objects/contacts/batch/archive" >
    </EndPoint>    
    
    <!-- ==================
         DEALS
         =================== -->
    <EndPoint Template="PaginationAndSeveralColumns" Name="get_deals" Label="Get Deals" Url="/crm/v3/objects/deals?limit=100&amp;[$Properties$]" Method="GET" Filter="$.results[*]">
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_deal_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}" 
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />        
      </Params>
      <OutputColumns>
        
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_deal_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_R8=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint>
    
    <!-- ====================
         DEAL PROPERTIES
         ===================== -->
    <EndPoint Template="Pagination" Name="get_deal_properties" Label="Get Deal Properties" CachedTtl="120" Url="/crm/v3/properties/deals" Method="GET" Filter="$.results[*]">
      <OutputColumns>
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="300" />
        <Column Name="label" Label="Label" DataType="DT_WSTR" Length="300" />
        <Column Name="type" Label="Type" DataType="DT_WSTR" Length="150" />
        <Column Name="hidden" Label="IsHidden" DataType="DT_BOOL" />
        <Column Name="fieldType" Label="FieldType" DataType="DT_WSTR" Length="150" />
        <Column Name="description" Label="Description" DataType="DT_WSTR" Length="1500" />
      </OutputColumns>
    </EndPoint>
    
    <!-- ====================
         DEAL BY ID
         ===================== -->
    <EndPoint Template="SingleRow" Name="get_deal" Label="Get Deal By ID" Url="/crm/v3/objects/deals/[$Id$]?[$Properties$]"
              >
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_deal_properties"
               OptionsEndPointValueColumn="name"
               MultiSelect="True"
               MultiSelectAllOnBlank="True"
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}"
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />
      </Params>
      <OutputColumns>
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]"
                DataType="DT_WSTR"
                Length="2000"
                Expand="True"
                DataEndPoint="get_deal_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint>    
    
    <!-- ===================
         CREATE DEALS
         ==================== -->
    <EndPoint Name="create_deals" Label="Create Deals" Url="/crm/v3/objects/deals/batch/create" Method="POST" Filter="$.results[*]" DotAsPath="True" BatchSize="100" ContentType="application/json">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>
      <InputColumns>
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_deal_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />      
      </InputColumns>
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_WSTR" />
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />  
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_deal_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint>
    
    <!-- ======================
         ARCHIVE DEALS
         =========================== -->
    <EndPoint Template="ArchiveItems" Name="archive_deals" Label="Archive Deals" Url="/crm/v3/objects/deals/batch/archive">      
    </EndPoint>     
    
<!-- ====================
         UPDATE DEALS
         ===================== -->
    <EndPoint Name="update_deals" Label="Update Deals" Url="/crm/v3/objects/deals/batch/update" Method="POST" Filter="$.results[*]" DotAsPath="True" ContentType="application/json" BatchSize="100">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>     
      <InputColumns>         
        <Column Name="id" Key="True" ReadAs="Id" Label="Id" DataType="DT_I8" />
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_deal_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </InputColumns>      
      <OutputColumns>     
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />    
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        
        <!-- DYNAMIC CUSTOM FIELDS  -->      
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_deal_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </OutputColumns>      
    </EndPoint>        

    <!-- ====================
         PRODUCTS
         ===================== -->
    <EndPoint Template="PaginationAndSeveralColumns" Name="get_products" Label="Get Products" Url="/crm/v3/objects/products?limit=100&amp;[$Properties$]" Method="GET" Filter="$.results[*]">
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_product_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}" 
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />          
      </Params>
      <OutputColumns>
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_product_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          /> 
      </OutputColumns>
    </EndPoint>      
    
<!-- ====================
         PRODUCT BY ID
         ===================== -->
    <EndPoint Template="SingleRow" Name="get_product" Label="Get Product By ID" Url="/crm/v3/objects/products/[$Id$]?[$Properties$]"
              >
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_product_properties"
               OptionsEndPointValueColumn="name"
               MultiSelect="True"
               MultiSelectAllOnBlank="True"
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}"
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />
      </Params>
      <OutputColumns>
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]"
                DataType="DT_WSTR"
                Length="2000"
                Expand="True"
                DataEndPoint="get_product_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint>        
    
    <!-- ====================
         PRODUCT PROPERTIES
         ===================== -->
    <EndPoint Template="Pagination" Name="get_product_properties" Label="Get Product Properties" CachedTtl="120" Url="/crm/v3/properties/products" Method="GET" Filter="$.results[*]">
      <OutputColumns>
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="300" />
        <Column Name="label" Label="Label" DataType="DT_WSTR" Length="300" />
        <Column Name="type" Label="Type" DataType="DT_WSTR" Length="150" />
        <Column Name="hidden" Label="IsHidden" DataType="DT_BOOL" />
        <Column Name="fieldType" Label="FieldType" DataType="DT_WSTR" Length="150" />
        <Column Name="description" Label="Description" DataType="DT_WSTR" Length="1500" />
      </OutputColumns>
    </EndPoint>
    
    <!-- ===================
         CREATE PRODUCTS
         ==================== -->
    <EndPoint Name="create_products" Label="Create Products" Url="/crm/v3/objects/products/batch/create" Method="POST" Filter="$.results[*]" DotAsPath="True" BatchSize="100" ContentType="application/json">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>
      <InputColumns>
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_product_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />      
      </InputColumns>
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />  
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_product_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint>    
    
    <!-- ======================
         ARCHIVE PRODUCTS
         =========================== -->
    <EndPoint Template="ArchiveItems" Name="archive_products" Label="Archive Products" Url="/crm/v3/objects/products/batch/archive">      
    </EndPoint> 

    <!-- ====================
         UPDATE PRODUCTS
         ===================== -->
    <EndPoint Name="update_products" Label="Update Products" Url="/crm/v3/objects/products/batch/update" Method="POST" Filter="$.results[*]" DotAsPath="True" ContentType="application/json" BatchSize="100">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>     
      <InputColumns>         
        <Column Name="id" Key="True" ReadAs="Id" Label="Id" DataType="DT_I8" />
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_product_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </InputColumns>      
      <OutputColumns>     
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />    
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        
        <!-- DYNAMIC CUSTOM FIELDS  -->      
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_product_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </OutputColumns>      
    </EndPoint>    
    
    <!-- ====================
         COMPANIES
         ===================== -->
    <EndPoint Template="PaginationAndSeveralColumns" Name="get_companies" Label="Get Companies" Url="/crm/v3/objects/companies?limit=100&amp;[$Properties$]" Method="GET" Filter="$.results[*]">
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_company_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}" 
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />          
      </Params>
      <OutputColumns>
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_company_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          /> 
      </OutputColumns>
    </EndPoint>

    <!-- ====================
         COMPANY BY ID
         ===================== -->
    <EndPoint Template="SingleRow" Name="get_company" Label="Get Company By ID" Url="/crm/v3/objects/companies/[$Id$]?[$Properties$]"
              >
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_company_properties"
               OptionsEndPointValueColumn="name"
               MultiSelect="True"
               MultiSelectAllOnBlank="True"
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}"
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />
      </Params>
      <OutputColumns>
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]"
                DataType="DT_WSTR"
                Length="2000"
                Expand="True"
                DataEndPoint="get_company_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint>
    
    <!-- ====================
         COMPANY PROPERTIES
         ===================== -->
    <EndPoint Template="Pagination" Name="get_company_properties" Label="Get Company Properties" CachedTtl="120" Url="/crm/v3/properties/companies" Method="GET" Filter="$.results[*]">      
      <OutputColumns>
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="300" />
        <Column Name="label" Label="Label" DataType="DT_WSTR" Length="300" />
        <Column Name="type" Label="Type" DataType="DT_WSTR" Length="150" />
        <Column Name="hidden" Label="IsHidden" DataType="DT_BOOL" />
        <Column Name="fieldType" Label="FieldType" DataType="DT_WSTR" Length="150" />
        <Column Name="description" Label="Description" DataType="DT_WSTR" Length="1500" />
      </OutputColumns>
    </EndPoint>
    
    <!-- ===================
         CREATE COMPANIES
         ==================== -->
    <EndPoint Name="create_companies" Label="Create Companies" Url="/crm/v3/objects/companies/batch/create" Method="POST" Filter="$.results[*]" DotAsPath="True" BatchSize="100" ContentType="application/json">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>
      <InputColumns>
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_company_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />      
      </InputColumns>
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_WSTR" />
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />  
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_product_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_WSTR=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint> 
    
    <!-- ======================
         ARCHIVE COMPANIES
         =========================== -->
    <EndPoint Template="ArchiveItems" Name="archive_companies" Label="Archive Companies" Url="/crm/v3/objects/companies/batch/archive">
    </EndPoint>       
    
    <!-- ====================
           UPDATE COMPANIES
         ==================== -->
    <EndPoint Name="update_companies" Label="Update Companies" Url="/crm/v3/objects/companies/batch/update" Method="POST" Filter="$.results[*]" DotAsPath="True" ContentType="application/json" BatchSize="100">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>     
      <InputColumns>         
        <Column Name="id" Key="True" ReadAs="Id" Label="Id" DataType="DT_I8" />
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_company_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </InputColumns>      
      <OutputColumns>     
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />    
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        
        <!-- DYNAMIC CUSTOM FIELDS  -->      
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_company_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </OutputColumns>      
    </EndPoint>    

    <!-- ====================
         LINE ITEMS
         ===================== -->
    <EndPoint Template="PaginationAndSeveralColumns" Name="get_lineitems" Label="Get Line Items" Url="/crm/v3/objects/line_items?limit=100&amp;[$Properties$]" Method="GET" Filter="$.results[*]">
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_lineitem_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}" 
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />          
      </Params>
      <OutputColumns>        
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_lineitem_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          /> 
      </OutputColumns>
    </EndPoint>

    <!-- ====================
         LINE ITEMS BY ID
         ===================== -->
    <EndPoint Template="SingleRow" Name="get_lineitem" Label="Get Line Item By ID" Url="/crm/v3/objects/line_items/[$Id$]?[$Properties$]" 
              >
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_lineitem_properties"
               OptionsEndPointValueColumn="name"
               MultiSelect="True"
               MultiSelectAllOnBlank="True"
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}"
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />
      </Params>
      <OutputColumns>
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]"
                DataType="DT_WSTR"
                Length="2000"
                Expand="True"
                DataEndPoint="get_lineitem_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint>    
    
    
    <!-- ======================
         LINE ITEM PROPERTIES
         ======================= -->
    <EndPoint Name="get_lineitem_properties" Label="Get Line Item Properties" CachedTtl="120" Url="/crm/v3/properties/line_items" Method="GET" Filter="$.results[*]">
      <Params>
        <Param Name="NextUrlAttributeOrExpr"
               Value="$.paging.next.link"
               Type="Property"
          />
      </Params>
      <OutputColumns>
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="300" />
        <Column Name="label" Label="Label" DataType="DT_WSTR" Length="300" />
        <Column Name="type" Label="Type" DataType="DT_WSTR" Length="150" />
        <Column Name="hidden" Label="IsHidden" DataType="DT_BOOL" />
        <Column Name="fieldType" Label="FieldType" DataType="DT_WSTR" Length="150" />
        <Column Name="description" Label="Description" DataType="DT_WSTR" Length="1500" />
      </OutputColumns>
    </EndPoint>
    
    <!-- ======================
         CREATE LINE ITEMS
         ======================= -->
    <EndPoint Name="create_lineitems" Label="Create Line Items" Url="/crm/v3/objects/line_items/batch/create" Method="POST" Filter="$.results[*]" DotAsPath="True" ContentType="application/json" BatchSize="100" >
      <Params>
        <Param Name="NextUrlAttributeOrExpr"
               Value="$.paging.next.link"
               Type="Property"
          />
      </Params>
      <InputColumns>        
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_lineitem_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          /> 
      </InputColumns>
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>      
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />  
        <!-- Dynamic -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_lineitem_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          /> 
      </OutputColumns>
    </EndPoint>
    
    <!-- ======================
         ARCHIVE LINE ITEMS
         =========================== -->
    <EndPoint Template="ArchiveItems" Name="archive_lineitems" Label="Archive Line Items" Url="/crm/v3/objects/line_items/batch/archive">      
    </EndPoint>     

    <!-- ====================
           UPDATE LINE ITEMS
         ==================== -->
    <EndPoint Name="update_lineitems" Label="Update Line items" Url="/crm/v3/objects/line_items/batch/update" Method="POST" Filter="$.results[*]" DotAsPath="True" ContentType="application/json" BatchSize="100">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>     
      <InputColumns>         
        <Column Name="id" Key="True" ReadAs="Id" Label="Id" DataType="DT_I8" />
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_lineitem_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </InputColumns>      
      <OutputColumns>     
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />    
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        
        <!-- DYNAMIC CUSTOM FIELDS  -->      
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_lineitem_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </OutputColumns>      
    </EndPoint>      
    
    <!-- ====================
         TICKETS
         ===================== -->
    <EndPoint Template="PaginationAndSeveralColumns" Name="get_tickets" Label="Get Tickets" Url="/crm/v3/objects/tickets?limit=100&amp;[$Properties$]" Method="GET" Filter="$.results[*]">
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_ticket_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}" 
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />          
      </Params>
      <OutputColumns>
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_ticket_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          /> 
      </OutputColumns>
    </EndPoint>

    <!-- ====================
         TICKET BY ID
         ===================== -->
    <EndPoint Template="SingleRow" Name="get_ticket" Label="Get Ticket By ID" Url="/crm/v3/objects/tickets/[$Id$]?[$Properties$]"
              >
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_ticket_properties"
               OptionsEndPointValueColumn="name"
               MultiSelect="True"
               MultiSelectAllOnBlank="True"
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}"
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />
      </Params>
      <OutputColumns>
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]"
                DataType="DT_WSTR"
                Length="2000"
                Expand="True"
                DataEndPoint="get_ticket_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint>
    
    <!-- ====================
         TICKET PROPERTIES
         ===================== -->
    <EndPoint Name="get_ticket_properties" Label="Get Tickets Properties" CachedTtl="120" Url="/crm/v3/properties/tickets" Method="GET" Filter="$.results[*]">
      <Params>
        <Param Name="NextUrlAttributeOrExpr"
               Value="$.paging.next.link"
               Type="Property"
          />
      </Params>
      <OutputColumns>
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="300" />
        <Column Name="label" Label="Label" DataType="DT_WSTR" Length="300" />
        <Column Name="type" Label="Type" DataType="DT_WSTR" Length="150" />
        <Column Name="hidden" Label="IsHidden" DataType="DT_BOOL" />
        <Column Name="fieldType" Label="FieldType" DataType="DT_WSTR" Length="150" />
        <Column Name="description" Label="Description" DataType="DT_WSTR" Length="1500" />
      </OutputColumns>
    </EndPoint>
    
    <!-- ===================
         CREATE TICKETS
         ==================== -->
    <EndPoint Name="create_tickets" Label="Create Tickets" Url="/crm/v3/objects/tickets/batch/create" Method="POST" Filter="$.results[*]" DotAsPath="True" BatchSize="100" ContentType="application/json">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>
      <InputColumns>
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_ticket_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />      
      </InputColumns>
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />  
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_ticket_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint>
    
    <!-- ======================
         ARCHIVE TICKETS
         =========================== -->
    <EndPoint Template="ArchiveItems" Name="archive_tickets" Label="Archive Tickets" Url="/crm/v3/objects/tickets/batch/archive">      
    </EndPoint>       
    
    <!-- ====================
           UPDATE TICKETS
         ==================== -->
    <EndPoint Name="update_tickets" Label="Update Tickets" Url="/crm/v3/objects/tickets/batch/update" Method="POST" Filter="$.results[*]" DotAsPath="True" ContentType="application/json" BatchSize="100">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>     
      <InputColumns>         
        <Column Name="id" Key="True" ReadAs="Id" Label="Id" DataType="DT_I8" />
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_ticket_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </InputColumns>      
      <OutputColumns>     
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />    
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        
        <!-- DYNAMIC CUSTOM FIELDS  -->      
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_ticket_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </OutputColumns>      
    </EndPoint>      

 <!-- ====================
         QUOTES
         ===================== -->
    <EndPoint Template="PaginationAndSeveralColumns" Name="get_quotes" Label="Get Quotes" Url="/crm/v3/objects/quotes?limit=100&amp;[$Properties$]" Method="GET" Filter="$.results[*]">
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_quote_properties" 
               OptionsEndPointValueColumn="name" 
               MultiSelect="True" 
               MultiSelectAllOnBlank="True" 
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}" 
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />          
      </Params>
      <OutputColumns>
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_quote_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          /> 
      </OutputColumns>
    </EndPoint>

    <!-- ====================
         QUOTE BY ID
         ===================== -->
    <EndPoint Template="SingleRow" Name="get_quote" Label="Get Quote By ID" Url="/crm/v3/objects/quotes/[$Id$]?[$Properties$]"
              >
      <Params>
        <Param Name="Properties"
               Type="Placeholder"
               OptionsEndPoint="get_quote_properties"
               OptionsEndPointValueColumn="name"
               MultiSelect="True"
               MultiSelectAllOnBlank="True"
               MultiSelectLimit="5000"
               MultiSelectTemplate="properties={@value}"
               MultiSelectSeparator="&amp;"
               Hidden="True"
          />
      </Params>
      <OutputColumns>
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]"
                DataType="DT_WSTR"
                Length="2000"
                Expand="True"
                DataEndPoint="get_quote_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint>
    
    <!-- ====================
         QUOTE PROPERTIES
         ===================== -->
    <EndPoint Name="get_quote_properties" Label="Get Quotes Properties" CachedTtl="120" Url="/crm/v3/properties/quotes" Method="GET" Filter="$.results[*]">
      <Params>
        <Param Name="NextUrlAttributeOrExpr"
               Value="$.paging.next.link"
               Type="Property"
          />
      </Params>
      <OutputColumns>
        <Column Name="name" Label="Name" DataType="DT_WSTR" Length="300" />
        <Column Name="label" Label="Label" DataType="DT_WSTR" Length="300" />
        <Column Name="type" Label="Type" DataType="DT_WSTR" Length="150" />
        <Column Name="hidden" Label="IsHidden" DataType="DT_BOOL" />
        <Column Name="fieldType" Label="FieldType" DataType="DT_WSTR" Length="150" />
        <Column Name="description" Label="Description" DataType="DT_WSTR" Length="1500" />
      </OutputColumns>
    </EndPoint>
    
    <!-- ===================
         CREATE QUOTES
         ==================== -->
    <EndPoint Name="create_quotes" Label="Create Quotes" Url="/crm/v3/objects/quotes/batch/create" Method="POST" Filter="$.results[*]" DotAsPath="True" BatchSize="100" ContentType="application/json">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>
      <InputColumns>
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_quote_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />      
      </InputColumns>
      <OutputColumns>
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />  
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_quote_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />
      </OutputColumns>
    </EndPoint>
    
    <!-- ======================
         ARCHIVE QUOTES
         =========================== -->
    <EndPoint Template="ArchiveItems" Name="archive_quotes" Label="Archive Quotes" Url="/crm/v3/objects/quotes/batch/archive">      
    </EndPoint>       
    
    <!-- ====================
           UPDATE QUOTES
         ==================== -->
    <EndPoint Name="update_quotes" Label="Update Quotes" Url="/crm/v3/objects/quotes/batch/update" Method="POST" Filter="$.results[*]" DotAsPath="True" ContentType="application/json" BatchSize="100">
      <Body>
        <![CDATA[ { "inputs": {$rows$}  
                  }
        ]]>
      </Body>     
      <InputColumns>         
        <Column Name="id" Key="True" ReadAs="Id" Label="Id" DataType="DT_I8" />
        <!-- DYNAMIC CUSTOM FIELDS  -->
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                KeyIf="id" ReadAs="Id"
                DataEndPoint="get_quote_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </InputColumns>      
      <OutputColumns>     
        <Column Name="id" Label="Id" DataType="DT_I8" />
        <Column Name="createdAt" Label="CreatedAt" DataType="DT_DBTIMESTAMP" />
        <Column Name="updatedAt" Label="UpdatedAt" DataType="DT_DBTIMESTAMP" />    
        <Column Name="archived" Label="IsArchived" DataType="DT_BOOL" />
        
        <!-- DYNAMIC CUSTOM FIELDS  -->      
        <Column Name="properties.[$parent.name$]" Label="[$parent.name$]" Desc="[$parent.label$]" 
                DataType="DT_WSTR" 
                Length="2000"
                Expand="True"
                DataEndPoint="get_quote_properties"
                ColumnInfoMap="Name=name;DataType=type"
                DataTypeMap="DT_NUMERIC=number;DT_WSTR=string;DT_DBTIMESTAMP=datetime;DT_BOOL=bool"
          />        
      </OutputColumns>      
    </EndPoint>     

    <!-- ====================
         OWNERS
         ===================== -->
    <EndPoint Template="PaginationAndSeveralColumns" Name="get_owners" Label="Get Owners" Url="/crm/v3/owners/[$OwnerId$]" Method="GET" Filter="$.results[*]">
      <Params>        
        <Param Name="OwnerId" />
        <Param Name="ContineOnErrorForStatusCode" Type="Property" Value="True"/>
      </Params>
      <OutputColumns>    
        <Column Name="email" Label="Email" DataType="DT_WSTR" />      
        <Column Name="firstName" Label="FirstName" DataType="DT_WSTR" />      
        <Column Name="lastName" Label="LastName" DataType="DT_WSTR" />      
        <Column Name="userId" Label="UserId" DataType="DT_I8" />             
      </OutputColumns>
    </EndPoint> 
	
    <!-- ====================
         Upload File		  
         ===================== -->
    <EndPoint Name="upload_file" 
	    Method="POST" 
		Filter="$.objects[*]"
		Label="Upload File from Local Disk" 
		Desc="Uploads local file to Hubspot CRM. This API requires files permission for the App (see scopes)"
		HelpLink="https://legacydocs.hubspot.com/docs/methods/files/v3/upload_new_file"
		Url="/filemanager/api/v3/files/upload" 
		IsMultiPart="True"
		>
        <Body>
          <![CDATA[file=@[$SourceFilePath$]
folderPath=[$TargetFolder$]
fileName=[$TargetFileName$]
options={"access": "[$AccessType$]", "overwrite": [$Overwrite$], "duplicateValidationStrategy": "[$DuplicateValidationStrategy$]" , "duplicateValidationScope": "[$DuplicateValidationScope$]" }]]>
        </Body>	
        <Params>
			 <Param Name="SourceFilePath"
				   Label="Source File Path"			 
				   Required="True"
				   Desc="Specify a disk file path"
				   Example="C:\MyParentFolder\Subfolder\file.txt"
				   Value=""
				   Editor="FileOpen"
			  />
			<Param Name="TargetFolder"
				   Label="Target Folder Path"
				   Required="True"
				   Desc="Specify Target folder path. Partially optional field. One of folderPath or folderId must be specified. Path of the folder the file should be uploaded into. Uploading files into the root path “/” is highly discouraged."
				   Example="/SalesDocs"
				   Value="/"
			  />
			<Param Name="TargetFileName"
			       Label="Target File Name (e.g. MyFile.xlsx)"
				   Desc="Specify file name you like to give"               
			  />		  
			<Param Name="AccessType"
				   Required="True"
				   Desc="Specify file access type"
				   Value="PRIVATE" Options="PRIVATE;PUBLIC_NOT_INDEXABLE;PUBLIC_INDEXABLE"
			  />  
			<Param Name="Overwrite"
				   Required="True"
				   Desc="Specify wheather you like to overwrite target file if exists. If true this file with replace any existing files with the name, folder, and type. Note: If this is set to false, and the uploaded file matches the filename of an existing file in the same folder, the file will be uploaded with a number incremented filename (e.g. example_file.txt will become example_file-1.txt)"
				   Value="true" Options="false;true"
			  />	
			<Param Name="DuplicateValidationStrategy"
				   Required="True"
				   Desc="Specify how to handle duplicate target file."
				   Value="NONE" Options="NONE;REJECT;RETURN_EXISTING"
			  />	
			 <Param Name="DuplicateValidationScope"
				   Required="True"
				   Desc="Specify scope of duplicate validation."
				   Value="EXACT_FOLDER" Options="EXACT_FOLDER;ENTIRE_PORTAL"
			  />				  					  
        </Params>
		<OutputColumns>
			<Column Name="id" DataType="DT_I8" Label="Id" />
			<Column Name="portal_id" DataType="DT_I8" Label="PortalId" />
			<Column Name="name" DataType="DT_WSTR" Label="Name" Length="50" />
			<Column Name="size" DataType="DT_I8" Label="Size" />
			<Column Name="height" DataType="DT_I4" Label="Height"  />
			<Column Name="width" DataType="DT_I4" Label="Width"  />
			<Column Name="encoding" DataType="DT_WSTR" Label="Encoding" Length="1020" />
			<Column Name="type" DataType="DT_WSTR" Label="Type" Length="50" />
			<Column Name="extension" DataType="DT_WSTR" Label="Extension" Length="50" />
			<Column Name="cloud_key" DataType="DT_WSTR" Label="CloudKey" Length="500" />
			<Column Name="s3_url" DataType="DT_WSTR" Label="S3Url" Length="500" />
			<Column Name="friendly_url" DataType="DT_WSTR" Label="FriendlyUrl" Length="500" />
			<Column Name="alt_key" DataType="DT_WSTR" Label="AltKey" Length="500" />
			<Column Name="alt_key_hash" DataType="DT_WSTR" Label="AltKeyHash" Length="500" />
			<Column Name="title" DataType="DT_WSTR" Label="Title" Length="50" />
			<Column Name="meta.url_scheme" DataType="DT_WSTR" Label="MetaUrlScheme" Length="50" />
			<Column Name="meta.allows_anonymous_access" DataType="DT_BOOL" Label="MetaAllowsAnonymousAccess" />
			<Column Name="meta.indexable" DataType="DT_BOOL" Label="MetaIndexable" />
			<Column Name="created" DataType="DT_DBTIMESTAMP" Label="Created" Functions="unix_timestamp_ms_to_date" />
			<Column Name="updated" DataType="DT_DBTIMESTAMP" Label="Updated"  Functions="unix_timestamp_ms_to_date" />
			<Column Name="deleted_at" DataType="DT_DBTIMESTAMP" Label="DeletedAt"  Functions="unix_timestamp_ms_to_date" />
			<Column Name="folder_id" DataType="DT_I8" Label="FolderId" />
			<Column Name="hidden" DataType="DT_BOOL" Label="Hidden" />
			<Column Name="cloud_key_hash" DataType="DT_WSTR" Label="CloudKeyHash" Length="500" />
			<Column Name="archived" DataType="DT_BOOL" Label="Archived" />
			<Column Name="created_by" DataType="DT_WSTR" Label="CreatedBy" Length="1020" />
			<Column Name="deleted_by" DataType="DT_WSTR" Label="DeletedBy" Length="1020" />
			<Column Name="replaceable" DataType="DT_BOOL" Label="Replaceable" />
			<Column Name="url" DataType="DT_WSTR" Label="Url" Length="500" />
			<Column Name="alt_url" DataType="DT_WSTR" Label="AltUrl" Length="500" />
			<Column Name="cdn_purge_embargo_time" DataType="DT_WSTR" Label="CdnPurgeEmbargoTime" Length="1020" />
			<Column Name="file_hash" DataType="DT_WSTR" Label="FileHash" Length="1020" />
		</OutputColumns>
    </EndPoint>	
  </EndPoints>
  
  <Tables>
    <Table Name="Contacts" 
           SelectEndPoint="get_contacts" 
           LookupEndPoint="get_contact" 
           InsertEndPoint="create_contacts"
           UpdateEndPoint="update_contacts"
           DeleteEndPoint="archive_contacts"
      />                          
    <Table Name="Companies" 
           SelectEndPoint="get_companies"
           LookupEndPoint="get_company" 
           InsertEndPoint="create_companies"
           UpdateEndPoint="update_companies"
           DeleteEndPoint="archive_companies" 
      />      
    <Table Name="Deals" 
           SelectEndPoint="get_deals" 
           LookupEndPoint="get_deal" 
           InsertEndPoint="create_deals"
           UpdateEndPoint="update_deals"           
           DeleteEndPoint="archive_deals"
      />
    <Table Name="Products" 
           SelectEndPoint="get_products" 
           LookupEndPoint="get_product" 
           InsertEndPoint="create_products"
           UpdateEndPoint="update_products"           
           DeleteEndPoint="archive_products"
      />                
    <Table Name="Tickets" 
           SelectEndPoint="get_tickets" 
           LookupEndPoint="get_ticket" 
           InsertEndPoint="create_tickets"
           UpdateEndPoint="update_tickets"           
           DeleteEndPoint="archive_tickets"
      />    
    <Table Name="LineItems" 
           SelectEndPoint="get_lineitems" 
           LookupEndPoint="get_lineitem" 
           InsertEndPoint="create_lineitems"
           UpdateEndPoint="update_lineitems"           
           DeleteEndPoint="archive_lineitems"
      />       
    <Table Name="Owners" 
           SelectEndPoint="get_owners" 
      />
    <Table Name="Quotes" 
           SelectEndPoint="get_quotes" 
           LookupEndPoint="get_quote" 
           InsertEndPoint="create_quotes"
           UpdateEndPoint="update_quotes"           
           DeleteEndPoint="archive_quotes"
      />	  
  </Tables>
  
  <Examples>

    <Example Group="ODBC" Slug="list-companies" Label="List companies" Default="True">
      <Desc><![CDATA[
<p>Returns all companies. Use <code>WHERE Id=...</code> to limit to a single company by ID.</p>
      ]]></Desc>
      <Code><![CDATA[SELECT * FROM Companies
-- WHERE Id=123]]></Code>
    </Example>

    <Example Group="ODBC" Slug="list-contacts" Label="List contacts">
      <Desc><![CDATA[
<p>Returns all contacts. Use <code>WHERE Id=...</code> to limit to a single contact by ID.</p>
      ]]></Desc>
      <Code><![CDATA[SELECT * FROM Contacts
-- WHERE Id=123]]></Code>
    </Example>

    <Example Group="ODBC" Slug="get-contact-by-id" Label="Get a contact by ID">
      <Desc><![CDATA[
<p>Returns a single contact by ID. Supply the contact ID in the <code>WHERE</code> clause.</p>
      ]]></Desc>
      <Code><![CDATA[SELECT * FROM Contacts
WHERE Id=51]]></Code>
    </Example>

    <Example Group="ODBC" Slug="get-contacts-by-email-search" Label="Get contacts by email (search)">
      <Desc><![CDATA[
<p>Returns contacts matching a search filter. This example filters by email; you can change the filter to other properties. <code>SearchFilters</code> is a JSON array of filter objects (property name, operator, value).</p>
      ]]></Desc>
      <Code><![CDATA[SELECT Id
  , IsArchived
  , CreatedAt
  , UpdatedAt
  , email
  , firstname
  , lastname
  , company_size
FROM search_contacts
WITH (SearchFilters='[ {"propertyName": "email", "operator": "EQ", "value": "bh@hubspot.com" } ]')]]></Code>
    </Example>

    <Example Group="ODBC" Slug="list-deals" Label="List deals">
      <Desc><![CDATA[
<p>Returns all deals. Use <code>WHERE Id=...</code> to limit to a single deal by ID.</p>
      ]]></Desc>
      <Code><![CDATA[SELECT * FROM Deals
-- WHERE Id=123]]></Code>
    </Example>

    <Example Group="ODBC" Slug="list-line-items" Label="List line items">
      <Desc><![CDATA[
<p>Returns all line items. Use <code>WHERE Id=...</code> to limit to a single line item by ID.</p>
      ]]></Desc>
      <Code><![CDATA[SELECT * FROM LineItems
-- WHERE Id=123]]></Code>
    </Example>

    <Example Group="ODBC" Slug="list-owners" Label="List owners">
      <Desc><![CDATA[
<p>Returns all owners (users) in the account.</p>
      ]]></Desc>
      <Code><![CDATA[SELECT * FROM Owners]]></Code>
    </Example>

    <Example Group="ODBC" Slug="list-products" Label="List products">
      <Desc><![CDATA[
<p>Returns all products. Use <code>WHERE Id=...</code> to limit to a single product by ID.</p>
      ]]></Desc>
      <Code><![CDATA[SELECT * FROM Products
-- WHERE Id=123]]></Code>
    </Example>

    <Example Group="ODBC" Slug="list-tickets" Label="List tickets">
      <Desc><![CDATA[
<p>Returns all tickets. Use <code>WHERE Id=...</code> to limit to a single ticket by ID.</p>
      ]]></Desc>
      <Code><![CDATA[SELECT * FROM Tickets]]></Code>
    </Example>

    <Example Group="ODBC" Slug="list-quotes" Label="List quotes">
      <Desc><![CDATA[
<p>Returns all quotes. Use <code>WHERE Id=...</code> to limit to a single quote by ID.</p>
      ]]></Desc>
      <Code><![CDATA[SELECT * FROM Quotes]]></Code>
    </Example>

    <Example Group="ODBC" Slug="query-companies-with-search-api-generic-request" Label="Query companies with search API (generic request)">
      <Desc><![CDATA[
<p>Invokes the CRM search API via the generic request table when no dedicated table exists for the operation. This example searches companies with a filter (e.g. last modified date) and returns selected properties. You can call other valid API paths and methods by changing <code>Url</code>, <code>RequestMethod</code>, and <code>RequestData</code>.</p>
      ]]></Desc>
      <Code><![CDATA[SELECT *
FROM generic_request
WITH (
  Url='crm/v3/objects/companies/search',
  Filter='$.results[*]',
  RequestContentTypeCode='ApplicationJson',
  RequestMethod='POST',
  RequestData='{
    "filters": [ {"propertyName": "hs_lastmodifieddate", "operator": "GT", "value": "<<yearstart-1y||unix_timestamp_ms,FUN_TO_DATE>>" } ],
    "properties": ["address","city","state"]
  }'
)]]></Code>
    </Example>

    <Example Group="ODBC" Slug="upload-file-generic-request" Label="Upload a file (generic request)">
      <Desc><![CDATA[
<p>Uploads a file using the generic request table. Supply the local file path, folder path, and file name in the request body. For OAuth apps, the app may need file-manager access; otherwise the API returns a permissions error. See HubSpot Files API docs for options (e.g. access, overwrite).</p>
      ]]></Desc>
      <Code><![CDATA[SELECT *
FROM generic_request
WITH (
  Url='filemanager/api/v3/files/upload',
  RequestMethod='POST',
  Filter='$.objects[*]',
  Body='file=@C:\data\logo.png
folderPath=/
fileName=logo.png
options={"access": "PRIVATE", "overwrite": true}',
  IsMultiPart='True',
  Meta='id:long; name:string; title:string; url: string; type:string; size:long; friendly_url:string; meta.allows_anonymous_access:string; meta.indexable:bool'
)]]></Code>
    </Example>

    <Example Group="ODBC" Slug="insert-contact" Label="Insert a contact">
      <Desc><![CDATA[
<p>Creates a single contact with the given email, first name, last name, and optional custom properties. Column names must match the contact property internal names.</p>
      ]]></Desc>
      <Code><![CDATA[INSERT INTO Contacts(email, firstname, lastname, custom_checkbox, custom_date, custom_number)
VALUES ('john.doe@abc.com', 'John', 'Doe', 'true', '2023-01-01', 100.55)]]></Code>
    </Example>

    <Example Group="ODBC" Slug="update-contact" Label="Update a contact">
      <Desc><![CDATA[
<p>Updates an existing contact by ID. Set the properties you want to change in the <code>SET</code> clause; uncomment other lines to update additional custom properties.</p>
      ]]></Desc>
      <Code><![CDATA[UPDATE Contacts
SET firstname='Brian',
    lastname='Halligan (Sample Contact)'
    --, custom_number=12.12
    --, custom_date='2023-01-01'
    --, custom_string='My Test<<FUN_NOW>>'
    --, custom_richtext='<p><span style="color: #b5b5b5;">##-Please reply-##</span></p>'
    --, custom_multi_select='Blue;Yellow;Black'
    --, custom_pickuser=45581955
    --, custom_dropdown='BB'
    --, custom_checkbox='true'
WHERE Id=51]]></Code>
    </Example>

    <Example Group="ODBC" Slug="delete-contact" Label="Delete a contact">
      <Desc><![CDATA[
<p>Deletes a contact by ID. Supply the contact ID in the <code>WHERE</code> clause.</p>
      ]]></Desc>
      <Code><![CDATA[DELETE FROM Contacts
WHERE Id=1234]]></Code>
    </Example>

    <Example Group="ODBC" Slug="bulk-create-contacts-using-sql-server-data" Label="Bulk create contacts using SQL Server data">
      <Desc><![CDATA[
<p>Inserts multiple contacts by reading rows from a SQL Server database. Data is read from a SELECT statement (or stored procedure); column names or aliases must match the target contact properties (e.g. <code>firstname</code>, <code>lastname</code>, <code>email</code>). The driver uses the HubSpot bulk API to send the data.</p>
      ]]></Desc>
      <Code><![CDATA[INSERT INTO Contacts
SOURCE (
  'MSSQL',
  'Data Source=localhost;Initial Catalog=Test;Integrated Security=true',
  'SELECT firstname, lastname, email FROM StagingContacts'
)]]></Code>
    </Example>

    <Example Group="ODBC" Slug="bulk-delete-contacts-using-ids-from-sql-server" Label="Bulk delete contacts using IDs from SQL Server">
      <Desc><![CDATA[
<p>Deletes multiple contacts by ID. IDs are read from a SQL Server SELECT statement or stored procedure. The result set must include an <code>Id</code> column (e.g. from a staging table such as <code>StagingContacts</code>) with the contact IDs to delete.</p>
      ]]></Desc>
      <Code><![CDATA[DELETE FROM Contacts
SOURCE (
  'MSSQL',
  'Data Source=localhost;Initial Catalog=Test;Integrated Security=true',
  'SELECT Id FROM StagingContacts'
)]]></Code>
    </Example>

    <Example Group="ODBC" Slug="bulk-update-contacts-using-sql-server-data" Label="Bulk update contacts using SQL Server data">
      <Desc><![CDATA[
<p>Updates multiple contacts by reading IDs and new values from a SQL Server SELECT statement or stored procedure. Column names or aliases must match contact properties (e.g. <code>Id</code>, <code>email</code>). The driver uses the HubSpot bulk API to apply the updates.</p>
      ]]></Desc>
      <Code><![CDATA[UPDATE Contacts
SOURCE (
  'MSSQL',
  'Data Source=localhost;Initial Catalog=Test;Integrated Security=true',
  'SELECT Id, email FROM StagingContacts'
)]]></Code>
    </Example>

  </Examples>
</ApiConfig>