Hubspot Connector - Source Code
<?xml version="1.0" encoding="utf-8"?>
<ApiConfig Name="Hubspot"
Slug="hubspot-connector"
Id="125a72f8-ba3c-430a-96a6-41b6507dfc43"
EngineVersion="12"
Version="5"
Desc="Hubspot Connector can be used to integrate Hubspot and your data source, e.g. Microsoft SQL Server, Oracle, Excel, Power BI, etc. Get, write, delete Hubspot data in a few clicks!"
Logo="data:image/png;base64,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"
>
<VersionHistory>
<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;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="[ {"propertyName": "createdate", "operator": "GT", "value": "<<today-10year||unix_timestamp_ms,FUN_TO_DATE>>" } ]" />
<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=""{@value}""
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=""{@value}""
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=""{@value}""
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=""{@value}""
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=""{@value}""
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=""{@value}""
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=""{@value}""
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&[$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="&"
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="&"
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&[$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="&"
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="&"
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&[$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="&"
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="&"
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&[$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="&"
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="&"
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&[$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="&"
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="&"
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&[$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="&"
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="&"
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&[$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="&"
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="&"
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" Label="Get companies" Desc="Gets companies">
<Code>
<![CDATA[SELECT * FROM Companies --Where Id=123]]>
</Code>
</Example>
<Example Group="ODBC" Label="Get contacts" Desc="Gets contacts">
<Code>
<![CDATA[SELECT * FROM Contacts --Where Id=123]]>
</Code>
</Example>
<Example Group="ODBC" Label="Get contact by Id" Desc="Gets contact by Id">
<Code>
<![CDATA[SELECT * FROM Contacts Where Id=51]]>
</Code>
</Example>
<Example Group="ODBC" Label="Get contact by email (search)" Desc="Gets contacts">
<Code>
<![CDATA[SELECT Id
, IsArchived
, CreatedAt
, UpdatedAt
, email
, firstname
, lastname
, company_size
--, custom_checkbox
--, custom_multi_select
--, custom_number
--, custom_pickuser
--, custom_richtext
--, custom_string
--, custom_string_multi
FROM search_contacts
With(SearchFilters='[ {"propertyName": "email", "operator": "EQ", "value": "bh@hubspot.com" } ]')]]>
</Code>
</Example>
<Example Group="ODBC" Label="Get deals" Desc="Gets deals">
<Code>
<![CDATA[SELECT * FROM Deals --Where Id=123]]>
</Code>
</Example>
<Example Group="ODBC" Label="Get line items" Desc="Gets line items">
<Code>
<![CDATA[SELECT * FROM LineItems --Where Id=123]]>
</Code>
</Example>
<Example Group="ODBC" Label="Get owners" Desc="Gets owners">
<Code>
<![CDATA[SELECT * FROM Owners]]>
</Code>
</Example>
<Example Group="ODBC" Label="Get products" Desc="Gets products">
<Code>
<![CDATA[SELECT * FROM Products --Where Id=123]]>
</Code>
</Example>
<Example Group="ODBC" Label="Get tickets" Desc="Gets tickets">
<Code>
<![CDATA[SELECT * FROM Tickets]]>
</Code>
</Example>
<Example Group="ODBC" Label="Get quotes" Desc="Gets quotes">
<Code>
<![CDATA[SELECT * FROM Quotes]]>
</Code>
</Example>
<Example Group="ODBC" Label="Generic Request (Company Search API Example)" Desc="This example shows how to invoke generic request when connector file doesnt have specific EndPoint / Table you like to query. This example invokes search endpoint but you can call any valid API endpoint GET/POST etc with this method">
<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" Label="Upload File (Generic Request Example)" Desc="This example shows how to upload a file using generic request. You might have to add file-manager-permission to your OAuth App else you might get message=This oauth-token (CJT87I6) does not have proper permissions! (requires any of [file-manager-access]). For more information please refer to this link https://developers.hubspot.com/docs/api/files/files">
<Code>
<![CDATA[SELECT *
FROM generic_request
WITH(
Url='filemanager/api/v3/files/upload'
, RequestMethod='POST'
, Filter ='$.objects[*]'
, Body='file=@c:\temp\dump.png
folderPath=/
fileName=my_dump.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" Label="Insert into Contacts" Desc="Inserts contacts" >
<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" Label="Update Contacts" Desc="Updates contacts in your account" >
<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" Label="Delete a contact" Desc="Deletes a contact">
<Code>
<![CDATA[DELETE FROM Contacts Where Id=1234]]>
</Code>
</Example>
<Example Group="ODBC" Label="Create multiple records - (BULK read / write from external source)" Desc="This examples shows how to perform bulk update using SOURCE clause. It reads data from external system (in this example MS SQL Server) and sends data to Hubspot using Bulk API">
<Code>
<![CDATA[INSERT INTO Contacts
SOURCE(
'MSSQL' --ODBC or OLEDB
,'Data Source=localhost;Initial Catalog=Test;Integrated Security=true'
,'
''bob'' as firstname, ''rock'' as firstname, ''new-email1@abc.com'' as email
UNION
''sam'' as firstname, ''smith'' as firstname, ''new-email2@abc.com'' as email
)]]>
</Code>
</Example>
<Example Group="ODBC" Label="Delete multiple records - (BULK read / write from external source)" Desc="This examples shows how to perform bulk delete using SOURCE clause. It reads data from external system (in this example MS SQL Server) and sends data to Hubspot using Bulk API">
<Code>
<![CDATA[DELETE FROM Contacts
SOURCE(
'MSSQL' --ODBC or OLEDB
,'Data Source=localhost;Initial Catalog=Test;Integrated Security=true'
,'select 104897 as Id
UNION
select 104898 as Id'
)
]]>
</Code>
</Example>
<Example Group="ODBC" Label="Update multiple records - (BULK read / write from external source)" Desc="This examples shows how to perform bulk update using SOURCE clause. It reads data from external system (in this example MS SQL Server) and sends data to Hubspot using Bulk API">
<Code>
<![CDATA[UPDATE Contacts
SOURCE(
'MSSQL' --ODBC or OLEDB
,'Data Source=localhost;Initial Catalog=Test;Integrated Security=true'
,'select 104811 as Id, ''new-email1@abc.com'' as email
UNION
select 104812 as Id, ''new-email2@abc.com'' as email
)]]>
</Code>
</Example>
</Examples>
</ApiConfig>