diff --git a/.gitignore b/.gitignore index 66ddb1108..3ed88251e 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,5 @@ _site/ /pages/connector-authentication/.vs/VSWorkspaceState.json /.vs/slnx.sqlite /.vs/docs/v16/.suo +/.vs/docs/config/applicationhost.config +/.vs/VSWorkspaceState.json diff --git a/_data/sidebars/cyclr_sidebar.yml b/_data/sidebars/cyclr_sidebar.yml index 2ee9a34f4..3e6586703 100644 --- a/_data/sidebars/cyclr_sidebar.yml +++ b/_data/sidebars/cyclr_sidebar.yml @@ -39,7 +39,7 @@ entries: - title: Adding Custom Fields url: /adding-custom-fields output: web, pdf - + - title: Integration Template Versioning url: /integration-template-versioning output: web, pdf @@ -123,7 +123,7 @@ entries: output: web, pdf - title: HTTP Basic Authentication - url: /http-basic-authentication + url: /basic-authentication output: web, pdf - title: OAuth Authentication @@ -173,7 +173,7 @@ entries: - title: Wait Until Steps url: /wait-until output: web, pdf - + - title: Wait All Steps url: /wait-all output: web, pdf @@ -182,6 +182,18 @@ entries: output: web, pdf folderitems: + - title: Connector Standards + url: /connector-standards + output: web, pdf + + - title: Connector Level Standards + url: /connector-level-standards + output: web, pdf + + - title: Method Level Standards + url: /method-level-standards + output: web, pdf + - title: Introduction url: /custom-connector-introduction output: web, pdf @@ -198,6 +210,10 @@ entries: url: /custom-connector-fields output: web, pdf + - title: Dynamic Custom Fields + url: /dynamic-custom-fields + output: web, pdf + - title: Reference url: /custom-connector-reference output: web, pdf @@ -242,6 +258,10 @@ entries: url: /launch-deployment output: web, pdf + - title: Deploying Marketplace + url: /marketplace-deployment + output: web, pdf + - title: Handling Callback url: /handling-callback output: web, pdf @@ -274,6 +294,14 @@ entries: output: web, pdf folderitems: + - title: Bronto + url: /bronto-installation + output: web, pdf + + - title: Bullhorn + url: /bullhorn-connector + output: web, pdf + - title: Capsule url: /capsule-connector output: web, pdf @@ -282,14 +310,26 @@ entries: url: /clover-connector output: web, pdf - - title: Microsoft Dynamics - url: /dynamics-connector + - title: Club Ready Connector + url: /clubready-connector + output: web, pdf + + - title: Cyclr IP Whitelisting + url: /cyclr-ip-whitelisting output: web, pdf - - title: Facebook + - title: Entity Cross Reference + url: /entity-cross-reference-connector + output: web, pdf + + - title: Facebook Marketing Authentication url: /facebook-connector output: web, pdf + - title: Facebook Offline Conversions Authentication + url: /facebook-offline-conversions-connector + output: web, pdf + - title: FullContact url: /fullcontact-connector output: web, pdf @@ -298,22 +338,78 @@ entries: url: /google-connector output: web, pdf - - title: Intercom + - title: Hubspot Connector Guide + url: /hubspot-connector + output: web, pdf + + - title: Intercom Authentication url: /intercom-connector output: web, pdf - - title: Salesforce + - title: MYOB AccountRight Connector + url: /myob-accountright-connector + output: web, pdf + + - title: Microsoft Dynamics + url: /dynamics-connector + output: web, pdf + + - title: Mindbody Connector Guide + url: /mindbody-connector + output: web, pdf + + - title: Netsuite Connector Guide + url: /netsuite-connector + output: web, pdf + + - title: Optimail Connector Guide + url: /optimail-connector + output: web, pdf + + - title: Pipedrive Connector Guide + url: /pipedrive-connector.html + output: web, pdf + + - title: Salesforce Authentication url: /salesforce-connector output: web, pdf + - title: Saleforce Chatter Authentication + url: /salesforce-chatter-connector + output: web, pdf + + - title: Salesforce Upsert Setup + url: /salesforce-upsert-setup + output: web, pdf + + - title: Slack Authentication + url: /slack + output: web, pdf + + - title: Squareup Authentication + url: /squareup-connector + output: web, pdf + - title: Sugar CRM url: /sugarcrm-connector output: web, pdf - - title: Bullhorn - url: /bullhorn-connector + - title: Twilio Connector Guide + url: /twilio-connector.html output: web, pdf - - title: Cyclr IP Whitelisting - url: /cyclr-ip-whitelisting + - title: Vincere Connector Guide + url: /vincere-connector + output: web, pdf + + - title: Wordpress Authentication + url: /wordpress-connector.html + output: web, pdf + + - title: Xero Private Instance Authentication + url: /xero-private-connector + output: web, pdf + + - title: Zendesk Webhooks + url: /zendesk-connector output: web, pdf diff --git a/_includes/shuffle.html b/_includes/shuffle.html index 60582d53c..b76e700d2 100644 --- a/_includes/shuffle.html +++ b/_includes/shuffle.html @@ -172,15 +172,16 @@
Connector Guides
Find out more about our connectors, including how to setup OAuth with your credentials. - +
diff --git a/images/clubready1.png b/images/clubready1.png new file mode 100644 index 000000000..37bfa1a5e Binary files /dev/null and b/images/clubready1.png differ diff --git a/images/custom-fields-lookup-method.png b/images/custom-fields-lookup-method.png new file mode 100644 index 000000000..058563afc Binary files /dev/null and b/images/custom-fields-lookup-method.png differ diff --git a/images/dynamics_custom_data_format.png b/images/dynamics_custom_data_format.png new file mode 100644 index 000000000..a85ebb408 Binary files /dev/null and b/images/dynamics_custom_data_format.png differ diff --git a/images/dynamics_custom_data_sample.png b/images/dynamics_custom_data_sample.png new file mode 100644 index 000000000..a30610c42 Binary files /dev/null and b/images/dynamics_custom_data_sample.png differ diff --git a/images/dynamics_custom_setup.png b/images/dynamics_custom_setup.png new file mode 100644 index 000000000..a293095d1 Binary files /dev/null and b/images/dynamics_custom_setup.png differ diff --git a/images/dynamics_custom_test_generate.png b/images/dynamics_custom_test_generate.png new file mode 100644 index 000000000..d32bda854 Binary files /dev/null and b/images/dynamics_custom_test_generate.png differ diff --git a/images/dynamics_custom_test_run.png b/images/dynamics_custom_test_run.png new file mode 100644 index 000000000..770867c40 Binary files /dev/null and b/images/dynamics_custom_test_run.png differ diff --git a/images/for-enhanced-custom-fields.png b/images/for-enhanced-custom-fields.png new file mode 100644 index 000000000..64be7ff74 Binary files /dev/null and b/images/for-enhanced-custom-fields.png differ diff --git a/images/integration-tokens.png b/images/integration-tokens.png new file mode 100644 index 000000000..c1baa2199 Binary files /dev/null and b/images/integration-tokens.png differ diff --git a/images/mindbody_apikey.png b/images/mindbody_apikey.png new file mode 100644 index 000000000..43aac3bad Binary files /dev/null and b/images/mindbody_apikey.png differ diff --git a/images/velocify_custom_field.png b/images/velocify_custom_field.png new file mode 100644 index 000000000..f5bbad318 Binary files /dev/null and b/images/velocify_custom_field.png differ diff --git a/images/vend_setup_img_2.png b/images/vend_setup_img_2.png new file mode 100644 index 000000000..6be81033a Binary files /dev/null and b/images/vend_setup_img_2.png differ diff --git a/images/vend_setup_img_3.png b/images/vend_setup_img_3.png new file mode 100644 index 000000000..60443974a Binary files /dev/null and b/images/vend_setup_img_3.png differ diff --git a/images/vend_setup_img_5.png b/images/vend_setup_img_5.png new file mode 100644 index 000000000..dc478929c Binary files /dev/null and b/images/vend_setup_img_5.png differ diff --git a/images/vend_setup_img_6.png b/images/vend_setup_img_6.png new file mode 100644 index 000000000..b862efeb0 Binary files /dev/null and b/images/vend_setup_img_6.png differ diff --git a/images/wordpress-auth.png b/images/wordpress-auth.png new file mode 100644 index 000000000..c12b2d472 Binary files /dev/null and b/images/wordpress-auth.png differ diff --git a/images/wordpress-cyclr-api-authentication.png b/images/wordpress-cyclr-api-authentication.png new file mode 100644 index 000000000..79e5ae813 Binary files /dev/null and b/images/wordpress-cyclr-api-authentication.png differ diff --git a/images/wordpress-oauth-credentials.png b/images/wordpress-oauth-credentials.png new file mode 100644 index 000000000..ffc870431 Binary files /dev/null and b/images/wordpress-oauth-credentials.png differ diff --git a/pages/connector-authentication/Salesforce_External_ID_Setup.md b/pages/connector-authentication/Salesforce_External_ID_Setup.md index 1ff100f78..3c37e4774 100644 --- a/pages/connector-authentication/Salesforce_External_ID_Setup.md +++ b/pages/connector-authentication/Salesforce_External_ID_Setup.md @@ -9,7 +9,9 @@ tags: [connector] In order to use the Upsert Account or Upsert Contact methods you must first setup a custom external ID field within the object in salesforce. -**External ID Creation** +Setting up the method will be a slightly different process depending upon whether you are using Salesforce Classic, or Lightning Experience. + +**External ID Creation - Salesforce Classic** * To add a custom external ID field to an object in Salesforce first click the `Setup` button in the top right of the screen. ![](./images/external_id_setup_button.PNG) @@ -24,11 +26,35 @@ In order to use the Upsert Account or Upsert Contact methods you must first setu * Check `Visible` and press `Next` and then `Save`. ![](./images/salesforce_custom_fields_visible.PNG) -**Using the Upsert Methods** +**External ID Creation - Lightning Experience** + +* To add a custom external ID field to an object in Lightning Experience first click the `Setup` cog in the top right of the screen, and select `Setup`. +![](./images/external_id_setup_button-lightning.PNG) + +* Scroll down to the `Platform Tools` label and click `Objects and Fields -> Object Manager`. +![](./images/object_manager_menu_item-lightning.png) + +* Once on the Object Manager screen, select the object you wish to add an external field for. For example, if you are setting up an `Upsert Account` method, select `Account`. +![](./images/object_manager-lightning.png) + +* Select the `Fields & Relationships` from the menu and click the `New` button. +![](./images/new_field-lightning.png) +* Select the `Text` checkbox and press `Next`. +* Enter the Field Label and Length. Select `Do not allow duplicate values` and `Treat "ABC" and "abc" as different values`. And Select `Set this field as the unique record identifier from an external system`, then press `Next`. +![](./images/salesforce_custom_fields_setup.PNG) +* Check `Visible` and press `Next` and then `Save`. +![](./images/salesforce_custom_fields_visible.PNG) + + +**Using the Upsert Methods - Salesforce Classic** Once you have setup your External ID field you are ready to use the corresponding Upsert method. -* Copy the API Name of your External ID field from Salesforce. +* Copy the API Name of your External ID field from Salesforce: + +* Salesforce Classic ![](./images/salesforce_custom_fields_api_name.PNG) +* Lightning Experience +![](./images/salesforce_custom_fields_api_name-lightning.PNG) * Go to setup the Upsert method in Cyclr, and insert the copied value into the 'External ID Field', and map your External ID value to the 'External ID' field. -![](./images/salesforce_custom_fields_cyclr.PNG) \ No newline at end of file +![](./images/salesforce_custom_fields_cyclr.PNG) diff --git a/pages/connector-authentication/Velocify.md b/pages/connector-authentication/Velocify.md new file mode 100644 index 000000000..beaeedd02 --- /dev/null +++ b/pages/connector-authentication/Velocify.md @@ -0,0 +1,22 @@ +--- +title: Velocify Connector Guide +sidebar: cyclr_sidebar +permalink: velocify-connector +tags: [connector] +--- + +Creating Leads in Velocify +--------------- + +In order to create leads using the Velocify connector there are a few preliminary steps to be undertaken first: + +1. Find and run the *List Fields* method. + +2. Once successfully run you should have an XML object containing all the fields that you can use. + +3. Get the details of the fields you wish to use in the *Create Lead* method. + +4. In connector testing add the fields you wish to use to the connector in the following format: `soapenv:Envelope.Field_ID_#` where `#` is the ID of the field you wish to interact with e.g. if the First Name field had an ID of 1 then the *Field Location* you would create would be `soapenv:Envelope.Field_ID_1`, and it would be best to set the *Display Name* to `First Name`. +![](./images/velocify_custom_field.png) + +5. Repeat step 4 for every field you wish to have access to to, and you're ready to start creating leads. diff --git a/pages/connector-authentication/Vincere.md b/pages/connector-authentication/Vincere.md index 279ad9734..1a2378b83 100644 --- a/pages/connector-authentication/Vincere.md +++ b/pages/connector-authentication/Vincere.md @@ -10,12 +10,14 @@ Vincere Setup For Cyclr to connect with the Vincere API you will need to select a suitable user account within Vincere. This account will require setting up, the steps to complete this are below. +_NOTE: We have experienced issues when using the Safari web browser so would recommend using another browser._ + 1. Login to the Vincere Application using the account specific URL, e.g. {%raw%}https://{{yourdomain}}.vincere.io/loginForm.do{%endraw%} 2. Select Settings > Marketplace 3. Select the API Tab 4. Click "Create new token" button, this will display the API Key 5. Click "Create new Client ID" button, this will display the Client ID -6. Enter the callback URL using your Cyclr Partner's **Service Domain** into the "Callback URL" field, e.g.
{% raw %}https://app-h.cyclr.com/connector/callback{% endraw %}.
Your Service Domain can be found in your Cyclr Partner Console under Settings > Integration Settings > Service Domain. +6. Enter the callback URL using your Cyclr Partner's **Service Domain** into the "Callback URL" field, e.g.
{% raw %}https://{{Your Cyclr service domain e.g. app-h.cyclr.com}}/connector/callback{% endraw %}.
Your Service Domain can be found in your Cyclr Partner Console under Settings > Integration Settings > Service Domain. Connector Setup diff --git a/pages/connector-authentication/capsule-v2.md b/pages/connector-authentication/capsule-v2.md index e0ef86d54..c5e969bd4 100644 --- a/pages/connector-authentication/capsule-v2.md +++ b/pages/connector-authentication/capsule-v2.md @@ -25,11 +25,10 @@ Here is the official documentation for creating a Capsule OAuth 2 app: **URL**: Your Cyclr service domain, e.g. https://app-h.cyclr.com/. This can be found in your Cyclr Console under Settings > Integration Settings > Service Domain. - **Redirect URL**: you must add 2 callback URLs to allow Capsule to be used in your Cyclr Console templates as well as your Cyclr accounts. + **Redirect URL**: you must add a callback URL to allow Capsule to be used in your Cyclr Console and its accounts. - These URLs are: + The URL is: - * {% raw %}https://{{Your Cyclr console domain e.g. my.cyclr.com or my.cyclr.uk}}/connector/callback{% endraw %} * {% raw %}https://{{Your Cyclr service domain e.g. app-h.cyclr.com}}/connector/callback{% endraw %} **Application Type**: Web Application diff --git a/pages/connector-authentication/clubready.md b/pages/connector-authentication/clubready.md new file mode 100644 index 000000000..c30177603 --- /dev/null +++ b/pages/connector-authentication/clubready.md @@ -0,0 +1,45 @@ +--- +title: Club Ready Connector +sidebar: cyclr_sidebar +permalink: clubready-connector +tags: [connector] +--- + +Club Ready Setup +--------------- +**ApiKey Setup** + +In order to access the API, you will need an 'API Key' configured, please email support@clubready.com to request more information and obtain an API Key. You will need to sign an agreement. + +**How to find your Store Id** + +* Log in to your ClubReady account. +* Click on your profile image on the top right. +* Per the image below 8383 is your store id (55401995 is your user id, you won't need this part) + +![](./images/clubready1.png) + +Connector Setup +--------------- +The Connector can be installed using the credentials obtained in the above steps: + +**API Key**: `your_api_key` + +**Store ID**: `your_store_id` + +**Chain ID**: `your_chain_key` + +Basic Terms +--------------- +A list of some of the basic terms used within the ClubReady API. + +* **Chain/Corp** - A corporate entity that typically will have more than one Store/Club in ClubReady. +* **Store** - a single Location (club) within the ClubReady system. +* **Prospect/Lead** - a User in the ClubReady system that is not yet buying services (customer) or does not yet have a membership (member). +* **Service** - a one-on-one activity between a staff person (Trainer/coach) and a customer, typically referred to as Personal Training. +* **Class** - any activity between a staff person (Trainer/coach) and more than one customer. Small Group, and Group-X. +* **Staff Types** - a "role" that Staff members are assigned to through the administrative interface in ClubReady in which you can assign permissions. +* **Prospect Type** - a way to categorize Leads in ClubReady. Based on a ProspectTypeId, a Lead can be pushed through automated work flows for marketing and sales actions/tasks. + + + diff --git a/pages/connector-authentication/dynamics-crm-custom-objects.md b/pages/connector-authentication/dynamics-crm-custom-objects.md new file mode 100644 index 000000000..9e73c663d --- /dev/null +++ b/pages/connector-authentication/dynamics-crm-custom-objects.md @@ -0,0 +1,46 @@ +--- +title: Microsoft Dynamics Custom Objects +sidebar: cyclr_sidebar +permalink: dynamics-custom-connector +tags: [connector] +--- + +# Dynamics CRM Custom Objects Connector Setup # + +This connector is designed to work with a single custom entity. When working with more than one, you must install a separate Dynamics CRM connector for each custom entity type. + +### Installation + +For details on how to authenticate this connector click [here](dynamics-crm-online.md). See the image below for an example: + +When setting up the connector you will also have to enter the name of the custom entity you wish to interact with. + +![](../images/dynamics_custom_setup.png) + +*Note: You will have to add an 's' to the end of the name in order for it to function correctly e.g. `custom_item` would become `custom_items`.* + +### Adding Request and Response Fields + +All methods come without request or response fields. Before using the connector you will have to add them where necessary. To add response fields to `GET` methods, go into the connector settings and expand the method you wish to add fields to. + +Test the method: + +![](../images/dynamics_custom_test_run.png) + +If data is returned, copy the body of the response and open the `Generate Fields` box: + +![](../images/dynamics_custom_test_generate.png) + +Paste the response data into the text box and click generate: + +![](../images/dynamics_custom_data_sample.png) + +Your fields should now exist, like the example below: + +![](../images/dynamics_custom_data_format.png) + +Now you can format the display names to make them more descriptive of what they represent. The display name is what you will see in the Cycle itself. + +To create request fields for `POST` and `PUT` methods, the method is the same as the above, except that you must know the structure of the entity you are going to create. + +Once that is all setup, you should be able to use the connector as you would any other. \ No newline at end of file diff --git a/pages/connector-authentication/dynamics-crm-online.md b/pages/connector-authentication/dynamics-crm-online.md index e7478997a..fa2e02681 100644 --- a/pages/connector-authentication/dynamics-crm-online.md +++ b/pages/connector-authentication/dynamics-crm-online.md @@ -27,11 +27,10 @@ We will summarise it in a few points: **Sign-on URL**: Your Cyclr service domain, e.g. https://app-h.cyclr.com/. This can be found in your Cyclr Console under Settings > Integration Settings > Service Domain. - **Reply URLs**: you must add 2 callback URLs to allow Dynamics CRM to be used in your Cyclr Console templates as well as your Cyclr accounts. + **Reply URLs**: you must add a callback URL to allow Dynamics CRM to be used in your Cyclr Console and its accounts. - These URLs are: + The URL is: - * {% raw %}https://{{Your Cyclr console domain e.g. my.cyclr.com or my.cyclr.uk}}/connector/callback{% endraw %} * {% raw %}https://{{Your Cyclr service domain e.g. app-h.cyclr.com}}/connector/callback{% endraw %} **Multi-tenanted**: Yes diff --git a/pages/connector-authentication/google.md b/pages/connector-authentication/google.md index 0f24ec81f..ead39f883 100644 --- a/pages/connector-authentication/google.md +++ b/pages/connector-authentication/google.md @@ -7,15 +7,20 @@ tags: [connector] # Google # -Partner Setup -------------- +Introduction +------------ -Google apps, such as Google Sheets, Google Drive, etc., use OAuth 2. You should use your Google account to create authorization credentials first and get an **OAuth client ID** and **client secret**. +Google apps, such as Google Sheets, Google Drive, etc., use OAuth 2. You need a Google account to create authorization credentials and get an **OAuth client ID** and **client secret**. These are then added to the appropriate Google connector in the Commectors tab of your Cyclr Console. Here is the official documentation for creating authorization credentials: [https://developers.google.com/identity/protocols/OAuth2WebServer#creatingcred](https://developers.google.com/identity/protocols/OAuth2WebServer#creatingcred) +OAuth2 Setup +------------ + +Here are the steps that you need to take. + 1. Sign up for a Google account; or log into your existing account if you already have one. 2. Go to [https://console.developers.google.com/apis/credentials](https://console.developers.google.com/apis/credentials) @@ -27,11 +32,10 @@ Here is the official documentation for creating authorization credentials: **URL**: Your Cyclr service domain, e.g. https://app-h.cyclr.com/. This can be found in your Cyclr Console under Settings > Integration Settings > Service Domain. - **Redirect URL**: you must add 2 callback URLs to allow Google to be used in your Cyclr Console templates as well as your Cyclr accounts. - - These URLs are: + **Redirect URL**: you must add a callback URL to allow Google to be used in your Cyclr Console and its accounts. - * {% raw %}https://{{Your Cyclr console domain e.g. my.cyclr.com or my.cyclr.uk}}/connector/callback{% endraw %} + The URL is: + * {% raw %}https://{{Your Cyclr service domain e.g. app-h.cyclr.com}}/connector/callback{% endraw %} 3. Go to Cyclr Console (https://my.cyclr.com/console) > Connectors > Connector Library > Google Sheets/Drive/etc. > Setup @@ -45,7 +49,7 @@ Your Google connector is now set up! You can test it by installing it in one of API Integration Guide --------------------- -Google connectors use OAuth 2 Authorisation Code flow. It requires your end users to sign into Google and grant Cyclr access to their account. +Google connectors use OAuth 2 Authorisation Code flow. It requires your end users to sign into Google and grant you access to their account. To do this, call _/UpdateAccountConnectorOAuth_ with a one-time sign-in token. diff --git a/pages/connector-authentication/intercom.md b/pages/connector-authentication/intercom.md index e582ff42d..7c8d77c81 100644 --- a/pages/connector-authentication/intercom.md +++ b/pages/connector-authentication/intercom.md @@ -16,11 +16,10 @@ The official Intercom documentation describing the process can be found here: * [Creating an App](https://developers.intercom.com/building-apps/docs/get-started-developing-on-intercom) * [Setting up OAuth](https://developers.intercom.com/building-apps/docs/setting-up-oauth) -**Redirect URL**: you must add 2 callback URLs to allow Intercom to be used in your Cyclr Console templates as well as your Cyclr accounts. +**Redirect URL**: you must add a callback URL to allow Intercom to be used in your Cyclr Console and its accounts. -These URLs are: +The URL is: -* {% raw %}https://{{Your Cyclr console domain e.g. my.cyclr.com or my.cyclr.uk}}/connector/callback{% endraw %} * {% raw %}https://{{Your Cyclr service domain e.g. app-h.cyclr.com}}/connector/callback{% endraw %} Your Cyclr Partner **Service Domain** can be found in your Cyclr Console under Settings > Integration Settings. diff --git a/pages/connector-authentication/magento-2.md b/pages/connector-authentication/magento-2.md new file mode 100644 index 000000000..ecec7f1d0 --- /dev/null +++ b/pages/connector-authentication/magento-2.md @@ -0,0 +1,30 @@ +--- +title: Magento 2 Connector +sidebar: cyclr_sidebar +permalink: magento-2-connector +tags: [connector] +--- + +Magento 2 Setup +--------------- +**ApiKey Setup** + +To authenticate the connector you will first have to create an API Key: + +1. Log in to the admin portal, and click `System` > `Extensions` > `Integrations`. +2. Click `Add New Integration`. +3. Enter a unique name for the integration in the `Name` field, and enter your admin password in the `Your Password` field, leaving all other fields blank. +4. Click the API tab and select the Magento resources the integration should be able to access. +5. Click `Save`. +6. Click the `Activate` link next to your new integration. +7. Click `Allow` and copy the value in the `Access Token` field. + +![](./images/integration-tokens.png) + +Now that you have your Access token go to the `Connector Setup` page in Cyclr. + +1. On the first page you should enter the domain of your Magento site e.g. `https://my-magento-site.com` and click `Next`. +2. Paste your `Access Token` into the `API Key` field and click `Next`. +3. Your connector is now setup and ready to go. + + diff --git a/pages/connector-authentication/mindbody.md b/pages/connector-authentication/mindbody.md new file mode 100644 index 000000000..859225436 --- /dev/null +++ b/pages/connector-authentication/mindbody.md @@ -0,0 +1,42 @@ +--- +title: Mindbody Connector Guide +sidebar: cyclr_sidebar +permalink: mindbody-connector +tags: [connector] +--- + +Mindbody Setup +--------------- + +To setup the connector you need to access the configuration information within Mindbody. To do this a Mindbody [developer account](https://developers.mindbodyonline.com/Home/LogIn) will be needed. + +Mindbody have two environments: +* _Sandbox_. Access to the sandbox environment following these [instructions](https://developers.mindbodyonline.com/PublicDocumentation/V6#using-sandbox). + + Site ID = -99 + + Username = Siteowner + + Password = apitest1234 + +* _Production_ You will have to fill out a form and apply for access see these [instructions](https://developers.mindbodyonline.com/PublicDocumentation/V6#taking-application-live). + +The API key can be found by going to Account > API Credentials. You can either create an API key or Show an existing key. + +![](./images/mindbody_apikey.png) + +You can also find the Site ID by following [this](https://support.mindbodyonline.com/s/article/206398178-How-do-I-find-my-Client-ID?language=en_US) guide. + +Connector Setup +--------------- + +The Connector now can be installed using the credentials obtained in the above steps: + +**Site ID**: `your_site_id` + +**API-key**: `your_api_key` + +**Username**: `username` + +**Password**: `password` + diff --git a/pages/connector-authentication/myob-accountright.md b/pages/connector-authentication/myob-accountright.md index 3c98ecabe..a2f0ef2be 100644 --- a/pages/connector-authentication/myob-accountright.md +++ b/pages/connector-authentication/myob-accountright.md @@ -21,13 +21,13 @@ The official MYOB AccountRight Live documentation for creating an **App** can be ![MYOB Account Right App Setup](./images/myob-accountright-create-an-app.png) -The **Redirect Uri** value should be set to contain both the URL of your Cyclr console *and* the URL hosting your enduser Accounts, separated by a comma: +The **Redirect Uri** value should be set to contain the URL hosting your enduser Accounts: -```https://my.cyclr.[com/uk]/connector/callback,https://[Console Service Domain]/connector/callback``` +```https://[Console Service Domain]/connector/callback``` For example: -```https://my.cyclr.com/connector/callback,https://app-h.cyclr.com/connector/callback``` +```https://app-h.cyclr.com/connector/callback``` Once you've created your MYOB App, you'll be able to see its **Key** and **Secret** values which are used as the OAuth Client ID and Client Secret, respectively. diff --git a/pages/connector-authentication/salesforce.md b/pages/connector-authentication/salesforce.md index 09db55523..b64de3cc6 100644 --- a/pages/connector-authentication/salesforce.md +++ b/pages/connector-authentication/salesforce.md @@ -5,23 +5,19 @@ permalink: salesforce-connector tags: [connector] --- -# Salesforce # - -Partner Setup -------------- +## Partner Setup Salesforce uses OAuth 2 for remote API access. You must register Cyclr within Salesforce as your own Connected App to receive OAuth Client ID and Client Secret values to enable Cyclr to authenticate with Salesforce. The official Salesforce documentation for creating a **Connected App** can be found [here](https://help.salesforce.com/articleView?id=connected_app_create.htm). -**Salesforce set up – Register Your Application** -------------------------------------------------- +### Salesforce Setup – Register Your Application -### **Introduction** +#### Introduction You can register for a free Salesforce developer account or log into your existing Salesforce account if you have one.  You can use any Salesforce account to create a Connected App. It doesn’t have to be a developer account. -### **Create your App within Salesforce:** +#### Create your App within Salesforce The steps below are for Salesforce Classic. Settings are similar for Lightning Experience. @@ -31,9 +27,10 @@ The steps below are for Salesforce Classic. Settings are similar for Lightning E * choose **Apps** * from the **Connected Apps** table click the **New** button + When the **New Connected App** screen is shown, complete the form as follows: -#### **Basic Information** +#### Basic Information **Connected App Name:** enter a name for your application @@ -41,15 +38,14 @@ When the **New Connected App** screen is shown, complete the form as follows: **Contact Email:** your email address -#### **API (Enable OAuth Settings)** +#### API (Enable OAuth Settings) Tick the **Enable OAuth Settings** box to display further options. -**Callback URL**: you must add 2 callback URLs to allow Salesforce to be used in your Cyclr Console templates as well as your Cyclr accounts. +**Callback URL**: you must add a callback URL to allow Salesforce to be used in your Cyclr Console and its accounts. -These URLs are: +The URLs is: -* {% raw %}https://{{Your Cyclr console domain e.g. my.cyclr.com or my.cyclr.uk}}/connector/callback{% endraw %} * {% raw %}https://{{Your Cyclr service domain e.g. app-h.cyclr.com}}/connector/callback{% endraw %} **Selected OAuth Scopes**: you must add the following 2 Scopes to enable Cyclr to use your App: @@ -63,10 +59,9 @@ The OAuth settings should look like this: After saving your App, make a note of your **Consumer Key** and **Consumer Secret** values as you’ll need to enter these into Cyclr. -**Cyclr Set up** ----------------- +### Cyclr Setup -Set up your Salesforce App within Cyclr: +Setup your Salesforce App within Cyclr: * go to your **Cyclr Console** * click the **Connectors** menu along the top @@ -80,16 +75,30 @@ Enter the following values: **Client Secret**: the _Consumer Secret_ of your Salesforce Connected App -Your Salesforce Connector is now set up! You can test it by installing it in one of your Cyclr accounts and executing one of the methods to confirm it can return some data. +Your Salesforce Connector is now setup! You can test it by installing it in one of your Cyclr accounts and executing one of the methods to confirm it can return some data. + + +## Enduser Salesforce Account Setup + +For the best experience when using the Salesforce Connector, and to reduce the frequency that Cyclr must obtain a new Access Token and avoid some connection issues, ensure the following Session Settings have been set: + +Log in to the Salesforce organization, go to Setup, then use the Search to find "Session Settings". -**FAQ** -------- +Under **Session Timeout** +* Timeout Value: set this for as long as possible, e.g. 24 hours. +* Force logout on session timeout: disable this. + +Under **Session Settings** +* Lock sessions to the IP address from which they originated: disable this. + + + +## FAQ ### Expired access/refresh token errors Salesforce only allows up to five unique access/refresh token pairs to be issued for each user in a Connected App. Older tokens will be automatically revoked by Salesforce.  [More information](https://help.salesforce.com/articleView?id=remoteaccess_request_manage.htm). - ### Disabling Assignment Rules When creating Accounts, Cases, or Leads in Salesforce, it may be desirable to prevent Salesforce's "active assignment rules" from being applied. This very much depends on what assignment rules have been setup within Salesforce so will depend on the enduser's requirements. diff --git a/pages/connector-authentication/salesforce_chatter.md b/pages/connector-authentication/salesforce_chatter.md new file mode 100644 index 000000000..d5ac1f42f --- /dev/null +++ b/pages/connector-authentication/salesforce_chatter.md @@ -0,0 +1,93 @@ +--- +title: Salesforce Chatter Authentication +sidebar: cyclr_sidebar +permalink: salesforce-chatter-connector +tags: [connector] +--- + +# Salesforce Chatter # + +Partner Setup +------------- + +Salesforce uses OAuth 2 for remote API access. You must register Cyclr within Salesforce as your own Connected App to receive OAuth Client ID and Client Secret values to enable Cyclr to authenticate with Salesforce. + +The official Salesforce documentation for creating a **Connected App** can be found [here](https://help.salesforce.com/articleView?id=connected_app_create.htm). + +**Salesforce set up - Register Your Application** +------------------------------------------------- + +### **Introduction** + +You can register for a free Salesforce developer account or log into your existing Salesforce account if you have one. You can use any Salesforce account to create a Connected App. It doesn't have to be a developer account. + +### **Create your App within Salesforce:** + +The steps below are for Salesforce Classic. Settings are similar for Lightning Experience. + +* Log into the Salesforce account +* click **Setup** in the top right +* from the side menu down the left, under the **Build** heading click **Create** +* choose **Apps** +* from the **Connected Apps** table click the **New** button + +When the **New Connected App** screen is shown, complete the form as follows: + +#### **Basic Information** + +**Connected App Name:** enter a name for your application + +**API Name:** this will default to the same value as your Connected App Name + +**Contact Email:** your email address + +#### **API (Enable OAuth Settings)** + +Tick the **Enable OAuth Settings** box to display further options. + +**Callback URL**: you must add a callback URL to allow Salesforce to be used in your Cyclr Console and its accounts. + +The URL is: + +* {% raw %}https://{{Your Cyclr service domain e.g. app-h.cyclr.com}}/connector/callback{% endraw %} + +**Selected OAuth Scopes**: you must add the following 2 Scopes to enable Cyclr to use your App: + +* Full access (full) +* Perform requests on your behalf at any time (refresh\_token, offline\_access) + +The OAuth settings should look like this: + +![Salesforce OAuth Partner Setup](./images/salesforce-partner-setup-oauth.png) + +After saving your App, make a note of your **Consumer Key** and **Consumer Secret** values as you'll need to enter these into Cyclr. + +**Cyclr Salesforce Chatter Connector Set up** +---------------- + +Set up Salesforce Chatter within Cyclr: + +* Go to your **Cyclr Console** +* Click the **Connectors** menu along the top +* Choose Connector Library +* Scroll down to **Salesforce Chatter** +* Click the **Setup** button + +Enter the following values: + +**Client ID**: the _Consumer Key_ of your Salesforce Connected App + +**Client Secret**: the _Consumer Secret_ of your Salesforce Connected App + +**Instance URL**: This is the url of your Salesforce server instance e.g. "https://mysalesforce.com" + +**Is Sandbox**: Set this to "true" if you wish to test the connector against a sandbox instance of Salesfoce + +Your Salesforce Chatter Connector is now set up! You can test it by installing it in one of your Cyclr accounts and executing one of the methods to confirm it can return some data. + +**FAQ** +------- + +### Expired access/refresh token errors + +Salesforce only allows up to five unique access/refresh token pairs to be issued for each user in a Connected App. Older tokens will be automatically revoked by Salesforce. [More information](https://help.salesforce.com/articleView?id=remoteaccess_request_manage.htm). \ No newline at end of file diff --git a/pages/connector-authentication/slack.md b/pages/connector-authentication/slack.md index 89b8bf039..69b2b5257 100644 --- a/pages/connector-authentication/slack.md +++ b/pages/connector-authentication/slack.md @@ -21,11 +21,10 @@ After you've created your App, set the **Redirect URLs** under the **Add feature ![Slack - Permissions](./images/slack-permissions.png) -**Redirect URL**: you must add 2 callback URLs to allow Intercom to be used in your Cyclr Console templates as well as your Cyclr accounts. +**Redirect URL**: you must add a callback URL to allow Intercom to be used in your Cyclr Console and its accounts. -These URLs are: +The URL is: -* {% raw %}https://{{Your Cyclr console domain e.g. my.cyclr.com or my.cyclr.uk}}/connector/callback{% endraw %} * {% raw %}https://{{Your Cyclr service domain e.g. app-h.cyclr.com}}/connector/callback{% endraw %} Your Cyclr Partner **Service Domain** can be found in your Cyclr Console under Settings > Integration Settings. diff --git a/pages/connector-authentication/vend.md b/pages/connector-authentication/vend.md new file mode 100644 index 000000000..140da536a --- /dev/null +++ b/pages/connector-authentication/vend.md @@ -0,0 +1,43 @@ +--- +title: Vend Connector Guide +sidebar: cyclr_sidebar +permalink: vend-connector +tags: [connector] +--- + +## Authentication + +--- + +Vend uses OAuth 2.0 for authentication. The following are the steps needed to give this connector authorization to access data from Vend stores: + +### Vend Setup + +* If you haven't done so already, [create a developer account](https://developers.vendhq.com/developer/sign-up) with Vend. + +> NOTE: Your developer account credentials are independent of your Vend account so your existing Vend credentials will not work here. + +* Once logged in go to [My Applications](https://developers.vendhq.com/developer/applications) page. +* Create a new application by clicking the 'Add New Application' button and provide the requested information. + * Redirect URI will be https://{ServiceDomain}/connector/callback. + * Your Service Domain can be found in Settings > Integration Settings > Service Domain in your Cyclr console. + +> NOTE: Newly created apps are marked as Not Approved. This shouldn't be a problem, you can still use this app. Not Approved just means that you can only connect your application to 30 Vend stores. You only need to get Vend's approval for production ready, public applications. + +* You will now have an application with a **Client ID** and **Client Secret**. + +### Cyclr Setup + +* The connector can now be installed. Enter your Client ID, Client Secret and Store Name into the Cyclr interface, click 'Next' and then 'Sign In' on the next page. + +![connector setup](./images/vend_setup_img_2.png) + +* You will be redirected to Vend's website where you will be guided through the login process. + +![connector setup](./images/vend_setup_img_3.png) + +* Allow Access. + +![connector setup](./images/vend_setup_img_5.png) + +* If the above steps completed successfully you will be redirected back to Cyclr. The connector is now installed and authenticated. diff --git a/pages/connector-authentication/wordpress.md b/pages/connector-authentication/wordpress.md index 6a24b1e22..badeb77c9 100644 --- a/pages/connector-authentication/wordpress.md +++ b/pages/connector-authentication/wordpress.md @@ -10,4 +10,30 @@ tags: [connector] Wordpress Connector Setup ------------- -

Authentication

In order to allow Cyclr to connect to your WordPress site’s API, you must install the WordPress REST API – OAuth 1.0a Server. This gives your site the ability to securely authenticate API use.

Register Cyclr as an application

Once you have installed the plugin, open WordPress and go to:

Users > Applications > Add New

The values needed to add your app are:

Your setup should look something like this:

When you add your Consumer, you will be presented with your Client Key and Client Secret.

(Yours will be different to the screenshot).

Authenticate WordPress in Cyclr

With the above correctly setup, install the WordPress connector in Cyclr and provide the Client Key and Client Secret along with your website’s URL.

Click the Next button and you will be prompted to sign into WordPress. Do this and then authorize Cyclr and you can now begin to use your WordPress site’s API.

\ No newline at end of file +## Authentication ## +In order to allow Cyclr to connect to your WordPress site’s API, you must install the WordPress REST API – OAuth 1.0a Server. This gives your site the ability to securely authenticate API use. + +### Register Cyclr as an application ### +Once you have installed the plugin, open WordPress and go to: + +Users > Applications > Add New + +The values needed to add your app are: +* Name: Cyclr +* Description: this is a free text area +* Callback: {% raw %}https://{{Your Cyclr service domain e.g. app-h.cyclr.com}}/connector/callback{% endraw %} + +Your setup should look something like this: +![](/images/wordpress-cyclr-api-authentication.png) + +When you add your Consumer, you will be presented with your Client Key and Client Secret. +![](/images/wordpress-oauth-credentials.png) + +(Yours will be different to the screenshot). + +### Authenticate WordPress in Cyclr ### +With the above correctly setup, install the WordPress connector in Cyclr and provide the Client Key and Client Secret along with your website’s URL. + +![](/images/wordpress-auth.png) + +Click the Next button and you will be prompted to sign into WordPress. Do this and then authorize Cyclr and you can now begin to use your WordPress site’s API. \ No newline at end of file diff --git a/pages/connector-authentication/zendesk.md b/pages/connector-authentication/zendesk.md index 40bbadceb..72c124ac9 100644 --- a/pages/connector-authentication/zendesk.md +++ b/pages/connector-authentication/zendesk.md @@ -1,33 +1,17 @@ --- -title: Zendesk Webhooks +title: Zendesk Authentication sidebar: cyclr_sidebar permalink: zendesk-connector tags: [connector] --- -Webhook Implementation - Closed Tickets ---------------------------------------- +# Zendesk # - - set Trigger conditions to 'Status' is 'Closed' and/or 'Solved' - - in 'Actions' set 'Notify Target' to required Target - - fields below to be added to Trigger in 'JSON Body' - -{% raw %} -```json +Zendesk OAuth 2 Setup: +--- -{ - "TicketId":"{{ticket.id}}", - "ExternalId":"{{ticket.external_id}}", - "Title":"{{ticket.title}}", - "Description":"{{ticket.description}}", - "TicketVia":"{{ticket.via}}", - "Status":"{{ticket.status}}", - "Priority":"{{ticket.priority}}", - "Type":"{{ticket.ticket_type}}" -} -``` -{% endraw %} +In order to set up OAuth 2 in Zendesk log in to your account and go to `Admin -> API -> OAuth Clients` and click the `+` button to setup a new OAuth application. -For further information please check the official Zendesk documentation: +Once you have entered the required information and clicked `Save` you will be shown a Secret. - +You will need to copy both your Unique Identifier and Secret that were created during this setup - into the Client ID and Client Secret fields - in the Zendesk Connector setup in Cyclr - respectively. diff --git a/pages/custom-connectors/connector-level-standards.md b/pages/custom-connectors/connector-level-standards.md new file mode 100644 index 000000000..828e6d7ad --- /dev/null +++ b/pages/custom-connectors/connector-level-standards.md @@ -0,0 +1,151 @@ +--- +title: Connector Level Standards +sidebar: cyclr_sidebar +permalink: connector-level-standards +tags: [connector-creation] +--- +Cyclr Connector Level Standards Guide +--------------------------- + +# Connector Details + +|Setting|Description| +|--- | --- | +|Name|Should not include any version information | +|Version|Should left blank | +|Description|Should be from the product, google search result will likely give appropriate text| +|Logo|Should be 400x400 and scale down nicely | +|Authentication|Use oauth where available | + + +# Settings + +|Setting|Description| +|--- | --- | +|Status| | +|Comments| | +|Post Install Value Lookup Method| | +|Inbound Paging| | +|Inbound Page Size| | +|Icon| | + +# Authentication + +This specifies what type of authentication is used by the remote endpoint. + +|Field|Description| +|---|---| +|Authentication Description|Displayed when a user installs the connector.| +|Authentication Type|[Dropdown with a selection of different authentication types to choose from.](###authentication-types)| + +### Authentication Types + +|Authentication Type|Description| +|---|---| +|API Key|The connector uses API key authentication. [Required fields.](###api-key)| +|Basic|The connector implements HTTP basic authentication.| +|OAuth1| The connector implements OAuth 1.0a authentication. [Required fields.](###oauth1)| +|OAuth2|The connector implements OAuth 2 authentication. [Required fields.](###oauth2)| +|Kerberos|The connector implements [Kerberos](https://en.wikipedia.org/wiki/Kerberos_(protocol)) authentication.| +|NetSuiteOAuth1|The connector implements NetSuiteOauth1. [Required fields.](###netsuitoauth1)| + +### API Key + +|Field|Description| +|---|---| +|API Key Header| | + +### OAuth1 + +|Field|Description| +|---|---| +|Authorise URL| | +|Access Token URL| | +|Request Token URL| | + +Click [here](https://tools.ietf.org/html/rfc5849) for further information on OAuth1. + +### OAuth2 + +|Field|Description| +|---|---| +|OAuth 2 Type|The grant type implemented by the API.| +|Authorise URL|The URL| +|Access Token URL| | + +Click [here](https://oauth.net/2/) for further information on OAuth2. + +### NetSuiteOAuth1 + +|Auth Type|Description| +|---|---| +|Access Token URL| | +|Request TOken URL| | + +# Rate Limits +# Methods + +|Setting|Description| +|--- | --- | +|Name|Should indicate what the method does | +|Description|Should be provided and end with a "." | +|Fields & Parameters|ID should be uppercase in display fields but Id in system fields | + +System Field should be in PascalCase + +Descriptions should end in "." + +All entities should have Get, Get All, Create, Update, Delete unless not supported by API + +Should provide lookup/triggers for ID's where possible + +[Method Level Settings.](method-level-standards.md)

+*Note:* Any settings at the method level will override those set at the connector level. + +# Parameters + +Parameters are used to define a range of HTTP fields. You can define parameters at the connector level or method level. If a parameter is defined at the connector level, it will be global for all methods in the connector. + +### Parameter Fields + +|Field|Description| +|---|---| +|Target Type|[Target Types](###target-types)| +|Target Name|The name for the parameter. Must match the API definition.| +|Display Name|The display name for the parameter. Should match Cyclr Standards.| +|Description|Description for the parameter. If possible use the API description.| +|Trigger|Trigger name for the parameter. If you want to dynamically show a list of parameter values for the user to choose from, set TriggerName as the trigger you want Cyclr to call. Please see the [Triggers](#triggers) section for details.| +|Hidden|Toggles whether or not a parameter will be shown to the user.| +|Optional|Toggles whether or not a parameter must be included.| +|Parameter Values| | + +### Target Types + +|Target Type|Description| +|---|---| +|Http Header|Will create a header with the given key:value.| +|Merge Field|Will match with a place holder field in the endpoint. | +|Query String|Will be formatted and sent as part of the URL. E.g. "example-url.com?a=example&b=123" where 'a' and 'b' are both query string parameters.| +|Filter Field| | +|Response Field| | +|Script| | +|Index| | + +### Account Connector Property + +# Triggers + +Triggers are used for dynamic lookups. + +|Key|Description| +|---|---| +|IdentifierKey|The key value cyclr will use.| +|HumanReadableKey|The display value Cyclr will display to a user.| + +E.g. for the JSON object below, the IdentifierKey would be `id` and the HumanReadableKey would be `name` +```json +{ + "id": "123", + "name": "example" +} +``` diff --git a/pages/custom-connectors/connector-standards.md b/pages/custom-connectors/connector-standards.md new file mode 100644 index 000000000..d0fd17402 --- /dev/null +++ b/pages/custom-connectors/connector-standards.md @@ -0,0 +1,48 @@ +--- +title: Connector Standards +sidebar: cyclr_sidebar +permalink: connector-standards +tags: [connector-creation] +--- +Cyclr Connector Standards Guide +--------------------------- + +## Connector Details +* Name should not include any version information +* Version should be same as API version +* Description should be from the product, google search result will likely give appropriate text +* Logo should be 400x400 and scale down nicely +* Connectors should only use 1 API version + +## Authentication +- Use OAuth where available + +## Methods +#### Naming Convention: +- **Get**: Used when the method retrieves a single item +- **List**: Used when the method retrieves multiple items +- **Create**: Used when the method creates an item (Do not use add) +- **Delete**: Used when the method deletes an item +- **Update**: Used when the method updates an item

+ *Note:* When an endpoint carries out multiple functions, such as Creating or Updating, name the method logically e.g. "**Create Or Update** Contact" + +#### Descriptions: +* Descriptions should be provided and end with a "." + +#### Functionality +* All entities should inlcude methods for **Get**, **Get New**, **Get Updated**, **List**, **Create**, **Update**, **Delete** unless not supported by the API + +## Fields & Parameters +- Descriptions should end in "." +- Should provide lookup/triggers for IDs where possible +- IDs should be descriptive of the method rather than generic. e.g. "Contact **ID**" rather than "**ID**" + + +#### System Fields +- Should be in [PascalCase](https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-1.1/x2dbyw72(v=vs.71)) e.g. "AddressLine1" +- IDs should follow PascalCase e.g. "**Id**" +- Should be consistent to our naming convention rather than to the API + +#### Display Names +- Each word should be seperated with a space and capitalised e.g. "Address Line 1" +- IDs should be uppercase e.g. "**ID**" diff --git a/pages/custom-connectors/dynamic-custom-fields.md b/pages/custom-connectors/dynamic-custom-fields.md new file mode 100644 index 000000000..d672facb5 --- /dev/null +++ b/pages/custom-connectors/dynamic-custom-fields.md @@ -0,0 +1,58 @@ +--- +title: Dynamic Custom Fields +sidebar: cyclr_sidebar +permalink: dynamic-custom-fields +tags: [connector-creation] +--- +Dynamic Custom Fields +--------------------------- + +Dynamic Custom Fields can be automatically generated by Cyclr for authenticated connectors. This removes the need to manually add Custom Fields for each connector installation. Cyclr is able to generate custom fields by either parsing an example response or by reading an object metadata definition. + +To enable Dynamic Custom Fields you only need to set the **Custom Fields Lookup Method** on the appropriate Request/Response Format, the method used in **Custom Fields Lookup Method** must be able to be called without any field or parameter values being set. + +![](./images/custom-fields-lookup-method.png) + +Basic - Parsed +--------------------------- + +Cyclr generates Basic Dynamic Custom Fields by parsing an example response that is retrieved by calling a method. For this to work you should set the **Custom Fields Lookup Method** to a method that will get the response in the same structure as the Request/Response Format custom fields will be added to. + +Cyclr will attempt to determine the correct Display Name and Data Type of the fields found in the response object, for more control of the custom fields generated you will need to make use of Enhanced Dynamic Custom Fields. + +Enhanced - Defined +--------------------------- + +Cyclr generates Enhanced Dynamic Custom Fields from a metadata definition of the object retrieved by calling the third party API. For this to work the **Custom Fields Lookup Method** must be set to a method that has been setup for Enhanced Custom Field Discovery, see below. + +Enhanced Custom Field Lookup Method +--------------------------- + +Before you can use Enhanced Dynamic Custom Fields you need to create a method in the connector that will retrieve the metadata for the object and check the **For Enhanced Custom Fields** option in the method or Cyclr will attempt to parse it as an example object. + +![](./images/for-enhanced-custom-fields.png) + +

+The response for this method must be an array and each item in the array must represent a single field in the object, you must also define the response fields with the below **System Fields** so that Cyclr can read the metadata correctly. You can use the scripting to alter the response from the third party API where required. + +System Field | Required | Description +--- | --- | --- +cyclr_field_location | Yes | Identifies the location of the custom field, e.g. [items].custom_field +cyclr_data_type | | The data type of the custom field, Use Cyclr data types as below +cyclr_data_type_format | | Custom data type format for the custom field +cyclr_default_value | | The default value to use for the custom field +cyclr_description | | The description of the custom field +cyclr_display_name | | The name to display the custom field as +cyclr_is_optional | | Indicates if the custom field is optional when part of a request +cyclr_is_readonly | | Indicates if the custom field is read-only, if it is it won't be added to any requests + +Data Type | Value +--- | --- +Not Defined | 0 +Text | 1 +Integer | 2 +Float | 3 +Boolean | 4 +Date Time | 5 + +[View the Custom Connector References](./custom-connector-reference) diff --git a/pages/custom-connectors/examples.md b/pages/custom-connectors/examples.md index 6d901fae0..e8de11841 100644 --- a/pages/custom-connectors/examples.md +++ b/pages/custom-connectors/examples.md @@ -217,4 +217,4 @@ The other example is taken from the ZohoCRM connector. You can see how parameter } {% endraw %} -[Learn About Custom Connector Fields](./fields) +[Learn About Custom Connector Fields](./custom-connector-fields) diff --git a/pages/custom-connectors/fields.md b/pages/custom-connectors/fields.md index a9ec7a00b..0e9023fd0 100644 --- a/pages/custom-connectors/fields.md +++ b/pages/custom-connectors/fields.md @@ -17,9 +17,8 @@ Mergefields ----------- A mergefields is placeholder will be substituted at runtime. - #### Supported Mergefields * LastSuccessfulRunDate – is the last time the cycle successfully ran the method. This is useful to find newly created or updated records in an app. A format string needs to be provided. For example, _{% raw %}{{LastSuccessfulRunDate format=yyyy-MM-ddTHH:mm:ssZ}}{% endraw %}_. -[View the Custom Connector References](./custom-connector-reference) \ No newline at end of file +[Add Dynamic Custom Fields](./dynamic-custom-fields) diff --git a/pages/custom-connectors/method-level-standards.md b/pages/custom-connectors/method-level-standards.md new file mode 100644 index 000000000..0c0dcf071 --- /dev/null +++ b/pages/custom-connectors/method-level-standards.md @@ -0,0 +1,114 @@ +--- +title: Method Level Standards +sidebar: cyclr_sidebar +permalink: method-level-standards +tags: [connector-creation] +--- +Cyclr Method Level Standards Guide +--------------------------- + +# Settings + +|Setting|Description| +|--- | ---| +|Name| | +|Description| | +|Warning| | +|Status| | +|Comments| | +|Category| | +|Method Type| | +|Create Webhook Method Type| | +|Delete Webhook Method Type| | +|Webhook Field Discovery| | +|Singular WebhookUrl?| | +|HTTP Method| | +|Endpoint| | +|Inbound Paging?| | +|Inbound Page Size| | +|Outbound Paging?| | +|Outbound Page Size| | +|Outbound Array Location| | +|Data Type| | +|XML Root Element| | +|Hide| | + +# Rate Limits +# Request Format +## Field Handling + +|Setting|Description| +|--- | ---| +|Add Field| | +|Generate Fields| | +|Delete Selected Fields| | +|Data Type| | +|Custom Fields Lookup Method| | + +## Fields + +|Setting|Description| +|--- | ---| +|Connector Field| | +|System Field| | +|Display Name| | +|Description| | +|Hidden| | +|Optional| | +|Data Type| | +|Default Value| | +|Trigger| | +|Field Values| | + +# Response Format +## Field Handling + +|Setting|Description| +|--- | ---| +|Add Field| | +|Generate Fields| | +|Delete Selected Fields| | +|Data Type| | +|Time Filter Field| | +|Custom Fields Lookup Method| | + +## Fields + +|Setting|Description| +|--- | ---| +|Connector Field| | +|System Field| | +|Display Name| | +|Description| | +|Hidden| | +|Optional| | +|Data Type| | +|Default Value| | +|Trigger| | +|Field Values| | + +# Parameters +## Parameter Fields + +|Field|Description| +|--- | ---| +|Target Type|[Target Types](####target-types)| +|Target Name|Dictates how the parameter will be sent in the request. Must match the API definition.| +|Display Name|The readable equivalent of the target name. Should match Cyclr Standards.| +|Description|Should describe the parameter. If possible use the API description.| +|Trigger|Will give a dropdown of available triggers that can be used as a lookup for the parameter.| +|Hidden|Toggles whether or not a parameter will be shown to the user.| +|Optional|Toggles whether or not a parameter must be included.| +|Parameter Values| | + +## Target Types + +|Target Type|Description| +|--- | ---| +|Http Header| | +|Merge Field| | +|Query String| | +|Filter Field| | +|Response Field| | +|Script| | +|Index| | diff --git a/pages/custom-connectors/methods.md b/pages/custom-connectors/methods.md index eaaeb4b67..b60ab0dd5 100644 --- a/pages/custom-connectors/methods.md +++ b/pages/custom-connectors/methods.md @@ -17,4 +17,4 @@ tags: [connector-creation] * **RequestFormat **/ **ResponseFormat **– this contains the request or response message format Fields. Each Field has ConnectorField, SystemField, and DisplayName. ConnectorField is the field name used in the connector. If a field is inside an array, it needs to be defined as \[Array\].Field. Multiple-dimension arrays can be defined as \[Array1\].\[Array2\].Field, etc. What if there is a field called \[Array2\].Field inside an Array1? We use \[Array1\].\\Array2.Field\\ to explicitly define Array2.Field as a field name. SystemField is the system name for the field. We use PascalCasing for system names as a convention. DisplayName is the name shown in the Cyclr UI. * **Fields **– the names of fields to use in the API call. Fields must have been defined in the connector to appear here. Name, TriggerName, IdentifierKey, and HumanReadableKey are needed. -[Take a Look at Custom Connector Examples](./examples) +[Take a Look at Custom Connector Examples](./custom-connector-examples) diff --git a/pages/custom-connectors/properties.md b/pages/custom-connectors/properties.md index 413118c2a..4fbb54400 100644 --- a/pages/custom-connectors/properties.md +++ b/pages/custom-connectors/properties.md @@ -54,4 +54,4 @@ Your connector needs an icon. * Minimum: square @ 256px x 256px * 24-bit PNG on a transparent background -[Learn About Custom Connector Parameters & Triggers ](./parameters-and-triggers) +[Learn About Custom Connector Parameters & Triggers ](./custom-connectors-parameters-triggers) diff --git a/pages/custom-connectors/scripting.md b/pages/custom-connectors/scripting.md index 310956988..f573e3ea6 100644 --- a/pages/custom-connectors/scripting.md +++ b/pages/custom-connectors/scripting.md @@ -5,19 +5,49 @@ permalink: custom-connector-scripting tags: [connector-creation] --- -### Events +### Scripting + +Cyclr supports Javascript as its scripting language, allowing you to manipulate data before it's sent as well as after it's been retrieved. This can be useful when moving data between applications as what's valid in one, may not be valid in another. Also, sometimes data just doesn't quite "fit". + +Script can be used when building a Connector and on Steps in a Template or Cycle. + +If you're working on a Cycle in the Builder and need to perform a change to some data, click the Step Setup button on a Step then either use Inline Script in a Mapping for something simple, or expand the Advanced Settings area and enter some Script to tie in to Cyclr's [Events](https://docs.cyclr.com/custom-connector-scripting#events) as described below. + +For Inline Script, you must prefix the Javascript code with "=" (an equals sign), e.g.: +```javascript +=(100 * 2) +``` +or +```javascript +=`[Mergefield]` === '' ? 'no value' : `[Mergefield]`; +``` + +It's best to use ` characters (backticks) around string values being merged in as that will prevent carriage returns and the various quote characters from breaking your Script. + + +### Event Handlers + +Events are triggered at certain points when a Cycle runs, allowing you to modify data using "event handlers" which are simply Javascript functions. -Events are triggered at certain points allowing you to modify data. Script can be added at both the Connector & Method levels; Connector level event handlers will be called for all methods where as method level will only be called for that method. To add an event handler simply add a javascript function with the event name. +To add an event handler, put a Javascript function at the Connector or Method level, or in the Advanced Settings area of a Step in the Cycle Builder, using the event name as the name of the function, e.g.: ```javascript -function eventName() { +function before_action() { /* Handle event here */ + return true; } ``` +Event handlers entered at the Connector level will be called for all of its Methods. Event handlers entered at the Method level will only be called for that Method. + +If you need to pass a value from a **before_action** handler to an **after_action** handler and you're not able to put it in the **method_request** object as it's not considered valid by the API being called, you can use the **method_request_mergefields** object as its values are persisted across those two events. The **script_parameters** object, for example, is not persisted across any events. + + +### Events + #### before_webhook -Called when a webook request has been received & before anything else is done. Method is used to decide if the request should be continued or return a custom message to the caller. +Called when a webook request has been received and before anything else is done. Method is used to decide if the request should be continued or return a custom message to the caller. ###### Global objects @@ -27,7 +57,8 @@ Called when a webook request has been received & before anything else is done. M * **method_endpoint**: The webhook request URL * **method_response**: The response body for the request * **method_response_headers**: The response headers for the request -* **return**: true for the webhook to continue normal execution, false to stop execution of the request & send the response body/headers to the caller +* **cycle_variables**: Allows access to Cycle variables. Changes are not persisted. +* **return**: true for the webhook to continue normal execution, false to stop execution of the request and send the response body/headers to the caller #### after_webhook @@ -36,6 +67,7 @@ Called after the webook has been caught. ###### Global object * **method_response**: object that was POSTed to the Cyclr webhook +* **cycle_variables**: Allows access to Cycle variables. Changes are not persisted. * **return**: true for the webhook to continue normal execution, false to ignore the webhook request #### before_action @@ -48,15 +80,31 @@ Called before Cyclr makes a request to an external API. * **method_request_headers**: HTTP headers for the request * **method_request_parameters**: Querystring parameters for the request * **method_request_mergefields**: mergefields for the request +* **cycle_variables**: Allows access to Cycle variables. Changes are not persisted. * **return**: true to continue with the request to the third party API, false to abort the request (use throw for a more useful step error message) #### after_action -Function is called when Cyclr has got a response from an external API +Function is called when Cyclr has a response from an external API. + +If a Method uses Paging, this function is called after each page is retrieved. ###### Global object -* **method_response**: object that was received from the third party API. +* **method_endpoint**: The URL of the original request +* **method_response**: object that was received from the third party API. If the Method uses paging, this contains only the current page's Response. +* **method_request_mergefields**: mergefields for the request +* **cycle_variables**: Allows access to Cycle variables. Changes are not persisted. +* **return**: true + +#### after_action_paging + +If this function is provided, it is called once after all pages of data have been retrieved, whether Paging has been implemented or not. + +###### Global object + +* **method_response**: object that contains all of the Response data. +* **cycle_variables**: Allows access to Cycle variables. Changes are not persisted. * **return**: true #### after_error @@ -65,7 +113,8 @@ Function is called when Cyclr received an error from an external API. ###### Global object -* **error_response**: Details of the error, see : **Handle Errors from Third Party APIs** further down for more information on handling errors +* **method_error**: Details of the error, see: **Handle Errors from Third Party APIs** further down for more information on handling errors +* **cycle_variables**: Allows access to Cycle variables. Changes are not persisted. * **return**: true #### action_condition @@ -75,6 +124,7 @@ Function is used to essentially combine a Method with a Decision Step, allowing ###### Global object * **method_response**: object that was received from the third party API. +* **cycle_variables**: Allows access to Cycle variables. Changes are not persisted. * **return**: true for the Transaction to exit on the "True Route", false to exit on the "False Route" #### before_oauth2_authorise @@ -84,6 +134,7 @@ Function is called before Cyclr makes an OAuth 2 authorise request. ###### Global object * **method_endpoint**: URL for the OAuth authorise endpoint +* **cycle_variables**: Allows access to Cycle variables. Changes are not persisted. * **return**: true #### before_oauth2_token @@ -94,6 +145,7 @@ Called before Cyclr makes an OAuth 2 access token request. * **method_request**: Object that is going to be sent to the OAuth 2 access token endpoint * **method_request_headers**: HTTP headers for the request +* **cycle_variables**: Allows access to Cycle variables. Changes are not persisted. * **return**: true #### after_oauth2_token @@ -103,6 +155,7 @@ Called after Cyclr makes an OAuth 2 access token request. ###### Global object * **method_response**: response object that was received from the OAuth 2 access token request +* **cycle_variables**: Allows access to Cycle variables. Changes are not persisted. * **return**: true #### before_oauth2_refresh @@ -113,6 +166,7 @@ Called before Cyclr makes an OAuth 2 refresh token request. * **method_request**: request object that is going to be sent to the OAuth 2 refresh token request * **method_request_headers**: HTTP headers for the request +* **cycle_variables**: Allows access to Cycle variables. Changes are not persisted. * **return**: true #### after_oauth2_refresh @@ -122,6 +176,7 @@ Called after Cyclr makes an OAuth 2 refresh token request. ###### Global object * **method_response**: response object that was received from the OAuth 2 refresh token request. +* **cycle_variables**: Allows access to Cycle variables. Changes are not persisted. * **return**: true ### Functions @@ -130,13 +185,51 @@ Called after Cyclr makes an OAuth 2 refresh token request. Function to make external HTTP requests. -#### atob +When calling the `http_request` function, you provide a JSON object with the following properties: + +* method: HTTP method, e.g. GET, POST, DELETE, PUT +* url: URL for the HTTP request +* parameters: Querystring parameters +* headers: HTTP headers +* data: HTTP request data. If sending JSON, you should use JSON.stringify() to serialize it. + +Example: + +```javascript +function after_action() { + var response = http_request( + { + 'method': 'POST', + 'url': 'https://someapi.com/createsomething', + 'headers': + { + 'Authorization': 'Bearer ' + method_auth_value, + 'Content-Type': 'application/json', + 'Accept': 'application/json' + }, + 'data': JSON.stringify( { "MyData": "some value" } ) + } + ); + + return true; +} +``` + +The Response from an `http_request` call is returned as a JSON object with these properties: + +* status_code: the HTTP Status code returned +* headers: any HTTP headers +* content: the Response body +* request: details of the Request that was made -Function to convert a Base64 encoded string to a string. #### btoa -Function to convert a string to a Base64 string. +Function to encode a string using Base64. + +#### atob + +Function to decode a Base64 encoded string. #### cyclr_sign @@ -205,6 +298,8 @@ Library Name: crypto-js Description: JavaScript library of crypto standards. +Warning: The output of encrypted data is always in a hex string. Formatting options `CryptoJS.enc` are not supported when calling `toString`. + External Documentation: ### Connector scripting examples @@ -245,14 +340,6 @@ After calling `api_url`, Cyclr will then replace `method_response` with the c Return `false` in the `after_webhook` function will stop Cyclr from running the webhook. You can use this trick to filter webhook events. -When calling the `http_request` function, you can specify the request using: - -* method: HTTP method, e.g. GET, POST, DELETE, PUT, etc. -* url: URL for the HTTP request -* parameters: Query string parameter -* headers: HTTP headers -* data: HTTP request data - #### Transform Key Value Pairs Making use of key value pair responses requires the use of scripting, consider an API that returns the below representation of a contact. @@ -341,12 +428,14 @@ In this example, we transformed the method request body to a XML string and save The scripting engine can be used to catch and handle errors returned from third party APIs. -* **statusCode **– the HTTP status code returned by the third party API +Cyclr exposes a received error response in the `after_error` function through the `method_error` object, which has these properties: + +* **statusCode** – the HTTP status code returned by the third party API * **reasonPhrase** – the reason phrase returned by the third party API -* **content **– the body content of the response from the third party API +* **content** – the body content of the response from the third party API * **isError** – indicates that the error is an error. default: true, set to false if using isWarning or isSuccess -* **isWarning **– set to true for Cyclr to log the error as a warning -* **isSuccess **– set to true to change the error to success, update content to contain the success step data +* **isWarning** – set to true for Cyclr to log the error as a warning +* **isSuccess** – set to true to change the error to success, update content to contain the success step data Example: change an error to a warning @@ -377,3 +466,4 @@ function after_error() { * Execution time: 30 seconds. Script running will time out after 30 seconds. * External HTTP requests: for security reasons, we will use the same authentication method as the connector and the same authentication value when the connector was installed by the user. You cannot use the script to access or modify the authentication value. +* The **cycle_variables** object is only available through a Step's Advanced Settings area, and not through Inline Script. Also, any changes made to it and its properties are not persisted. diff --git a/pages/embedding/api-authentication.md b/pages/embedding/api-authentication.md index f6c31d1ec..ec115410e 100644 --- a/pages/embedding/api-authentication.md +++ b/pages/embedding/api-authentication.md @@ -88,4 +88,4 @@ To authenticate your requests you need to include the access token in the Author Authorization: Bearer {AccessToken} ``` -[View Cyclr’s API Endpoints](./api-endpoints) +[View Cyclr’s API Endpoints](./cyclr-api-endpoints) diff --git a/pages/embedding/call-a-connector-method.md b/pages/embedding/call-a-connector-method.md index b40ea016f..efb76dd6e 100644 --- a/pages/embedding/call-a-connector-method.md +++ b/pages/embedding/call-a-connector-method.md @@ -89,3 +89,22 @@ Authorization: Bearer ********************************************************** ] } ``` + +If the method you are calling requires any field or parameter to be passed to the third-party application, they should be included in your request body. + +#### Request + +```http +POST https://yourCyclrInstance/v1.0/account/connectors/{account connector ID}/methods/{method ID} +Authorization: Bearer **************************************************************** +Content-Type: application/json + +{ + "Parameters": { + "400123": "true" + }, + "Fields": { + "500123": "test@example.com" + } +} +``` diff --git a/pages/embedding/install-a-connector.md b/pages/embedding/install-a-connector.md index b35f911e3..c1e33ce5c 100644 --- a/pages/embedding/install-a-connector.md +++ b/pages/embedding/install-a-connector.md @@ -5,8 +5,7 @@ permalink: install-a-connector tags: [embedding] --- -This article will guide you through installing a connector into an account. You must have already have an access token to -an account. +This article will guide you through installing a connector into an account. You must already have an [Account Access Token](obtain-account-authorization-token). 1. [Getting the connector ID](#1) 2. [Installing the connector](#2) @@ -120,7 +119,7 @@ If the connector requires an OAuth authentication to work with the third party A "ExpiresAtUtc":"2017-11-29T16:22:36.7257196Z" } -Now you have a sign in token you can build the URL to send the user too to begin the OAuth flow. +Now you have a sign in token, you can "build" the URL to send the user to where they will begin the OAuth flow. #### URL & Querystring diff --git a/pages/installing-templates-api/basic-authentication.md b/pages/installing-templates-api/http-basic-authentication.md similarity index 100% rename from pages/installing-templates-api/basic-authentication.md rename to pages/installing-templates-api/http-basic-authentication.md diff --git a/pages/launch/launch-deployment.md b/pages/launch/launch-deployment.md index c133c1934..95b33bb3d 100644 --- a/pages/launch/launch-deployment.md +++ b/pages/launch/launch-deployment.md @@ -1,5 +1,5 @@ --- -title: Launch Deployment +title: LAUNCH Deployment sidebar: cyclr_sidebar permalink: launch-deployment tags: [launch] @@ -64,7 +64,7 @@ You should use a Cyclr Partner OAuth token as the Bearer token in this request. partnerConnector - (Optional) Providing the platform connector object here means your user will not be expected to authenticate against your own platform during the Launch flow. + (Optional) Providing the platform connector object here means your user will not be expected to authenticate against your own platform during the LAUNCH flow. @@ -96,19 +96,29 @@ NJ88GGgv79V79VvYFBBTHUIGYBGY3434345545UYu RunOnce - (Optional) Set it to true if the cycle to be launched should only be run once. + (Optional) Defaults to false. Set it to true if the cycle being installed should only run once, then pause. true Tags - (Optional) An array of tags that a cycle must have at least one of to appear in launch. + (Optional) An array of tags that a cycle must have at least one of to appear in LAUNCH. ["CRM", "Email"] InlineOAuth - (Optional) Set it to false if you are running LAUNCH in an iFrame and wants OAuth redirect pages to be opened in a popup. + (Optional) Defaults to true. Set it to false if you are running LAUNCH in an iFrame and want OAuth redirect pages to be opened in a popup. false + + AutoInstall + (Optional) Defaults to true so that Cyclr will automatically start installation of a template if only one is returned, avoiding the need for the user to select it. Set this to false to prevent that, requiring the user to select it instead. + false + + + SingleInstall + (Optional) Defaults to false so that templates are shown whether they have been installed or not. Set to true to only show templates that aren't installed in the account. + true + ***Response:*** @@ -147,9 +157,9 @@ Once generated by Cyclr, this URL will be valid for 5-minutes only and for a sin Token - Launch URL token. + LAUNCH URL token. lld3UjpZKkuh0I7ObHR0EtxRsPo0No1GqNSyAi8pqXQ= -[How to Handle Callbacks](./handling-callback) \ No newline at end of file +[How to Handle Callbacks](./handling-callback) diff --git a/pages/launch/marketplace-deployment.md b/pages/launch/marketplace-deployment.md new file mode 100644 index 000000000..cdbcbd2ec --- /dev/null +++ b/pages/launch/marketplace-deployment.md @@ -0,0 +1,151 @@ +--- +title: Marketplace Deployment +sidebar: cyclr_sidebar +permalink: marketplace-deployment +tags: [launch] +--- + +To enable your users to view a marketplace, simply present a “Connect” button or link within your application’s UI. + +For example: + +![Generic Host Application](./images/generic-host-app.png) + +When a user clicks the **Connect** button, your application server should make a request towards Cyclr REST API's _/users/marketplace_ method: + +``` +curl -X POST +-H "Authorization: Bearer ${ACCESS_TOKEN}" +-H "Content-Type: application/json" +-H "Accept: application/json" + +-d '{ + "MarketplaceId": 1 + "Username": "user@example.com", + "Password": "password", + "AccountId": "0000000-0000-0000-0000-000000000000", + "partnerConnector": { + "Name": "Connector Name", + "Version": "1.0", + "AuthValue": "00000000000000000000000000000000000000000", + "Properties": [{"Name": "Url", "Value": "https://myapp.something.blah"}] + } +}' "https://yourCyclrInstance/v1.0/users/marketplace" +``` + +Replace *yourCyclrInstance* with *api.cyclr.com*, *api.cyclr.uk*, or your own domain if your Cyclr instance is self-hosted. + +You should use a Cyclr Partner OAuth token as the Bearer token in this request. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Request parametersDescriptionExample
MarketplaceIdThe ID of the Marketplace to view1
UsernameThe name of the Cyclr account (and Cyclr user) to install this integration in, or to create if such an account (and user) does not already exist.user@example.com
PasswordThe password to assign to the new Cyclr user account, if created. If you do not intend your end users to access the Cyclr application directly, this password can be an obscure value known only to your app.sdkjgnjg35d
AccountNameIf your user doesn't already have an account within Cyclr, specify the name of the account to create here.New Cyclr Account Name
AccountIdIf your user already has an account within Cyclr, specify the Id of that account to have the new integration installed there. If this is not provided, a new Cyclr account will be created.0000000-0000-0000-0000-000000000000
partnerConnector(Optional) Providing the platform connector object here means your user will not be expected to authenticate against your own platform during the Marketplace LAUNCH flow.
partnerConnector.NameA name you wish to give this instance of your connector installed within this new or existing account.Connector Name
partnerConnector.VersionThe version of the partner connector to be installed.1.0
partnerConnector.AuthValue(Optional) Authentication value for your platform connector. + If your platform users a username and password, provide as base64 encoded version of username:password + Provide API keys as plain text. + An OAuth token may also be provided here.dXNlcm5hbWU6cGFzc3dvcmQ= +or +NJ88GGgv79V79VvYFBBTHUIGYBGY3434345545UYu +or +NJ88GGgv79V79VvYFBBTHUIGYBGY3434345545UYu
partnerConnector.[Properties]An array of properties required by the partner connector for successful installation. This is not relevant to all connectors.[ {"Name": "Url", "Value": "http://customDomain.appName.com"} ]
InlineOAuth(Optional) Defaults to true. Set it to false if you are running Marketplace in an iFrame and want OAuth redirect pages to be opened in a popup.false
+ +***Response:*** + +```json +{ + "AccountId": "0000000-0000-0000-0000-000000000000", + "ExpiresAtUtc": "17/01/2018 12:11:22", + "MarketplaceUrl": "https://hostapp.cyclr.com/account/signinwithtoken?token=lld3UjpZKkuh0I7ObHR0EtxRsPo0No1GqNSyAi8pqXQ%3D&returnUrl=%2Flaunch/marketplace/1", + "Token": "lld3UjpZKkuh0I7ObHR0EtxRsPo0No1GqNSyAi8pqXQ=" +} +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Response fieldsDescriptionExample
AccountIdThe ID of the newly created account or the existing account you provided in your request.0000000-0000-0000-0000-000000000000
ExpiresAtUtcToken expiry timestamp.17/01/2018 12:11:22
MarketplaceUrlThe URL that your user should be sent to, typically opened in a popup browser window. + +Once generated by Cyclr, this URL will be valid for 5-minutes only and for a single request only, so you user should be passed here immediately and one time only.https://hostapp.cyclr.com/account/signinwithtoken?token=lld3UjpZKkuh0I7ObHR0EtxRsPo0No1GqNSyAi8pqXQ%3D&returnUrl=%2Flaunch/marketplace/1
TokenMarketplace URL token.lld3UjpZKkuh0I7ObHR0EtxRsPo0No1GqNSyAi8pqXQ=
+ +[How to Handle Callbacks](./handling-callback)