diff --git a/docs/Dockerfile b/docs/Dockerfile deleted file mode 100644 index 2d32666a7..000000000 --- a/docs/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -# run directly from the repo root directory -# docker build -f ./docs/Dockerfile . -FROM node:20-alpine AS base - -# Set pnpm -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable - -WORKDIR /app -RUN pnpm add -g mintlify -COPY ./docs . - -# Documentation is served on port 3000. -EXPOSE 3000 - -# Run Documentation -CMD mintlify dev \ No newline at end of file diff --git a/docs/Dockerfile.dev b/docs/Dockerfile.dev deleted file mode 100644 index e54cd782e..000000000 --- a/docs/Dockerfile.dev +++ /dev/null @@ -1,15 +0,0 @@ -FROM node:20-alpine AS base - -# Set pnpm -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable -RUN pnpm add -g mintlify - -WORKDIR /app - -# Documentation is served on port 3000. -EXPOSE 3000 - -# Run Documentation -CMD mintlify dev \ No newline at end of file diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index c89c478d1..000000000 --- a/docs/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Mintlify Starter Kit - -Click on `Use this template` to copy the Mintlify starter kit. The starter kit contains examples including - -- Guide pages -- Navigation -- Customizations -- API Reference pages -- Use of popular components - -### Development - -Install the [Mintlify CLI](https://www.npmjs.com/package/mintlify) to preview the documentation changes locally. To install, use the following command - -``` -npm i -g mintlify -``` - -Run the following command at the root of your documentation (where mint.json is) - -``` -mintlify dev -``` - -### Publishing Changes - -Install our Github App to autopropagate changes from youre repo to your deployment. Changes will be deployed to production automatically after pushing to the default branch. Find the link to install on your dashboard. - -#### Troubleshooting - -- Mintlify dev isn't running - Run `mintlify install` it'll re-install dependencies. -- Page loads as a 404 - Make sure you are running in a folder with `mint.json` diff --git a/docs/_snippets/footer.mdx b/docs/_snippets/footer.mdx deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/_snippets/snippet-example.mdx b/docs/_snippets/snippet-example.mdx deleted file mode 100644 index 089334c54..000000000 --- a/docs/_snippets/snippet-example.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## My Snippet - -This is an example of a reusable snippet diff --git a/docs/api-reference/auth/create-api-key.mdx b/docs/api-reference/auth/create-api-key.mdx deleted file mode 100644 index 0af8655c6..000000000 --- a/docs/api-reference/auth/create-api-key.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /auth/generate-apikey ---- \ No newline at end of file diff --git a/docs/api-reference/auth/get-users.mdx b/docs/api-reference/auth/get-users.mdx deleted file mode 100644 index 16e8ccca2..000000000 --- a/docs/api-reference/auth/get-users.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /auth/users ---- \ No newline at end of file diff --git a/docs/api-reference/auth/log-in.mdx b/docs/api-reference/auth/log-in.mdx deleted file mode 100644 index c20b13e4e..000000000 --- a/docs/api-reference/auth/log-in.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /auth/login ---- \ No newline at end of file diff --git a/docs/api-reference/auth/register.mdx b/docs/api-reference/auth/register.mdx deleted file mode 100644 index 6e6245559..000000000 --- a/docs/api-reference/auth/register.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /auth/register ---- \ No newline at end of file diff --git a/docs/api-reference/auth/retrieve-api-keys.mdx b/docs/api-reference/auth/retrieve-api-keys.mdx deleted file mode 100644 index c7f77c41f..000000000 --- a/docs/api-reference/auth/retrieve-api-keys.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /auth/api-keys ---- \ No newline at end of file diff --git a/docs/api-reference/authentication.mdx b/docs/api-reference/authentication.mdx deleted file mode 100644 index 3c8fe7a25..000000000 --- a/docs/api-reference/authentication.mdx +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: "Authentication" -description: "" ---- - -The Panora API uses [API keys](/core-concepts/auth) to authenticate requests. You can view and manage your API keys in the [Panora Dashboard](https://dashboard.panora.dev/api-keys). - -Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth. - -Use your API key by setting it in the initial configuration of Panora. The Node.js library will then automatically send this key in each request. - -All API requests must be made over [HTTPS](http://en.wikipedia.org/wiki/HTTP_Secure). Calls made over plain HTTP will fail. API requests without authentication will also fail. - -You also have to catch a [connection token](/core-concepts/auth) which contains metadata about the end-user. - -In this example, we will create a contact in a CRM. Visit other sections of the [documentation](/ticketing/overview) to find category-specific examples. - - ```javascript TypeScript - import { PanoraSDK } from '@panora/sdk-typescript'; - - const sdk = new PanoraSDK({ accessToken: "MY_API_KEY" }); - - const input = { - first_name: 'tom', - last_name: 'jedusor', - email_addresses: [ - { - 'email_address': 'tom@jedusor.com', - 'email_address_type': 'PERSONAL' - } - ], - phone_numbers: [ - { - 'phone_number': '+33650438278', - 'phone_type': 'MOBILE' - } - ], - }; - - const result = await sdk.crmContact.addContact(input, 'MY_USER_CONNECTION_TOKEN', { - remoteData: true, - }); - - console.log(result); - ``` - - ```python Python - from panorasdk import PanoraSDK - - sdk = PanoraSDK() - - sdk.set_access_token("MY_API_KEY") - - request_body = { - 'first_name': 'tom', - 'last_name': 'jedusor', - 'email_addresses': [ - { - 'email_address': 'tom@jedusor.com', - 'email_address_type': 'PERSONAL' - } - ], - 'phone_numbers': [ - { - 'phone_number': '+33650438278', - 'phone_type': 'MOBILE' - } - ] - } - - results = sdk.crm_contact.add_contact( - request_input = request_body, - connection_token = 'MY_USER_CONNECTION_TOKEN', - remote_data = True - ) - - print(results) - ``` - - ```shell curl - curl --request POST \ - --url https://api.panora.dev/crm/contacts \ - --header 'Authorization: Bearer ' \ - --header 'Content-Type: application/json' \ - --header 'x-connection-token: ' \ - --data '{ - "first_name": "tom", - "last_name": "jedusor", - "email_addresses": [ - { - "email_address": "tom@jedusor.com", - "email_address_type": "PERSONAL" - } - ], - "phone_numbers": [ - { - "phone_number": "+33650438278", - "phone_type": "MOBILE" - } - ] - }' - ``` - diff --git a/docs/api-reference/connections/capture-oauth-callback.mdx b/docs/api-reference/connections/capture-oauth-callback.mdx deleted file mode 100644 index 54b4f36db..000000000 --- a/docs/api-reference/connections/capture-oauth-callback.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /connections/oauth/callback ---- \ No newline at end of file diff --git a/docs/api-reference/connections/list-connections.mdx b/docs/api-reference/connections/list-connections.mdx deleted file mode 100644 index 17e7f8704..000000000 --- a/docs/api-reference/connections/list-connections.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /connections ---- \ No newline at end of file diff --git a/docs/api-reference/crmcompany/add-a-batch-of-companies.mdx b/docs/api-reference/crmcompany/add-a-batch-of-companies.mdx deleted file mode 100644 index 9b8b85f8f..000000000 --- a/docs/api-reference/crmcompany/add-a-batch-of-companies.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /crm/companies/batch ---- diff --git a/docs/api-reference/crmcompany/create-a-company.mdx b/docs/api-reference/crmcompany/create-a-company.mdx deleted file mode 100644 index 53e0b8132..000000000 --- a/docs/api-reference/crmcompany/create-a-company.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /crm/companies ---- diff --git a/docs/api-reference/crmcompany/list-a-batch-of-companies.mdx b/docs/api-reference/crmcompany/list-a-batch-of-companies.mdx deleted file mode 100644 index 84f6dae32..000000000 --- a/docs/api-reference/crmcompany/list-a-batch-of-companies.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/companies ---- diff --git a/docs/api-reference/crmcompany/retrieve-a-company.mdx b/docs/api-reference/crmcompany/retrieve-a-company.mdx deleted file mode 100644 index 0a085ec48..000000000 --- a/docs/api-reference/crmcompany/retrieve-a-company.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/companies/{id} ---- diff --git a/docs/api-reference/crmcompany/update-a-company.mdx b/docs/api-reference/crmcompany/update-a-company.mdx deleted file mode 100644 index 4daa08467..000000000 --- a/docs/api-reference/crmcompany/update-a-company.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /crm/companies ---- diff --git a/docs/api-reference/crmcontact/add-a-batch-of-crm-contacts.mdx b/docs/api-reference/crmcontact/add-a-batch-of-crm-contacts.mdx deleted file mode 100644 index b6c85d9e0..000000000 --- a/docs/api-reference/crmcontact/add-a-batch-of-crm-contacts.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /crm/contacts/batch ---- diff --git a/docs/api-reference/crmcontact/create-crm-contact.mdx b/docs/api-reference/crmcontact/create-crm-contact.mdx deleted file mode 100644 index 99344daae..000000000 --- a/docs/api-reference/crmcontact/create-crm-contact.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /crm/contacts ---- diff --git a/docs/api-reference/crmcontact/list-a-batch-of-crm-contacts.mdx b/docs/api-reference/crmcontact/list-a-batch-of-crm-contacts.mdx deleted file mode 100644 index abd49dcc9..000000000 --- a/docs/api-reference/crmcontact/list-a-batch-of-crm-contacts.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/contacts ---- diff --git a/docs/api-reference/crmcontact/retrieve-a-crm-contact.mdx b/docs/api-reference/crmcontact/retrieve-a-crm-contact.mdx deleted file mode 100644 index fc56ec724..000000000 --- a/docs/api-reference/crmcontact/retrieve-a-crm-contact.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/contacts/{id} ---- diff --git a/docs/api-reference/crmcontact/update-a-crm-contact.mdx b/docs/api-reference/crmcontact/update-a-crm-contact.mdx deleted file mode 100644 index 3b0b743a9..000000000 --- a/docs/api-reference/crmcontact/update-a-crm-contact.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /crm/contacts ---- diff --git a/docs/api-reference/crmdeal/add-a-batch-of-deals.mdx b/docs/api-reference/crmdeal/add-a-batch-of-deals.mdx deleted file mode 100644 index 90dd59107..000000000 --- a/docs/api-reference/crmdeal/add-a-batch-of-deals.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /crm/deals/batch ---- diff --git a/docs/api-reference/crmdeal/create-a-deal.mdx b/docs/api-reference/crmdeal/create-a-deal.mdx deleted file mode 100644 index 499874a6c..000000000 --- a/docs/api-reference/crmdeal/create-a-deal.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /crm/deals ---- diff --git a/docs/api-reference/crmdeal/list-a-batch-of-deals.mdx b/docs/api-reference/crmdeal/list-a-batch-of-deals.mdx deleted file mode 100644 index dc01954c7..000000000 --- a/docs/api-reference/crmdeal/list-a-batch-of-deals.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/deals ---- diff --git a/docs/api-reference/crmdeal/retrieve-a-deal.mdx b/docs/api-reference/crmdeal/retrieve-a-deal.mdx deleted file mode 100644 index ab383f9a7..000000000 --- a/docs/api-reference/crmdeal/retrieve-a-deal.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/deals/{id} ---- diff --git a/docs/api-reference/crmdeal/update-a-deal.mdx b/docs/api-reference/crmdeal/update-a-deal.mdx deleted file mode 100644 index 9673f3766..000000000 --- a/docs/api-reference/crmdeal/update-a-deal.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /crm/deals/{id} ---- diff --git a/docs/api-reference/crmengagement/add-a-batch-of-engagements.mdx b/docs/api-reference/crmengagement/add-a-batch-of-engagements.mdx deleted file mode 100644 index 9393e0e6a..000000000 --- a/docs/api-reference/crmengagement/add-a-batch-of-engagements.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /crm/engagements/batch ---- diff --git a/docs/api-reference/crmengagement/create-a-engagement.mdx b/docs/api-reference/crmengagement/create-a-engagement.mdx deleted file mode 100644 index 8709ed1bf..000000000 --- a/docs/api-reference/crmengagement/create-a-engagement.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /crm/engagements ---- diff --git a/docs/api-reference/crmengagement/list-a-batch-of-engagements.mdx b/docs/api-reference/crmengagement/list-a-batch-of-engagements.mdx deleted file mode 100644 index 94cbaf46b..000000000 --- a/docs/api-reference/crmengagement/list-a-batch-of-engagements.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/engagements ---- diff --git a/docs/api-reference/crmengagement/retrieve-a-engagement.mdx b/docs/api-reference/crmengagement/retrieve-a-engagement.mdx deleted file mode 100644 index 7575d1337..000000000 --- a/docs/api-reference/crmengagement/retrieve-a-engagement.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/engagements/{id} ---- diff --git a/docs/api-reference/crmengagement/update-a-engagement.mdx b/docs/api-reference/crmengagement/update-a-engagement.mdx deleted file mode 100644 index 5dc0ed3eb..000000000 --- a/docs/api-reference/crmengagement/update-a-engagement.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /crm/engagements ---- diff --git a/docs/api-reference/crmnote/add-a-batch-of-notes.mdx b/docs/api-reference/crmnote/add-a-batch-of-notes.mdx deleted file mode 100644 index fb3aa3802..000000000 --- a/docs/api-reference/crmnote/add-a-batch-of-notes.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /crm/notes/batch ---- diff --git a/docs/api-reference/crmnote/create-a-note.mdx b/docs/api-reference/crmnote/create-a-note.mdx deleted file mode 100644 index 004fb19d5..000000000 --- a/docs/api-reference/crmnote/create-a-note.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /crm/notes ---- diff --git a/docs/api-reference/crmnote/list-a-batch-of-notes.mdx b/docs/api-reference/crmnote/list-a-batch-of-notes.mdx deleted file mode 100644 index 95edc4417..000000000 --- a/docs/api-reference/crmnote/list-a-batch-of-notes.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/notes ---- diff --git a/docs/api-reference/crmnote/retrieve-a-note.mdx b/docs/api-reference/crmnote/retrieve-a-note.mdx deleted file mode 100644 index 81362607d..000000000 --- a/docs/api-reference/crmnote/retrieve-a-note.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/notes/{id} ---- diff --git a/docs/api-reference/crmstage/list-a-batch-of-stages.mdx b/docs/api-reference/crmstage/list-a-batch-of-stages.mdx deleted file mode 100644 index fb2f1c266..000000000 --- a/docs/api-reference/crmstage/list-a-batch-of-stages.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/stages ---- diff --git a/docs/api-reference/crmstage/retrieve-a-stage.mdx b/docs/api-reference/crmstage/retrieve-a-stage.mdx deleted file mode 100644 index 3414d2c95..000000000 --- a/docs/api-reference/crmstage/retrieve-a-stage.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/stages/{id} ---- diff --git a/docs/api-reference/crmtask/add-a-batch-of-tasks.mdx b/docs/api-reference/crmtask/add-a-batch-of-tasks.mdx deleted file mode 100644 index 08a12f1f4..000000000 --- a/docs/api-reference/crmtask/add-a-batch-of-tasks.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /crm/tasks/batch ---- diff --git a/docs/api-reference/crmtask/create-a-task.mdx b/docs/api-reference/crmtask/create-a-task.mdx deleted file mode 100644 index dbe8718e3..000000000 --- a/docs/api-reference/crmtask/create-a-task.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /crm/tasks ---- diff --git a/docs/api-reference/crmtask/list-a-batch-of-tasks.mdx b/docs/api-reference/crmtask/list-a-batch-of-tasks.mdx deleted file mode 100644 index a91525be0..000000000 --- a/docs/api-reference/crmtask/list-a-batch-of-tasks.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/tasks ---- diff --git a/docs/api-reference/crmtask/retrieve-a-task.mdx b/docs/api-reference/crmtask/retrieve-a-task.mdx deleted file mode 100644 index 0f2a8de1e..000000000 --- a/docs/api-reference/crmtask/retrieve-a-task.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/tasks/{id} ---- diff --git a/docs/api-reference/crmtask/update-a-task.mdx b/docs/api-reference/crmtask/update-a-task.mdx deleted file mode 100644 index 28cef935e..000000000 --- a/docs/api-reference/crmtask/update-a-task.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /crm/tasks ---- diff --git a/docs/api-reference/crmuser/list-a-batch-of-users.mdx b/docs/api-reference/crmuser/list-a-batch-of-users.mdx deleted file mode 100644 index 9f4bda207..000000000 --- a/docs/api-reference/crmuser/list-a-batch-of-users.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/users ---- diff --git a/docs/api-reference/crmuser/retrieve-a-user.mdx b/docs/api-reference/crmuser/retrieve-a-user.mdx deleted file mode 100644 index 17089334f..000000000 --- a/docs/api-reference/crmuser/retrieve-a-user.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /crm/users/{id} ---- diff --git a/docs/api-reference/errors.mdx b/docs/api-reference/errors.mdx deleted file mode 100644 index 7c3ecbcb7..000000000 --- a/docs/api-reference/errors.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Errors" -description: "" ---- - -Panora uses conventional HTTP response codes to indicate the success or failure of an API request. In general:
Codes in the `2xx` range indicate success.
Codes in the `4xx` range indicate an error that failed given the information provided (e.g., a required parameter was omitted, etc.).
Codes in the `5xx` range indicate an error with Panora’s servers (these are rare). - -Some `4xx` errors that could be handled programmatically include an error code that briefly explains the error reported. \ No newline at end of file diff --git a/docs/api-reference/events/retrieve-events.mdx b/docs/api-reference/events/retrieve-events.mdx deleted file mode 100644 index d1743a7d1..000000000 --- a/docs/api-reference/events/retrieve-events.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /events ---- \ No newline at end of file diff --git a/docs/api-reference/field-mapping/define-target-field.mdx b/docs/api-reference/field-mapping/define-target-field.mdx deleted file mode 100644 index 8d8865426..000000000 --- a/docs/api-reference/field-mapping/define-target-field.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /field-mapping/define ---- \ No newline at end of file diff --git a/docs/api-reference/field-mapping/map-custom-field.mdx b/docs/api-reference/field-mapping/map-custom-field.mdx deleted file mode 100644 index fd441dc25..000000000 --- a/docs/api-reference/field-mapping/map-custom-field.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /field-mapping/map ---- \ No newline at end of file diff --git a/docs/api-reference/field-mapping/retrieve-custom-properties.mdx b/docs/api-reference/field-mapping/retrieve-custom-properties.mdx deleted file mode 100644 index 5818fad0c..000000000 --- a/docs/api-reference/field-mapping/retrieve-custom-properties.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /field-mapping/properties ---- \ No newline at end of file diff --git a/docs/api-reference/field-mapping/retrieve-field-mapping-entities.mdx b/docs/api-reference/field-mapping/retrieve-field-mapping-entities.mdx deleted file mode 100644 index 10302409f..000000000 --- a/docs/api-reference/field-mapping/retrieve-field-mapping-entities.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /field-mapping/entities ---- \ No newline at end of file diff --git a/docs/api-reference/field-mapping/retrieve-field-mappings-values.mdx b/docs/api-reference/field-mapping/retrieve-field-mappings-values.mdx deleted file mode 100644 index 14ffc5da3..000000000 --- a/docs/api-reference/field-mapping/retrieve-field-mappings-values.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /field-mapping/value ---- \ No newline at end of file diff --git a/docs/api-reference/field-mapping/retrieve-field-mappings.mdx b/docs/api-reference/field-mapping/retrieve-field-mappings.mdx deleted file mode 100644 index 9c359d295..000000000 --- a/docs/api-reference/field-mapping/retrieve-field-mappings.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /field-mapping/attribute ---- \ No newline at end of file diff --git a/docs/api-reference/introduction.mdx b/docs/api-reference/introduction.mdx deleted file mode 100644 index d3e80e3cd..000000000 --- a/docs/api-reference/introduction.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Introduction" -description: "" ---- - -The Panora API is organized around [REST](https://en.wikipedia.org/wiki/REST). -Our unified API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs. - -## Base URL - - - - ```https://api.panora.dev/``` - - - - ```http://localhost:3000/``` - - - -## Just getting started? - -Check out our [development quickstart](/quick-start) guide. diff --git a/docs/api-reference/linked-users/add-linked-user.mdx b/docs/api-reference/linked-users/add-linked-user.mdx deleted file mode 100644 index 23f482ff2..000000000 --- a/docs/api-reference/linked-users/add-linked-user.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /linked-users/create ---- \ No newline at end of file diff --git a/docs/api-reference/linked-users/retrieve-a-linked-user.mdx b/docs/api-reference/linked-users/retrieve-a-linked-user.mdx deleted file mode 100644 index 693970f0b..000000000 --- a/docs/api-reference/linked-users/retrieve-a-linked-user.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /linked-users/single ---- \ No newline at end of file diff --git a/docs/api-reference/linked-users/retrieve-linked-users.mdx b/docs/api-reference/linked-users/retrieve-linked-users.mdx deleted file mode 100644 index 9e25ad733..000000000 --- a/docs/api-reference/linked-users/retrieve-linked-users.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /linked-users ---- \ No newline at end of file diff --git a/docs/api-reference/magic-link/create-a-magic-link.mdx b/docs/api-reference/magic-link/create-a-magic-link.mdx deleted file mode 100644 index e09ec86ec..000000000 --- a/docs/api-reference/magic-link/create-a-magic-link.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /magic-link/create ---- \ No newline at end of file diff --git a/docs/api-reference/magic-link/retrieve-a-magic-link.mdx b/docs/api-reference/magic-link/retrieve-a-magic-link.mdx deleted file mode 100644 index 6296335a7..000000000 --- a/docs/api-reference/magic-link/retrieve-a-magic-link.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /magic-link/single ---- \ No newline at end of file diff --git a/docs/api-reference/magic-link/retrieve-magic-links.mdx b/docs/api-reference/magic-link/retrieve-magic-links.mdx deleted file mode 100644 index bff5d87f6..000000000 --- a/docs/api-reference/magic-link/retrieve-magic-links.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /magic-link ---- \ No newline at end of file diff --git a/docs/api-reference/organisations/create-an-organisation.mdx b/docs/api-reference/organisations/create-an-organisation.mdx deleted file mode 100644 index 64f620160..000000000 --- a/docs/api-reference/organisations/create-an-organisation.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /organisations/create ---- \ No newline at end of file diff --git a/docs/api-reference/organisations/retrieve-organisations.mdx b/docs/api-reference/organisations/retrieve-organisations.mdx deleted file mode 100644 index c8c83ef46..000000000 --- a/docs/api-reference/organisations/retrieve-organisations.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /organisations ---- \ No newline at end of file diff --git a/docs/api-reference/pagination.mdx b/docs/api-reference/pagination.mdx deleted file mode 100644 index b6e040718..000000000 --- a/docs/api-reference/pagination.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Pagination" -description: "" ---- -Panora’s list API methods use cursor-based pagination through the `limit` and `cursor` parameters. diff --git a/docs/api-reference/passthrough/make-a-passthrough-request.mdx b/docs/api-reference/passthrough/make-a-passthrough-request.mdx deleted file mode 100644 index 3ce4d7143..000000000 --- a/docs/api-reference/passthrough/make-a-passthrough-request.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /passthrough ---- \ No newline at end of file diff --git a/docs/api-reference/projects/create-a-project.mdx b/docs/api-reference/projects/create-a-project.mdx deleted file mode 100644 index c222dcfd4..000000000 --- a/docs/api-reference/projects/create-a-project.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /projects/create ---- \ No newline at end of file diff --git a/docs/api-reference/projects/retrieve-projects.mdx b/docs/api-reference/projects/retrieve-projects.mdx deleted file mode 100644 index f3f324d52..000000000 --- a/docs/api-reference/projects/retrieve-projects.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /projects ---- \ No newline at end of file diff --git a/docs/api-reference/ticketingaccount/list-a-batch-of-accounts.mdx b/docs/api-reference/ticketingaccount/list-a-batch-of-accounts.mdx deleted file mode 100644 index a0779622c..000000000 --- a/docs/api-reference/ticketingaccount/list-a-batch-of-accounts.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/accounts ---- diff --git a/docs/api-reference/ticketingaccount/retrieve-an-account.mdx b/docs/api-reference/ticketingaccount/retrieve-an-account.mdx deleted file mode 100644 index de2b325e2..000000000 --- a/docs/api-reference/ticketingaccount/retrieve-an-account.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/accounts/{id} ---- diff --git a/docs/api-reference/ticketingattachment/add-a-batch-of-attachments.mdx b/docs/api-reference/ticketingattachment/add-a-batch-of-attachments.mdx deleted file mode 100644 index eb8259154..000000000 --- a/docs/api-reference/ticketingattachment/add-a-batch-of-attachments.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ticketing/attachments/batch ---- diff --git a/docs/api-reference/ticketingattachment/create-a-attachment.mdx b/docs/api-reference/ticketingattachment/create-a-attachment.mdx deleted file mode 100644 index e9103e089..000000000 --- a/docs/api-reference/ticketingattachment/create-a-attachment.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ticketing/attachments ---- diff --git a/docs/api-reference/ticketingattachment/download-a-attachment.mdx b/docs/api-reference/ticketingattachment/download-a-attachment.mdx deleted file mode 100644 index 8ceca6706..000000000 --- a/docs/api-reference/ticketingattachment/download-a-attachment.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/attachments/{id}/download ---- diff --git a/docs/api-reference/ticketingattachment/list-a-batch-of-attachments.mdx b/docs/api-reference/ticketingattachment/list-a-batch-of-attachments.mdx deleted file mode 100644 index 6a8789b11..000000000 --- a/docs/api-reference/ticketingattachment/list-a-batch-of-attachments.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/attachments ---- diff --git a/docs/api-reference/ticketingattachment/retrieve-a-attachment.mdx b/docs/api-reference/ticketingattachment/retrieve-a-attachment.mdx deleted file mode 100644 index 8bf5da473..000000000 --- a/docs/api-reference/ticketingattachment/retrieve-a-attachment.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/attachments/{id} ---- diff --git a/docs/api-reference/ticketingcomment/add-a-batch-of-comments.mdx b/docs/api-reference/ticketingcomment/add-a-batch-of-comments.mdx deleted file mode 100644 index 2f31e87e9..000000000 --- a/docs/api-reference/ticketingcomment/add-a-batch-of-comments.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ticketing/comments/batch ---- diff --git a/docs/api-reference/ticketingcomment/create-a-comment.mdx b/docs/api-reference/ticketingcomment/create-a-comment.mdx deleted file mode 100644 index a58d8584c..000000000 --- a/docs/api-reference/ticketingcomment/create-a-comment.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ticketing/comments ---- diff --git a/docs/api-reference/ticketingcomment/list-a-batch-of-comments.mdx b/docs/api-reference/ticketingcomment/list-a-batch-of-comments.mdx deleted file mode 100644 index dd6ae19eb..000000000 --- a/docs/api-reference/ticketingcomment/list-a-batch-of-comments.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/comments ---- diff --git a/docs/api-reference/ticketingcomment/retrieve-a-comment.mdx b/docs/api-reference/ticketingcomment/retrieve-a-comment.mdx deleted file mode 100644 index 9a0edd86a..000000000 --- a/docs/api-reference/ticketingcomment/retrieve-a-comment.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/comments/{id} ---- diff --git a/docs/api-reference/ticketingcomment/update-a-comment.mdx b/docs/api-reference/ticketingcomment/update-a-comment.mdx deleted file mode 100644 index 301a6a2bc..000000000 --- a/docs/api-reference/ticketingcomment/update-a-comment.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ticketing/comments ---- diff --git a/docs/api-reference/ticketingcontact/list-a-batch-of-contacts.mdx b/docs/api-reference/ticketingcontact/list-a-batch-of-contacts.mdx deleted file mode 100644 index 03bf47ae9..000000000 --- a/docs/api-reference/ticketingcontact/list-a-batch-of-contacts.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/contacts ---- diff --git a/docs/api-reference/ticketingcontact/retrieve-a-contact.mdx b/docs/api-reference/ticketingcontact/retrieve-a-contact.mdx deleted file mode 100644 index e4e82f35f..000000000 --- a/docs/api-reference/ticketingcontact/retrieve-a-contact.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/contacts/{id} ---- diff --git a/docs/api-reference/ticketingtag/list-a-batch-of-tags.mdx b/docs/api-reference/ticketingtag/list-a-batch-of-tags.mdx deleted file mode 100644 index 2858f0909..000000000 --- a/docs/api-reference/ticketingtag/list-a-batch-of-tags.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/tags ---- diff --git a/docs/api-reference/ticketingtag/retrieve-a-tag.mdx b/docs/api-reference/ticketingtag/retrieve-a-tag.mdx deleted file mode 100644 index d0c688123..000000000 --- a/docs/api-reference/ticketingtag/retrieve-a-tag.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/tags/{id} ---- diff --git a/docs/api-reference/ticketingteam/list-a-batch-of-teams.mdx b/docs/api-reference/ticketingteam/list-a-batch-of-teams.mdx deleted file mode 100644 index f1bd8b211..000000000 --- a/docs/api-reference/ticketingteam/list-a-batch-of-teams.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/teams ---- diff --git a/docs/api-reference/ticketingteam/retrieve-a-team.mdx b/docs/api-reference/ticketingteam/retrieve-a-team.mdx deleted file mode 100644 index 49b126142..000000000 --- a/docs/api-reference/ticketingteam/retrieve-a-team.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/teams/{id} ---- diff --git a/docs/api-reference/ticketingticket/add-a-batch-of-tickets.mdx b/docs/api-reference/ticketingticket/add-a-batch-of-tickets.mdx deleted file mode 100644 index 7b9fe1bf6..000000000 --- a/docs/api-reference/ticketingticket/add-a-batch-of-tickets.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ticketing/tickets/batch ---- diff --git a/docs/api-reference/ticketingticket/create-a-ticket.mdx b/docs/api-reference/ticketingticket/create-a-ticket.mdx deleted file mode 100644 index 1b3def09e..000000000 --- a/docs/api-reference/ticketingticket/create-a-ticket.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /ticketing/tickets ---- diff --git a/docs/api-reference/ticketingticket/list-a-batch-of-tickets.mdx b/docs/api-reference/ticketingticket/list-a-batch-of-tickets.mdx deleted file mode 100644 index 60bf7f891..000000000 --- a/docs/api-reference/ticketingticket/list-a-batch-of-tickets.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/tickets ---- diff --git a/docs/api-reference/ticketingticket/retrieve-a-ticket.mdx b/docs/api-reference/ticketingticket/retrieve-a-ticket.mdx deleted file mode 100644 index 51d4986d8..000000000 --- a/docs/api-reference/ticketingticket/retrieve-a-ticket.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/tickets/{id} ---- diff --git a/docs/api-reference/ticketingticket/update-a-ticket.mdx b/docs/api-reference/ticketingticket/update-a-ticket.mdx deleted file mode 100644 index 84975c2af..000000000 --- a/docs/api-reference/ticketingticket/update-a-ticket.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: patch /ticketing/tickets ---- diff --git a/docs/api-reference/ticketinguser/list-a-batch-of-users.mdx b/docs/api-reference/ticketinguser/list-a-batch-of-users.mdx deleted file mode 100644 index 2c339b395..000000000 --- a/docs/api-reference/ticketinguser/list-a-batch-of-users.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/users ---- diff --git a/docs/api-reference/ticketinguser/retrieve-a-user.mdx b/docs/api-reference/ticketinguser/retrieve-a-user.mdx deleted file mode 100644 index 0bdd75f2f..000000000 --- a/docs/api-reference/ticketinguser/retrieve-a-user.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /ticketing/users/{id} ---- diff --git a/docs/api-reference/webhook/add-webhook-metadata.mdx b/docs/api-reference/webhook/add-webhook-metadata.mdx deleted file mode 100644 index b44b49204..000000000 --- a/docs/api-reference/webhook/add-webhook-metadata.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: post /webhook ---- \ No newline at end of file diff --git a/docs/api-reference/webhook/retrieve-webhooks-metadata.mdx b/docs/api-reference/webhook/retrieve-webhooks-metadata.mdx deleted file mode 100644 index de437dd48..000000000 --- a/docs/api-reference/webhook/retrieve-webhooks-metadata.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: get /webhook ---- \ No newline at end of file diff --git a/docs/api-reference/webhook/update-webhook-status.mdx b/docs/api-reference/webhook/update-webhook-status.mdx deleted file mode 100644 index 1067e082d..000000000 --- a/docs/api-reference/webhook/update-webhook-status.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: put /webhook/{id} ---- \ No newline at end of file diff --git a/docs/backend-sdk/python.mdx b/docs/backend-sdk/python.mdx deleted file mode 100644 index 80a9c5797..000000000 --- a/docs/backend-sdk/python.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: "Python" -description: "Introduction to our Python SDK" ---- - -## Installing & instantiating the Python SDK - -```bash -pip install panorasdk -``` - -Instantiate the SDK: - -Go to your dashboard to get your [API Key](https://dashboard.panora.dev/api-keys) - -```python -sdk = PanoraSDK('YOUR_API_KEY') -``` - -Or through the `set_access_token` method: - -```python -sdk = PanoraSDK() -sdk.set_access_token('YOUR_API_KEY') -``` - -You can also set it for each service individually: - -```python -sdk = PanoraSDK() -sdk.main.set_access_token('YOUR_API_KEY') -``` - -### List all connections to your app - -```python -from panorasdk import PanoraSDK - -sdk = PanoraSDK() - -sdk.set_access_token("YOUR_API_KEY") - -results = sdk.connections.get_connections() - -print(results) -``` - -This will list all the connections available, across all users. You should get an object similar to this one below. Read more about the `connection` object here in the [API reference](/connections/overview) or the [glossary](/glossary/connection-object). - -```json -{ - "id_connection": "6cd057cb-39df-44ce-9be8-ax9d167c3940", - "status": "valid", - "provider_slug": "hubspot", - "account_url": null, - "token_type": "oauth", - "access_token": "904570287538dddf72fd821e4d5cec51:66266ee62310752d4a243c12b133656edd5af42947a832f4439c710334e045e59782107d40e856c27e813b7a6ed068100376b3ff83d1c8237330ba034605dd846650524e6fcfb708e3f62b1401d8a0dc3d90022cdf9ad1c76fc9209f3a5d153f6e33bbb8f6642600a6c9a098e81fb1e2da0fdff0455b7823519fba195b5065b4319a314013e22f934c80e4f60bec4385989c92c2dd9036d19f720e85b10325c42dc8a035c363e279af0e4ab2c4cd016051c5b32bf6009bf0df0aa8565d048856", - "refresh_token": "904570287538dddf72fd821e4d5cec51:58d9c1492b908caef83885b467d1ab1ea9fc6994a59ed4392edbb5365b89a02a8a4995347d8ec37037192a96856e2c24", - "expiration_timestamp": "2023-12-20T18:44:44.869Z", - "created_at": "2023-12-10T18:20:06.275Z", - "id_project": "801f9ede-c698-4e66-a7fc-48d19eebaa4f", - "id_linked_user": "d7a0af02-0f9b-40a6-86a9-612dcfe341fe" -} -``` diff --git a/docs/backend-sdk/typescript.mdx b/docs/backend-sdk/typescript.mdx deleted file mode 100644 index 4cb38b0b8..000000000 --- a/docs/backend-sdk/typescript.mdx +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "TypeScript" -description: "Introduction to our Typescript SDK" ---- - -## Installing & instantiating the Typescript SDK - - You can find the Typescript SDK on NPM - [here](https://www.npmjs.com/package/@panora/sdk-typescript) - - -```bash -npm i @panora/typescript-sdk -``` - -Instantiate the SDK: - -Go to your dashboard to get your [API Key](https://dashboard.panora.dev/api-keys) - -```javascript -import { PanoraSDK } from "@panora/typescript-sdk"; - -const sdk = new PanoraSDK("YOUR_API_KEY"); -``` - -### List all connections to your app - -```javascript -import { PanoraSDK } from "@panora/typescript-sdk"; - -const sdk = new PanoraSDK("YOUR_API_KEY"); - -(async () => { - const result = await sdk.connections.getConnections(); - console.log(result); -})(); -``` - -This will list all the connections available, across all users. You should get an object similar to this one below. Read more about the `connection` object here in the [API reference](/connections/overview) or the [glossary](/glossary/connection-object). - -```json -{ - "id_connection": "6cd057cb-39df-44ce-9be8-ax9d167c3940", - "status": "valid", - "provider_slug": "hubspot", - "account_url": null, - "token_type": "oauth", - "access_token": "904570287538dddf72fd821e4d5cec51:66266ee62310752d4a243c12b133656edd5af42947a832f4439c710334e045e59782107d40e856c27e813b7a6ed068100376b3ff83d1c8237330ba034605dd846650524e6fcfb708e3f62b1401d8a0dc3d90022cdf9ad1c76fc9209f3a5d153f6e33bbb8f6642600a6c9a098e81fb1e2da0fdff0455b7823519fba195b5065b4319a314013e22f934c80e4f60bec4385989c92c2dd9036d19f720e85b10325c42dc8a035c363e279af0e4ab2c4cd016051c5b32bf6009bf0df0aa8565d048856", - "refresh_token": "904570287538dddf72fd821e4d5cec51:58d9c1492b908caef83885b467d1ab1ea9fc6994a59ed4392edbb5365b89a02a8a4995347d8ec37037192a96856e2c24", - "expiration_timestamp": "2023-12-20T18:44:44.869Z", - "created_at": "2023-12-10T18:20:06.275Z", - "id_project": "801f9ede-c698-4e66-a7fc-48d19eebaa4f", - "id_linked_user": "d7a0af02-0f9b-40a6-86a9-612dcfe341fe" -} -``` diff --git a/docs/connections/api/list.mdx b/docs/connections/api/list.mdx deleted file mode 100644 index 9f7fc07af..000000000 --- a/docs/connections/api/list.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: 'List connections' -description: 'List all connections across all platforms using this endpoint' -openapi: "GET /connections" ---- \ No newline at end of file diff --git a/docs/connections/overview.mdx b/docs/connections/overview.mdx deleted file mode 100644 index e0571b930..000000000 --- a/docs/connections/overview.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: 'The connection object' -description: "Introduction to Panora's `connection` concept" ---- - -## The `connection` object represents an access right to a user's data - - - -```json JSON -{ - "id_connection": "6cd057cb-39df-44ce-9be8-ab9d167c3940", - "status": "valid", - "connection_token": "e6d46c3763dc3e85fb078eae952654bd4f4861b313b7ccae201b91aa37532b71", - "provider_slug": "hubspot", - "account_url": null, - "expiration_timestamp": "2023-12-20T18:44:44.869Z", - "created_at": "2023-12-10T18:20:06.275Z", - "id_project": "801f9ede-c698-4e66-a7fc-48d19eebaa4f", - "id_linked_user": "d7a0af02-0f9b-40a6-86a9-612dcfe341fe" -} -``` - - - - - - - - Panora Defined UUID for this connection - - - - The status of the `connection`. Can be `active`, or `expired` - - - - The provider slug for this `connection` - - - - The account URL for this `connection`. Optionnal. - - - - The token type for this `connection` - - - - The access token for this `connection` - - - - The refresh token for this `connection` - - - - The expiration timestamp for this `connection` - - - - The creation timestamp for this `connection` - - - - The project UUID this `connection` belongs to. - - - - The linked user UUID this `connection` belongs to. - - - - diff --git a/docs/core-concepts/auth.mdx b/docs/core-concepts/auth.mdx deleted file mode 100644 index 359529fc9..000000000 --- a/docs/core-concepts/auth.mdx +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: "Authentication" -description: "Learn how to authenticate your requests to the Panora API." -icon: "key" ---- - - - This guide assumes you have a Panora account, or a working self-hosted version - - -### The Panora API uses two parameters to indentify requests. - -- `API key` which is a Bearer Acess Token used to authenticate yourself to our backend. -- `connection_token` which serves to identify which of your user's you're making API calls for. - -Depending on your setup, you should make requests to one of those endpoints: - - - - `https://api.panora.dev/` - - - - `https://api-eu.panora.dev/` - - - - `http://localhost:3000/` - - - -## Learn how to generate your API Keys - - - **Creating your API Key**
- Go to your [dashboard](https://dashboard.panora.dev), and visit the _API Keys_ [section](https://dashboard.panora.dev/api-keys). Click the `Create New Key` button. - - - - - Safely store your API Key - Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth. - -## Catch connection tokens - -A `connection_token` is created everytime a user connects an account to your platform.
-Once you've set up the auth flow through [magic-link or using the embedded snippet](/quick-start), you need to setup a [webhook](/webhooks/overview) and listen to events tagged as `connection.created`. - - - The `connection_token` is a string, located in the _data_ object, inside a - `connection.created` event. - - -```json Example connection.created event -{ - "id_event": "dc2d12b9-dd07-4e33-a244-d0560a9eeed7", - "type": "connection.created", - "data": { - "id" : "6fc7017a-6596-4b05-81b6-595296a59f87" - "connection_token": "MY_CONNECTION_TOKEN", - "provider_slug": "hubspot", - ... - }, - ... -} -``` - -Congrats ! You have everything you need to make authenticated requests. - -## Make your first API request with your `API Key` and a `connection_token` - -Take a look at these examples to understand the concept. -We also recommend practising by looking at the specific verticals you want to integrate. - - - You can find the Typescript SDK on NPM - [here](https://www.npmjs.com/package/@panora/sdk-typescript) - -In this example, we will create a contact in a CRM. Visit other sections of the [documentation](/ticketing/overview) to find category-specific examples. - - ```javascript TypeScript - import { PanoraSDK } from '@panora/sdk-typescript'; - - const sdk = new PanoraSDK({ accessToken: "MY_API_KEY" }); - - const input = { - first_name: 'tom', - last_name: 'jedusor', - email_addresses: [ - { - 'email_address': 'tom@jedusor.com', - 'email_address_type': 'PERSONAL' - } - ], - phone_numbers: [ - { - 'phone_number': '+33650438278', - 'phone_type': 'MOBILE' - } - ], - }; - - const result = await sdk.crmContact.addContact(input, 'MY_USER_CONNECTION_TOKEN', { - remoteData: true, - }); - - console.log(result); - ``` - - ```python Python - from panorasdk import PanoraSDK - - sdk = PanoraSDK() - - sdk.set_access_token("MY_API_KEY") - - request_body = { - 'first_name': 'tom', - 'last_name': 'jedusor', - 'email_addresses': [ - { - 'email_address': 'tom@jedusor.com', - 'email_address_type': 'PERSONAL' - } - ], - 'phone_numbers': [ - { - 'phone_number': '+33650438278', - 'phone_type': 'MOBILE' - } - ] - } - - results = sdk.crm_contact.add_contact( - request_input = request_body, - connection_token = 'MY_USER_CONNECTION_TOKEN', - remote_data = True - ) - - print(results) - ``` - - ```shell Curl - curl --request POST \ - --url https://api.panora.dev/crm/contacts \ - --header 'Authorization: Bearer ' \ - --header 'Content-Type: application/json' \ - --header 'x-connection-token: ' \ - --data '{ - "first_name": "tom", - "last_name": "jedusor", - "email_addresses": [ - { - "email_address": "tom@jedusor.com", - "email_address_type": "PERSONAL" - } - ], - "phone_numbers": [ - { - "phone_number": "+33650438278", - "phone_type": "MOBILE" - } - ] - }' - ``` - - -Read more about our SDKs in [TypeScript](/backend-sdk/typescript), [Python](/backend-sdk/python). diff --git a/docs/core-concepts/custom-fields.mdx b/docs/core-concepts/custom-fields.mdx deleted file mode 100644 index 333d4a76c..000000000 --- a/docs/core-concepts/custom-fields.mdx +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: "Custom Fields" -description: "Easily extend Panora's unified model to recognize specific fields" -icon: "code" ---- - -## Overview - -Creating a `Field Mapping` involves two majors actions: - -- Defining a custom field on Panora's side -- Mapping it to a field from your customer's software. - -In this video we define a field and then once a connection is available we fetch fields inside your user's software so you can map the custom field with Panora. - -In our case we first creating a custom field inside Hubspot called `favorite_color` and then we do the field mapping within Panora. - -You must have a connection, hence a valid linked user so you can create custom fields on their behalf. In this example, we create the custom field in the linked user software but in real use case it would be already done by him and Panora would fetch all fields to map. - - - - -## Create a custom field mapping using our UI dashboard - - - - - Login to your [account dashboard](https://dashboard.panora.dev) and click on _Configuration_ [section](https://dashboard.panora.dev/configuration) and go to tab **Field Mapping**. - - - - Click `Define a custom field`. Select a unified object you want to extend, and give your custom field a slug and a friendly name. You also need to select a data type. - - - - -Now, click on the `Map a custom field` button. To finish the mapping, select the custom field you just created, and fill the fields `Provider` and `Linked User Id`. - - - - - -You will now find all the fields your user has in its software. Pick the one that you want to map to. Click `Map`. - - - - - -## Create a custom field mapping using our API - -The following example creates a custom field mapping in two steps (**define and map**) where we map a remote field called `hair_color_hubspot_123_id` (existing in the `Husbpot` provider) and mapping it to the `crm.contact` unified model of Panora under the name of `hair_color`. - -```shell Create custom field -curl --request POST \ - --url https://api.panora.dev/field-mappings \ - --header 'Authorization: Bearer ' \ - --header 'Content-Type: application/json' \ - --data '{ - "object_type_owner": "crm.contact", - "name": "hair_color", - "description": "My hair_color field mapping", - "data_type": "text", - "source_custom_field_id": "hair_color_hubspot_123_id", # id of the remote field inside the remote provider - "source_provider": "hubspot", - "linked_user_id": "acme_customer_a" - }' -``` -You may want to define it in two steps if you miss some information to map in the 1st step. - -The following example creates a custom field mapping in two steps (**define and map**) where we map a remote field called `hair_color_hubspot_123_id` (existing in the `Husbpot` provider) and mapping it to the `crm.contact` unified model of Panora under the name of `hair_color`. - - - ```shell Define custom field - curl --request POST \ - --url https://api.panora.dev/field-mappings/define \ - --header 'Authorization: Bearer ' \ - --header 'Content-Type: application/json' \ - --data '{ - "object_type_owner": "crm.contact", - "name": "hair_color", - "description": "My hair_color field mapping", - "data_type": "text" - }' - ``` - - ```shell Map custom field - curl --request POST \ - --url https://api.panora.dev/field-mappings/map \ - --header 'Authorization: Bearer ' \ - --header 'Content-Type: application/json' \ - --data '{ - "attributeId": "id_defined_field", # retrieve that from response of the /define request - "source_custom_field_id": "hair_color_hubspot_123_id", # id of the remote field inside the remote provider - "source_provider": "hubspot", - "linked_user_id": "acme_customer_a" - }' - ``` - - -[✏️ Suggest an update](https://tally.so/r/mRD1QQ?feedback_source=custom_fields) - -[Need help? Come chat on Discord!](https://discord.gg/G7fr4HNyTb) diff --git a/docs/core-concepts/embedded-catalog.mdx b/docs/core-concepts/embedded-catalog.mdx deleted file mode 100644 index ffa1e7463..000000000 --- a/docs/core-concepts/embedded-catalog.mdx +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: "Embedded Catalog" -description: "Use Embedded Panora Catalog to invite your users to grant you access to their data without a dedicated website. Create a full connection flow in just a few clicks. No code required." -icon: "wand-magic-sparkles" ---- - -Hero Light - -## Import our pre-built React Component - - - You can find the component on NPM - [here](https://www.npmjs.com/package/@panora/embedded-card-react) - - - - - - ```javascript React - npm i @panora/embedded-card-react - ``` - ```javascript Vue - ``` - - ```javascript Angular - ``` - - - - - - ```javascript React - import "@panora/embedded-card-react/dist/index.css"; - import PanoraProviderCard from "@panora/embedded-card-react"; - ``` - ```javascript Vue - ``` - - ```javascript Angular - ``` - - - - - - ```javascript React - - ``` - ```javascript Vue - ``` - - ```javascript Angular - ``` - - - - - You'll be asked for two informations: an email and an `Origin User - Identifier`. The `Origin User Identifier` is the id of the user you're - inviting, as represented in your systems. - - -Click Generate. You can now share the link! - - - -The connection will show as `status` until the user connects to a platform. -We recommend listening to webhooks to get notified once a user connects. diff --git a/docs/core-concepts/magic-links.mdx b/docs/core-concepts/magic-links.mdx deleted file mode 100644 index 71e3dcff6..000000000 --- a/docs/core-concepts/magic-links.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: "Magic Links" -description: "Use Magic Links to invite your users to grant you access to their data without a dedicated website. Create a full connection flow in just a few clicks. **No code required.**" -icon: "wand-magic-sparkles" ---- - - - - - -## Send your first Magic Link - -[We recommend listening to webhooks to get notified once a user connects and catch the connection token used for requests. -](/recipes/catch-connection-token) - - - -Login to your [account dashboard](https://dashboard.panora.dev) - - - Go to the _Connections_ [section](https://dashboard.panora.dev/connections) - and click button `Create a Magic Link` - - -Click `Create a Unique Magic Link` - - - You'll be asked for two informations: an `Origin User Email` and an `Origin - User Identifier`. The `Origin User Identifier` is the id of the user you're - inviting, as represented in your systems. If you already have created a - [Linked User](/recipes/import-existing-users) you have the option to select - it. - - -Click `Generate` - - - You may see CLIENT_ID not found for some providers. It means we don't have an OAuth Panora App published yet so you may need to input your own credentials. (see this [guide](/recipes/add-custom-provider-creds)) -Once the user successfully completes the granting auth flow, the connection will have a `status` value of `valid`. diff --git a/docs/core-concepts/passthrough-requests.mdx b/docs/core-concepts/passthrough-requests.mdx deleted file mode 100644 index b567cc952..000000000 --- a/docs/core-concepts/passthrough-requests.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: 'Passthrough Requests' -description: 'Read and write data using native formats, without managing tokens yourself' -icon: 'image' ---- diff --git a/docs/core-concepts/sync-strategies.mdx b/docs/core-concepts/sync-strategies.mdx deleted file mode 100644 index 8980c1b07..000000000 --- a/docs/core-concepts/sync-strategies.mdx +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Sync Strategies" -description: "" -icon: "rotate" ---- - -Unfortunately, webhooks aren’t always available. Many Third Party applications don’t support real time events. But rest assured, Panora has you covered! With our robust polling technology, our servers will automatically check for new records created/updated and proxy those changes to your application in near real-time. - -## Periodic Sync - -By default, for every single linked account that you may have, we sync all 3rd parties they've connected across all common models. -These sync jobs are done every 8 hours. - - diff --git a/docs/crm/companies/api/create.mdx b/docs/crm/companies/api/create.mdx deleted file mode 100644 index 1d72c6c64..000000000 --- a/docs/crm/companies/api/create.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Create a company" -openapi: "POST /crm/companies" ---- diff --git a/docs/crm/companies/api/get.mdx b/docs/crm/companies/api/get.mdx deleted file mode 100644 index d4a4e0ca5..000000000 --- a/docs/crm/companies/api/get.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Retrieve a company" -openapi: "GET /crm/companies/{id}" ---- diff --git a/docs/crm/companies/api/list.mdx b/docs/crm/companies/api/list.mdx deleted file mode 100644 index 5e6675c19..000000000 --- a/docs/crm/companies/api/list.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "List companies" -openapi: "GET /crm/companies" ---- diff --git a/docs/crm/companies/api/update.mdx b/docs/crm/companies/api/update.mdx deleted file mode 100644 index ca5c05642..000000000 --- a/docs/crm/companies/api/update.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Update a company" -openapi: "PATCH /crm/companies" ---- diff --git a/docs/crm/companies/overview.mdx b/docs/crm/companies/overview.mdx deleted file mode 100644 index 7137deb37..000000000 --- a/docs/crm/companies/overview.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: Overview ---- diff --git a/docs/crm/contacts/api/create.mdx b/docs/crm/contacts/api/create.mdx deleted file mode 100644 index 77c1b6eab..000000000 --- a/docs/crm/contacts/api/create.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Create a contact" -description: "Create a contact in any CRM using this endpoint" -openapi: "POST /crm/contacts" ---- diff --git a/docs/crm/contacts/api/get.mdx b/docs/crm/contacts/api/get.mdx deleted file mode 100644 index 54ed5e337..000000000 --- a/docs/crm/contacts/api/get.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Retrieve a contact" -description: "Retrieve a contact by id from connected CRMs" -openapi: "GET /crm/contacts/{id}" ---- diff --git a/docs/crm/contacts/api/list.mdx b/docs/crm/contacts/api/list.mdx deleted file mode 100644 index 53bc206b0..000000000 --- a/docs/crm/contacts/api/list.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "List all contacts" -description: "Retrieve all contacts from all connected CRMs using one endpoint" -openapi: "GET /crm/contacts" ---- - -Example API Response: - -```json JSON -{ - "id_contact": "f4e1ff72-e727-409a-8935-a63a63d4891e" - "first_name": "John" - "last_name": "Doe" -} -``` diff --git a/docs/crm/contacts/api/update.mdx b/docs/crm/contacts/api/update.mdx deleted file mode 100644 index be0eccb0b..000000000 --- a/docs/crm/contacts/api/update.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Update a contact" -description: "Update a contacts from any connected CRM" -openapi: "PATCH /crm/contacts" ---- diff --git a/docs/crm/contacts/overview.mdx b/docs/crm/contacts/overview.mdx deleted file mode 100644 index c709b0618..000000000 --- a/docs/crm/contacts/overview.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: 'The Contact Object' -description: 'Introduction to our CRM `contact` Unified Model' ---- -## The Unified `contact` Object -The `contact` object is used to represent an existing point of contact at a company in a CRM system. - -### Properties - - -```json JSON -{ - "id_contact": "f4e1ff72-e727-409a-8935-a63a63d4891e", - "first_name": "John", - "last_name": "Doe", - "email_addresses": [ - { - "email_address": "johndoe@work.com", - "email_address_type": "work" - }, - { - "email_address": "johndoe@personal.com", - "email_address_type": "phone" - } - ], - "phone_numbers": [ - { - "phone_number": "01982833", - "phone_type": "primary" - } - ], - "field_mappings": [ - { - "hair_color": "black" - } - ], - "remote_data": { - } -} -``` - - - - - - - - Panora Defined UUID for this contact - - - - The full name of the `contact` - - - - The last name of this `contact` - - - - Array containing all the non-standard data points for this `contact`. Requires mapping. - - - - Original data, as provided by the source CRM - - - - - -## Supported Features for each CRM Contact Object: -| Panora | Unified Write | Passthrough Requests | Remote Data | Managed Webhooks | Webhooks Unified | -| ------------- | ------------- | -------------------- | ----------- | ----------------- | ---------------- | -| Hubspot | ✔️ | ✔️ | ✔️ | ❌ | ❌ | -| Zoho | ✔️ | ✔️ | ✔️ | ❌ | ❌ | -| Zendesk | ✔️ | ✔️ | ✔️ | ❌ | ❌ | -| Pipedrive | ✔️ | ✔️ | ✔️ | ❌ | ❌ | -| Freshsales | ✔️ | ✔️ | ✔️ | ❌ | ❌ | \ No newline at end of file diff --git a/docs/crm/deals/api/create.mdx b/docs/crm/deals/api/create.mdx deleted file mode 100644 index bf916ba13..000000000 --- a/docs/crm/deals/api/create.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Create a Deal" -description: "Create a Deal in any CRM Platform using this endpoint" -openapi: "POST /crm/deals" ---- diff --git a/docs/crm/deals/api/get.mdx b/docs/crm/deals/api/get.mdx deleted file mode 100644 index c58dd2951..000000000 --- a/docs/crm/deals/api/get.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Retrieve a Deal" -description: "Retrieve a Deal in any CRM Platform using this endpoint" -openapi: "GET /crm/deals/{id}" ---- diff --git a/docs/crm/deals/api/list.mdx b/docs/crm/deals/api/list.mdx deleted file mode 100644 index ee1526568..000000000 --- a/docs/crm/deals/api/list.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "List Deals" -description: "List Deals in any CRM Platform using this endpoint" -openapi: "GET /crm/deals" ---- diff --git a/docs/crm/deals/api/update.mdx b/docs/crm/deals/api/update.mdx deleted file mode 100644 index 854e3ce02..000000000 --- a/docs/crm/deals/api/update.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Update a Deal" -description: "Update a Deal in any CRM Platform using this endpoint" -openapi: "PATCH /crm/deals/{id}" ---- \ No newline at end of file diff --git a/docs/crm/deals/overview.mdx b/docs/crm/deals/overview.mdx deleted file mode 100644 index 65dc29e2e..000000000 --- a/docs/crm/deals/overview.mdx +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: 'The Deal Object' -description: 'Introduction to our CRM `deal` Unified Model' - ---- -## The Unified `deal` Object -The `deal` object is used to represent an existing deal in a CRM system. - -### Properties - - - -```json JSON -{ - "id_contact": "f4e1ff72-e727-409a-8935-a63a63d4891e", - "first_name": "John", - "last_name": "Doe", - "email_addresses": [{ - "email_address" : "johndoe@work.com", - "email_address" : "johdndoe@personal.com" - }] - "custom_fields": [{ - "hair_color" : "black" - } - ], - "remote_data": { - "source": "hubspot", - "data": { - "XXX": "XXX" - } - } -} -``` - - - - - - - Panora Defined UUID for this contact - - - - The full name of the `contact` - - - - The last name of this `contact` - - - - Array containing all the non-standard data points for this `contact`. Requires mapping. - - - - Original data, as provided by the source CRM` - - - - - -## Supported Features for each CRM Contact Object: -| Panora | Unified Write | Passthrough Requests | Remote Data | Managed Webhooks | Webhooks Unified | -| ------------- | ------------- | -------------------- | ----------- | ----------------- | ---------------- | -| Hubspot | ✔️ | ✔️ | ✔️ | ❌ | ❌ | -| Zoho | ✔️ | ✔️ | ✔️ | ❌ | ❌ | -| Zendesk | ✔️ | ✔️ | ✔️ | ❌ | ❌ | -| Pipedrive | ✔️ | ✔️ | ✔️ | ❌ | ❌ | -| Freshsales | ✔️ | ✔️ | ✔️ | ❌ | ❌ | \ No newline at end of file diff --git a/docs/crm/engagements/api/create.mdx b/docs/crm/engagements/api/create.mdx deleted file mode 100644 index 022cb00e4..000000000 --- a/docs/crm/engagements/api/create.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Create an Engagement" -description: "Create an Engagement in any CRM Platform using this endpoint" -openapi: "POST /crm/engagements" ---- diff --git a/docs/crm/engagements/api/get.mdx b/docs/crm/engagements/api/get.mdx deleted file mode 100644 index b9e6ae334..000000000 --- a/docs/crm/engagements/api/get.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Retrieve an Engagement" -description: "Retrieve an Engagement in any CRM Platform using this endpoint" -openapi: "GET /crm/engagements/{id}" ---- diff --git a/docs/crm/engagements/api/list.mdx b/docs/crm/engagements/api/list.mdx deleted file mode 100644 index 31be783fc..000000000 --- a/docs/crm/engagements/api/list.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "List Engagements" -description: "List Engagements in any CRM Platform using this endpoint" -openapi: "GET /crm/engagements" ---- diff --git a/docs/crm/engagements/api/update.mdx b/docs/crm/engagements/api/update.mdx deleted file mode 100644 index 579f6546b..000000000 --- a/docs/crm/engagements/api/update.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Update an Engagement" -description: "Update an Engagement in any CRM Platform using this endpoint" -openapi: "PATCH /crm/engagements" ---- diff --git a/docs/crm/engagements/overview.mdx b/docs/crm/engagements/overview.mdx deleted file mode 100644 index 7137deb37..000000000 --- a/docs/crm/engagements/overview.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: Overview ---- diff --git a/docs/crm/notes/api/create.mdx b/docs/crm/notes/api/create.mdx deleted file mode 100644 index 2be36e5ef..000000000 --- a/docs/crm/notes/api/create.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Create a Note" -description: "Create a Note in any CRM Platform using this endpoint" -openapi: "POST /crm/notes" ---- diff --git a/docs/crm/notes/api/get.mdx b/docs/crm/notes/api/get.mdx deleted file mode 100644 index acdc60bd5..000000000 --- a/docs/crm/notes/api/get.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Retrieve a Note" -description: "Retrieve a Note in any CRM Platform using this endpoint" -openapi: "GET /crm/notes/{id}" ---- diff --git a/docs/crm/notes/api/list.mdx b/docs/crm/notes/api/list.mdx deleted file mode 100644 index d9c72fb9f..000000000 --- a/docs/crm/notes/api/list.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "List Notes" -description: "List Notes in any CRM Platform using this endpoint" -openapi: "GET /crm/notes" ---- diff --git a/docs/crm/notes/api/update.mdx b/docs/crm/notes/api/update.mdx deleted file mode 100644 index 5f20e79f1..000000000 --- a/docs/crm/notes/api/update.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Update a Note" -description: "Update a Note in any CRM Platform using this endpoint" -openapi: "PATCH /crm/notes" ---- diff --git a/docs/crm/notes/overview.mdx b/docs/crm/notes/overview.mdx deleted file mode 100644 index 7137deb37..000000000 --- a/docs/crm/notes/overview.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: Overview ---- diff --git a/docs/crm/overview.mdx b/docs/crm/overview.mdx deleted file mode 100644 index d34327e85..000000000 --- a/docs/crm/overview.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: 'Overview' -description: '' ---- -import catalog from '/snippets/crm-catalog.mdx'; - -Welcome to the reference documentation for the Panora Customer Relationship Management (CRM) API! This API allows you to integrate with Panora and read data from or write data into the integrations authorized by your users. - -

- \ No newline at end of file diff --git a/docs/crm/quick-start.mdx b/docs/crm/quick-start.mdx deleted file mode 100644 index 3e153b9a2..000000000 --- a/docs/crm/quick-start.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: "Quick Start" -description: "Read and write data to multiple CRM platforms using a single API" ---- - -## Create a contact in a crm using Panora - - - We assume for this tutorial that you have a valid Panora API Key, and a - `connection_token`. Find help [here](/core-concepts/auth). - - - - - You can find the Typescript SDK [here](https://www.npmjs.com/package/@panora/sdk-typescript) - - - - ```javascript TypeScript SDK - import { PanoraSDK } from '@panora/sdk-typescript'; - const sdk = new PanoraSDK({ accessToken: "MY_API_KEY" }); - ``` - - ```python Python SDK - sdk = PanoraSDK('YOUR_BEARER_TOKEN') - ``` - - ```java Java SDK - PanoraSDK sdk = new PanoraSDK("YOUR_BEARER_TOKEN"); - ``` - - - - - In this example, we will create a contact in a CRM. Visit other sections of the documentation to find category-specific examples - - - ```shell curl - curl --request POST \ - --url https://api.panora.dev/crm/contacts \ - --header 'Authorization: Bearer dfsdf' \ - --header 'Content-Type: application/json' \ - --header 'x-connection-token: ' \ - --data '{ - "first_name": "Mark", - "last_name": "Zuckerbeg", - "email_addresses": [ - { - "email_address": "mark@zuckerberg.com", - "email_address_type": "personal", - "owner_type": "contact" - } - ], - "phone_numbers": [ - { - "phone_number": "+33694837462", - "phone_type": "personal", - "owner_type": "contact" - } - ], - "field_mappings": {} - }' - ``` - - ```javascript TypeScript - import { PanoraSDK } from '@panora/sdk-typescript'; - const sdk = new PanoraSDK({ accessToken: "MY_API_KEY" }); - - (async () => { - const input = { - email_addresses: [], - field_mappings: {}, - first_name: 'first_name', - last_name: 'last_name', - phone_numbers: [], - }; - const result = await sdk.crmContact.addContact(input, 'connection_token', { - remoteData: true, - }); - console.log(result); - })(); - ``` - - ```python Python - from os import getenv - from pprint import pprint - from panorasdk import PanoraSDK - sdk = PanoraSDK() - sdk.set_access_token(getenv("YOUR_API_KEY")) - request_body = { - 'email_addresses': [], - 'field_mappings': {}, - 'first_name': 'first_name', - 'last_name': 'last_name', - 'phone_numbers': [] - } - results = sdk.crm_contact.add_contact( - request_input = request_body, - connection_token = 'USER_CONNECTION_TOKEN', - remote_data = True - ) - - pprint(vars(results)) - - ``` - - - - diff --git a/docs/crm/tasks/api/create.mdx b/docs/crm/tasks/api/create.mdx deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/crm/tasks/api/get.mdx b/docs/crm/tasks/api/get.mdx deleted file mode 100644 index 8d237d5df..000000000 --- a/docs/crm/tasks/api/get.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Retrieve a Task" -description: "List Task in any CRM Platform using this endpoint" -openapi: "GET /crm/tasks/{id}" ---- diff --git a/docs/crm/tasks/api/list.mdx b/docs/crm/tasks/api/list.mdx deleted file mode 100644 index f070d1d3a..000000000 --- a/docs/crm/tasks/api/list.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "List Tasks" -description: "List Tasks in any CRM Platform using this endpoint" -openapi: "GET /crm/tasks" ---- diff --git a/docs/crm/tasks/api/update.mdx b/docs/crm/tasks/api/update.mdx deleted file mode 100644 index cc28bd8d8..000000000 --- a/docs/crm/tasks/api/update.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -openapi: "PATCH /crm/tasks" ---- diff --git a/docs/crm/tasks/overview.mdx b/docs/crm/tasks/overview.mdx deleted file mode 100644 index 7137deb37..000000000 --- a/docs/crm/tasks/overview.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: Overview ---- diff --git a/docs/crm/tutorials/create-contacts.mdx b/docs/crm/tutorials/create-contacts.mdx deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/crm/users/api/get.mdx b/docs/crm/users/api/get.mdx deleted file mode 100644 index c07c248b5..000000000 --- a/docs/crm/users/api/get.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Retrieve a User" -description: "Retrieve a User in any CRM Platform using this endpoint" -openapi: "GET /crm/users/{id}" ---- diff --git a/docs/crm/users/api/list.mdx b/docs/crm/users/api/list.mdx deleted file mode 100644 index fbb04d722..000000000 --- a/docs/crm/users/api/list.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "List Users" -description: "List Users in any CRM Platform using this endpoint" -openapi: "GET /crm/users" ---- diff --git a/docs/crm/users/overview.mdx b/docs/crm/users/overview.mdx deleted file mode 100644 index 7137deb37..000000000 --- a/docs/crm/users/overview.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: Overview ---- diff --git a/docs/glossary/connection-object.mdx b/docs/glossary/connection-object.mdx deleted file mode 100644 index da368c2d2..000000000 --- a/docs/glossary/connection-object.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Connection Object" -description: "Understand the connection object." -icon: "link" ---- - -#### The `connection` object represents an access right to a end-user's software. - -```json JSON -{ - "id_connection": "6cd057cb-39df-44ce-9be8-ab9d167c3940", - "status": "valid", - "connection_token": "e6d46c3763dc3e85fb078eae952654bd4f4861b313b7ccae201b91aa37532b71", - "provider_slug": "hubspot", - "account_url": null, - "expiration_timestamp": "2023-12-20T18:44:44.869Z", - "created_at": "2023-12-10T18:20:06.275Z", - "id_project": "801f9ede-c698-4e66-a7fc-48d19eebaa4f", - "id_linked_user": "d7a0af02-0f9b-40a6-86a9-612dcfe341fe" -} -``` - -A `connection` is created once a user completes the auth granting access flow (through [magic-link](/core-concepts/magic-links) or inside [code](/core-concepts/embedded-catalog)). - -`connection_token` is **mandatory** for each **unified API request**. - -### It helps Panora get important data - -- metadata about the software where the data has to be fetched/created (e.g _provider & vertical_). -- private encrypted credentials **(access_token/refresh_token)** to make the requests on behalf of the user. diff --git a/docs/glossary/linked-account-object.mdx b/docs/glossary/linked-account-object.mdx deleted file mode 100644 index d4f0e944f..000000000 --- a/docs/glossary/linked-account-object.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Linked Account Object" -description: "Understand the linked account object." -icon: "user" ---- - -#### The `linked-user` object represents a user entity inside our system. - -```json JSON -{ - "id_linked_user": "6cd057cb-39df-44ce-9be8-ab9d167c3940", - "linked_user_origin_id": "acme-id-be129f-4nce-uh22", - "alias": "acme", - "id_project": "6cd057cb-39df-44ce-9be8-ab9d167c3940" -} -``` - -- `id_linked_user` is the **id** of the user inside **our** system. -- `linked_user_origin_id` is the **id** of the user inside **your** system. -- `alias` is the name of your system/company.
- -It holds information about **user's data** -that exist in your **own product**. - -The idea is to have a deep copy of all your user's information inside our own database. diff --git a/docs/glossary/metadata/category.mdx b/docs/glossary/metadata/category.mdx deleted file mode 100644 index d2f9cb66e..000000000 --- a/docs/glossary/metadata/category.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Categories" -description: "All categories across Panora" -icon: layer-group ---- - -## Categories powering the Panora API - -All values are derived from `ConnectorCategory` found in the `@panora/shared` package which can be found [here](https://www.npmjs.com/package/@panora/shared). - -```ts -export declare enum ConnectorCategory { - Crm = "crm", - Hris = "hris", - Ats = "ats", - Accounting = "accounting", - Ticketing = "ticketing", - MarketingAutomation = "marketingautomation", - FileStorage = "filestorage" -} -``` \ No newline at end of file diff --git a/docs/glossary/metadata/connectors.mdx b/docs/glossary/metadata/connectors.mdx deleted file mode 100644 index d76634e89..000000000 --- a/docs/glossary/metadata/connectors.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Connectors" -description: "" -icon: circle-nodes ---- - -## Connectors powering the Panora API - -All connectors are within the `@panora/shared` (in the `metadata.ts` file) package which can be found [here](https://www.npmjs.com/package/@panora/shared). - -The **source of truth** is contained within this [**object**](https://github.com/panoratech/Panora/blob/main/packages/shared/src/connectors/metadata.ts#L6) : - -```ts -CONNECTORS_METADATA: ProvidersConfig -``` diff --git a/docs/images/api-keys.png b/docs/images/api-keys.png deleted file mode 100644 index 67ba4123b..000000000 Binary files a/docs/images/api-keys.png and /dev/null differ diff --git a/docs/images/apikeys.mp4 b/docs/images/apikeys.mp4 deleted file mode 100644 index c22c817d3..000000000 Binary files a/docs/images/apikeys.mp4 and /dev/null differ diff --git a/docs/images/checks-passed.png b/docs/images/checks-passed.png deleted file mode 100644 index 3303c7736..000000000 Binary files a/docs/images/checks-passed.png and /dev/null differ diff --git a/docs/images/contributors.gif b/docs/images/contributors.gif deleted file mode 100644 index e22b9fd69..000000000 Binary files a/docs/images/contributors.gif and /dev/null differ diff --git a/docs/images/custom-connectors-widget.png b/docs/images/custom-connectors-widget.png deleted file mode 100644 index 6b1a6ddf4..000000000 Binary files a/docs/images/custom-connectors-widget.png and /dev/null differ diff --git a/docs/images/custom-oauth.png b/docs/images/custom-oauth.png deleted file mode 100644 index 707ad191c..000000000 Binary files a/docs/images/custom-oauth.png and /dev/null differ diff --git a/docs/images/customcreds.mp4 b/docs/images/customcreds.mp4 deleted file mode 100644 index ae39278df..000000000 Binary files a/docs/images/customcreds.mp4 and /dev/null differ diff --git a/docs/images/customfields1.mp4 b/docs/images/customfields1.mp4 deleted file mode 100644 index 813569d02..000000000 Binary files a/docs/images/customfields1.mp4 and /dev/null differ diff --git a/docs/images/definefields.mp4 b/docs/images/definefields.mp4 deleted file mode 100644 index c6ac20cc2..000000000 Binary files a/docs/images/definefields.mp4 and /dev/null differ diff --git a/docs/images/embed-video.mp4 b/docs/images/embed-video.mp4 deleted file mode 100644 index e03fb18d9..000000000 Binary files a/docs/images/embed-video.mp4 and /dev/null differ diff --git a/docs/images/frontend-sdk-video.mp4 b/docs/images/frontend-sdk-video.mp4 deleted file mode 100644 index b7929ba51..000000000 Binary files a/docs/images/frontend-sdk-video.mp4 and /dev/null differ diff --git a/docs/images/generate-magic-link.gif b/docs/images/generate-magic-link.gif deleted file mode 100644 index 9a9cde89e..000000000 Binary files a/docs/images/generate-magic-link.gif and /dev/null differ diff --git a/docs/images/hero-dark.svg b/docs/images/hero-dark.svg deleted file mode 100644 index c6a30e88b..000000000 --- a/docs/images/hero-dark.svg +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/images/hero-light.svg b/docs/images/hero-light.svg deleted file mode 100644 index 297d68fb9..000000000 --- a/docs/images/hero-light.svg +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/images/integrations/hubspot.svg b/docs/images/integrations/hubspot.svg deleted file mode 100644 index b79fe597c..000000000 --- a/docs/images/integrations/hubspot.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/images/linkedusers.mp4 b/docs/images/linkedusers.mp4 deleted file mode 100644 index 152964a14..000000000 Binary files a/docs/images/linkedusers.mp4 and /dev/null differ diff --git a/docs/images/linkedusersbatch.mp4 b/docs/images/linkedusersbatch.mp4 deleted file mode 100644 index 5f3bacc33..000000000 Binary files a/docs/images/linkedusersbatch.mp4 and /dev/null differ diff --git a/docs/images/magiclinkquickstart.mp4 b/docs/images/magiclinkquickstart.mp4 deleted file mode 100644 index 5f59c1c47..000000000 Binary files a/docs/images/magiclinkquickstart.mp4 and /dev/null differ diff --git a/docs/images/magiclinks.mp4 b/docs/images/magiclinks.mp4 deleted file mode 100644 index e7ad4a4ef..000000000 Binary files a/docs/images/magiclinks.mp4 and /dev/null differ diff --git a/docs/images/panora.png b/docs/images/panora.png deleted file mode 100644 index 99be46fcb..000000000 Binary files a/docs/images/panora.png and /dev/null differ diff --git a/docs/images/webhooks.mp4 b/docs/images/webhooks.mp4 deleted file mode 100644 index e4127cc89..000000000 Binary files a/docs/images/webhooks.mp4 and /dev/null differ diff --git a/docs/integrations-catalog.mdx b/docs/integrations-catalog.mdx deleted file mode 100644 index 823ccb4bd..000000000 --- a/docs/integrations-catalog.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Integration Catalog" -description: "" -icon: album-collection ---- - - - - - - - - - - - - - diff --git a/docs/integrations/ats/ashby/index.mdx b/docs/integrations/ats/ashby/index.mdx deleted file mode 100644 index d855a7ad7..000000000 --- a/docs/integrations/ats/ashby/index.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "Ashby" -description: "" ---- - -# Common Objects - - -| Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Activity | Yes ✅ | /candidate.listNotes | -| Application | Yes ✅ | [/application.create , /application.list] | -| Attachment | Yes ✅ | [/candidate.uploadResume , /candidate.uploadFile ] | -| Candidate | Yes ✅| [/candidate.create, /candidate.list] | -| Department | Yes ✅ | /departement.list | -| Eeocs | No 🚫| | -| Interview | Yes ✅| /interviewSchedule.list | -| Job | Yes ✅ | /job.list | -| Job Interview Stage | Yes ✅| /interviewStage.list | -| Offer | Yes ✅| /offer.list | -| Office | Yes ✅| /location.list | -| Reject Reason | Yes ✅| /archiveReason.list | -| Score Card | No 🚫| | -| Tag | Yes ✅| /candidateTag.list | -| User | Yes ✅| /user.list | - - -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes || -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/integrations/ats/index.mdx b/docs/integrations/ats/index.mdx deleted file mode 100644 index a80c0797e..000000000 --- a/docs/integrations/ats/index.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Providers" -description: "" -icon: crab ---- - - - - } horizontal> - - diff --git a/docs/integrations/crm/attio/index.mdx b/docs/integrations/crm/attio/index.mdx deleted file mode 100644 index 7b2e6fe93..000000000 --- a/docs/integrations/crm/attio/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Attio" -description: "" ---- - -# Common Objects - - -| Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Contact | Yes ✅ | [/objects/people/records , /objects/people/records/query] | -| Company | Yes ✅ | [/objects/companies/records , /objects/companies/records/query] | -| Deal | Yes ✅ | [/objects/deals/records , /objects/deals/records/query] | -| Engagement | No 🚫| | -| Note | Yes ✅ | /notes | -| Stage | No 🚫| | -| Task | Yes ✅| /tasks | -| User | Yes ✅ | /workspace_members | - - - -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes | | -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/integrations/crm/close/index.mdx b/docs/integrations/crm/close/index.mdx deleted file mode 100644 index cc2bec29f..000000000 --- a/docs/integrations/crm/close/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Close" -description: "" ---- - -# Common Objects - - -| Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Contact | Yes ✅ | /contact | -| Company | Yes ✅ | /lead | -| Deal | Yes ✅ | /opportunity | -| Engagement | Yes ✅| [/activity/calls , /activity/meetings , /activity/emails] | -| Note | Yes ✅ | /activity/note | -| Stage | Yes ✅| /activity/status_change/opportunity/?opportunity_id=:remote_deal_id | -| Task | Yes ✅| /task | -| User | Yes ✅ | /user | - - - -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes | | -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/integrations/crm/hubspot/index.mdx b/docs/integrations/crm/hubspot/index.mdx deleted file mode 100644 index 2a459e0ee..000000000 --- a/docs/integrations/crm/hubspot/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Hubspot" -description: "" ---- - -# Common Objects - - -| Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Contact | Yes ✅ | /objects/contacts | -| Company | Yes ✅ | /objects/companies | -| Deal | Yes ✅ | /objects/deals | -| Engagement | Yes ✅| [/objects/calls , /objects/meetings , /objects/emails] | -| Note | Yes ✅ | /objects/notes | -| Stage | Yes ✅| /crm-pipelines/v1/pipelines/deals | -| Task | Yes ✅| /objects/tasks | -| User | Yes ✅ | /owners | - - -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes |crm.objects.companies.read crm.objects.companies.write crm.objects.contacts.read crm.objects.contacts.write crm.objects.deals.read crm.objects.deals.write crm.objects.custom.read crm.objects.custom.write crm.objects.leads.read crm.objects.leads.write crm.objects.owners.read crm.objects.users.read crm.objects.users.write oauth sales-email-read | -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/integrations/crm/index.mdx b/docs/integrations/crm/index.mdx deleted file mode 100644 index 8e80b832c..000000000 --- a/docs/integrations/crm/index.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: "Providers" -description: "" -icon: crab ---- - - - - } horizontal> - - - } horizontal> - - - } horizontal> - - - } horizontal> - - - } horizontal> - - - } horizontal> - - diff --git a/docs/integrations/crm/pipedrive/index.mdx b/docs/integrations/crm/pipedrive/index.mdx deleted file mode 100644 index cb82d8be0..000000000 --- a/docs/integrations/crm/pipedrive/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Pipedrive" -description: "" ---- - -# Common Objects - - -| Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Contact | Yes ✅ | /persons | -| Company | Yes ✅ | /organizations | -| Deal | Yes ✅ | /deals | -| Engagement | Yes ✅| /activities | -| Note | Yes ✅ | /notes | -| Stage | Yes ✅ | [/deals , /stages] | -| Task | Yes ✅| [/activities?type=task , /activities] | -| User | Yes ✅ | /users | - - - -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes | | -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/integrations/crm/zendesk/index.mdx b/docs/integrations/crm/zendesk/index.mdx deleted file mode 100644 index 7fb5f4b00..000000000 --- a/docs/integrations/crm/zendesk/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Zendesk" -description: "" ---- - -# Common Objects - - -| Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Contact | Yes ✅ | /contacts | -| Company | Yes ✅ | /contacts | -| Deal | Yes ✅ | /deals | -| Engagement | Yes ✅| /calls | -| Note | Yes ✅ | /notes | -| Stage | Yes ✅ | [/stages , /deals/:remote_deal_id] | -| Task | Yes ✅| /tasks | -| User | Yes ✅ | /users | - - - -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes || -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/integrations/crm/zoho/index.mdx b/docs/integrations/crm/zoho/index.mdx deleted file mode 100644 index c061c4fde..000000000 --- a/docs/integrations/crm/zoho/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Zoho" -description: "" ---- - -# Common Objects - - -| Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Contact | Yes ✅ | /Contacts | -| Company | Yes ✅ | /Accounts | -| Deal | Yes ✅ | /Deals | -| Engagement | Yes ✅| [/Calls , /Events] | -| Note | Yes ✅ | [/Notes, /Notes/:remote_note_id, ] | -| Stage | No 🚫| | -| Task | Yes ✅| /Tasks | -| User | Yes ✅ | /users?type=AllUsers | - - - -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes |ZohoCRM.modules.ALL,ZohoCRM.users.READ | -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/integrations/ecommerce/index.mdx b/docs/integrations/ecommerce/index.mdx deleted file mode 100644 index 931fa1f19..000000000 --- a/docs/integrations/ecommerce/index.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Providers" -description: "" -icon: crab ---- - - - - } horizontal> - - diff --git a/docs/integrations/ecommerce/shopify/index.mdx b/docs/integrations/ecommerce/shopify/index.mdx deleted file mode 100644 index 438ab930c..000000000 --- a/docs/integrations/ecommerce/shopify/index.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Shopify" -description: "" ---- - -# Common Objects - - -| Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Customer | Yes ✅ | /admin/api/2024-07/customers.json | -| Order | Yes ✅ | /admin/api/2024-07/orders.json | -| Fulfillment | Yes ✅ | /admin/api/2024-07/orders/:remote_order_id/fulfillments.json| -| Fulfillment Orders | No 🚫| | -| Product | Yes ✅ | /admin/api/2024-07/products.json | - - -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes | | -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/integrations/filestorage/box/index.mdx b/docs/integrations/filestorage/box/index.mdx deleted file mode 100644 index e60082cb2..000000000 --- a/docs/integrations/filestorage/box/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Box" -description: "" ---- - -# Common Objects - - -| Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Drive |No 🚫 | | -| File | Yes ✅ | /folders/:remote_folder_id/items | -| Folder | Yes ✅ | [/folders, /folders/:remote_folder_id/items] | -| Group | Yes ✅| /groups | -| Permission | No 🚫 | Coming Soon | -| Shared Link | No 🚫| Coming Soon | -| User | Yes ✅ | /users | - - - -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes | | -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/integrations/filestorage/index.mdx b/docs/integrations/filestorage/index.mdx deleted file mode 100644 index 37a19fd2b..000000000 --- a/docs/integrations/filestorage/index.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Providers" -description: "" -icon: crab ---- - - - - } horizontal> - - diff --git a/docs/integrations/ticketing/front/index.mdx b/docs/integrations/ticketing/front/index.mdx deleted file mode 100644 index 2cae8e8c2..000000000 --- a/docs/integrations/ticketing/front/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Front" -description: "" ---- - -# Common Objects - - -| Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Account | Yes ✅ | /accounts | -| Attachment | No 🚫 | Coming Soon | -| Collection |No 🚫 | | -| Comment | Yes ✅| /conversations/:remote_ticket_id/comments | -| Contact | Yes ✅ | /contacts | -| Tag | Yes ✅| /tags | -| Team | Yes ✅| /teams | -| Ticket | Yes ✅ | /conversations | -| User | Yes ✅| /teammates| - - -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes | | -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/integrations/ticketing/gitlab/index.mdx b/docs/integrations/ticketing/gitlab/index.mdx deleted file mode 100644 index 5be3057c5..000000000 --- a/docs/integrations/ticketing/gitlab/index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Gitlab" -description: "" ---- - -# Common Objects - - | Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Account | No 🚫 | | -| Attachment | No 🚫 | Coming Soon | -| Collection | Yes ✅ | /projects?membership=true | -| Comment | Yes ✅| /projects/:remote_collection_id/issues/:remote_ticket_id/notes | -| Contact | No 🚫| | -| Tag | Yes ✅| [/groups/:group.id/labels, /groups] | -| Team | No 🚫| | -| Ticket | Yes ✅ | [/projects/:remote_collection_id/issues , /issues?scope=created_by_me&scope=assigned_to_me , /projects/:remote_collection_id/issues/:remote_ticket_id/notes] | -| User | Yes ✅| [/groups , /groups/:group.id/members] | - - - - -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes |api read_api read_user create_runner k8s_proxy read_repository write_repository sudo admin_mode read_service_ping openid profile email| -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/integrations/ticketing/index.mdx b/docs/integrations/ticketing/index.mdx deleted file mode 100644 index 1ea6c979c..000000000 --- a/docs/integrations/ticketing/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Providers" -description: "" -icon: crab ---- - - - - } horizontal> - - - } horizontal> - - - } horizontal> - - - } horizontal> - - diff --git a/docs/integrations/ticketing/jira/index.mdx b/docs/integrations/ticketing/jira/index.mdx deleted file mode 100644 index f42f33dea..000000000 --- a/docs/integrations/ticketing/jira/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Jira" -description: "" ---- - -# Common Objects - - -| Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Account | No 🚫 | | -| Attachment | No 🚫 | Coming Soon| -| Collection | Yes ✅ | /project/search | -| Comment | Yes ✅| /issue/:remote_ticket_id/comment | -| Contact | No 🚫 | | -| Tag | Yes ✅| /issue/:remote_ticket_id?fields=labels | -| Team | Yes ✅| /groups/picker | -| Ticket | Yes ✅ | [/issuetype/project?projectId=:remote_collection_id , /issuetype , /issue , /issue/:remote_ticket_id/comment , /search] | -| User | Yes ✅| [/users/search , /users/emails?accountId=${accountId}] | - - -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes |read:jira-work manage:jira-project manage:jira-configuration read:jira-user write:jira-work manage:jira-webhook manage:jira-data-provider offline_access| -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/integrations/ticketing/zendesk/index.mdx b/docs/integrations/ticketing/zendesk/index.mdx deleted file mode 100644 index 90e926d6c..000000000 --- a/docs/integrations/ticketing/zendesk/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Zendesk" -description: "" ---- - -# Common Objects - - -| Unified Model | Supported | Provider Endpoints | -| -------- | ------------------------------------- | ------------------------------------- | -| Account | Yes ✅ | [/organizations , /organizations/:remote_account_id.json] | -| Attachment | No 🚫 | Coming Soon | -| Collection | No 🚫 | | -| Comment | Yes ✅| [/tickets/:remote_ticket_id.json , /tickets/:remote_ticket_id/comments.json] | -| Contact | Yes ✅ | [/users.json , /users/:remote_contact_id.json] | -| Tag | Yes ✅| /tickets/:remote_ticket_id/tags | -| Team | Yes ✅| /groups.json | -| Ticket | Yes ✅ | [/tickets.json , /tickets/:remote_ticket_id.json] | -| User | Yes ✅| [/users.json , /users/remote_user_id.json] | - -  -| Features | Supported | -| -------- | ------------------------------------- | -| Scopes |read write| -| Realtime webhook | No 🚫| \ No newline at end of file diff --git a/docs/logo/dark.svg b/docs/logo/dark.svg deleted file mode 100644 index a6283786c..000000000 --- a/docs/logo/dark.svg +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/logo/fav.png b/docs/logo/fav.png deleted file mode 100644 index 524e4da78..000000000 Binary files a/docs/logo/fav.png and /dev/null differ diff --git a/docs/logo/light.svg b/docs/logo/light.svg deleted file mode 100644 index 582b3b95f..000000000 --- a/docs/logo/light.svg +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/logo/logo-panora-dark.png b/docs/logo/logo-panora-dark.png deleted file mode 100644 index 5847c7937..000000000 Binary files a/docs/logo/logo-panora-dark.png and /dev/null differ diff --git a/docs/logo/logo-panora-light.png b/docs/logo/logo-panora-light.png deleted file mode 100644 index 0b316f404..000000000 Binary files a/docs/logo/logo-panora-light.png and /dev/null differ diff --git a/docs/logo/logo-panora-white-hq.png b/docs/logo/logo-panora-white-hq.png deleted file mode 100644 index 12d5fb077..000000000 Binary files a/docs/logo/logo-panora-white-hq.png and /dev/null differ diff --git a/docs/logo/logo-panora-white.png b/docs/logo/logo-panora-white.png deleted file mode 100644 index 2c43e4653..000000000 Binary files a/docs/logo/logo-panora-white.png and /dev/null differ diff --git a/docs/marketingautomation/introduction.mdx b/docs/marketingautomation/introduction.mdx deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/mint.json b/docs/mint.json deleted file mode 100644 index 70c360c43..000000000 --- a/docs/mint.json +++ /dev/null @@ -1 +0,0 @@ -{"$schema":"https://mintlify.com/schema.json","analytics":{"hotjar":{"hjid":"5154921","hjsv":"e2Bs3cIPcF08ngtrjwX+JBB8"},"posthog":{"apiKey":"phc_WhWJfNPOHAuWVdyTacGxrPa9JW54scnofA9KVEjFcFw"}},"anchors":[],"api":{"auth":{"method":"bearer"},"baseUrl":"https://api.panora.dev"},"colors":{"anchors":{"from":"#000000","to":"#000000"},"dark":"#000000","light":"#FFFFFF","primary":"#000000"},"favicon":"logo/fav.png","feedback":{"raiseIssue":true,"suggestEdit":true,"thumbsRating":true},"footerSocials":{"discord":"https://discord.gg/G7fr4HNyTb","github":"https://github.com/panoratech/Panora","twitter":"https://twitter.com/panoradotdev"},"logo":{"dark":"/logo/logo-panora-dark.png","light":"/logo/logo-panora-light.png"},"modeToggle":{"default":"light","isHidden":false},"name":"Panora Documentation","navigation":[{"group":"Documentation","pages":["welcome","quick-start","integrations-catalog"]},{"group":"","pages":["crm/overview","crm/quick-start"]},{"group":"Core Objects","pages":[{"group":"Contacts","pages":["crm/contacts/overview","crm/contacts/api/list","crm/contacts/api/get","crm/contacts/api/create","crm/contacts/api/update"]},{"group":"Companies","pages":["crm/companies/overview","crm/companies/api/list","crm/companies/api/get","crm/companies/api/create","crm/companies/api/update"]},{"group":"Deals","pages":["crm/deals/overview","crm/deals/api/list","crm/deals/api/get","crm/deals/api/create","crm/deals/api/update"]},{"group":"Notes","pages":["crm/notes/overview","crm/notes/api/list","crm/notes/api/get","crm/notes/api/create"]},{"group":"Engagements","pages":["crm/engagements/overview","crm/engagements/api/list","crm/engagements/api/get","crm/engagements/api/create","crm/engagements/api/update"]},{"group":"Tasks","pages":["crm/tasks/overview","crm/tasks/api/list","crm/tasks/api/get"]},{"group":"Users","pages":["crm/users/overview","crm/users/api/list","crm/users/api/get"]}]},{"group":"","pages":["ticketing/overview","ticketing/quick-start"]},{"group":"Core Objects","pages":[{"group":"Tickets","pages":["ticketing/tickets/overview","ticketing/tickets/api/list","ticketing/tickets/api/get","ticketing/tickets/api/create","ticketing/tickets/api/update"]},{"group":"Comments","pages":["ticketing/comments/overview","ticketing/comments/api/list","ticketing/comments/api/get","ticketing/comments/api/create","ticketing/comments/api/update"]},{"group":"Users","pages":["ticketing/users/overview","ticketing/users/api/list","ticketing/users/api/get"]},{"group":"Contacts","pages":["ticketing/contacts/overview","ticketing/contacts/api/list","ticketing/contacts/api/get","ticketing/contacts/api/create","ticketing/contacts/api/update"]},{"group":"Accounts","pages":["ticketing/accounts/overview","ticketing/accounts/api/list","ticketing/accounts/api/get","ticketing/accounts/api/create","ticketing/accounts/api/update"]},{"group":"Tags","pages":["ticketing/tags/overview","ticketing/tags/api/list","ticketing/tags/api/get"]},{"group":"Teams","pages":["ticketing/teams/overview","ticketing/teams/api/list","ticketing/teams/api/get"]}]},{"group":"","pages":[{"group":"CRM","pages":["integrations/crm/index","integrations/crm/hubspot/index","integrations/crm/zoho/index","integrations/crm/close/index","integrations/crm/attio/index","integrations/crm/zendesk/index","integrations/crm/pipedrive/index"]},{"group":"Ticketing","pages":["integrations/ticketing/index","integrations/ticketing/zendesk/index","integrations/ticketing/jira/index","integrations/ticketing/gitlab/index","integrations/ticketing/front/index"]},{"group":"ATS","pages":["integrations/ats/index","integrations/ats/ashby/index"]},{"group":"File Storage","pages":["integrations/filestorage/index","integrations/filestorage/box/index"]},{"group":"Ecommerce","pages":["integrations/ecommerce/index","integrations/ecommerce/shopify/index"]}]},{"group":"","pages":["api-reference/introduction","api-reference/authentication","api-reference/errors","api-reference/pagination"]},{"group":"Unified Objects","pages":[{"group":"CRM","pages":[{"group":"Contact","pages":["api-reference/crmcontact/list-a-batch-of-crm-contacts","api-reference/crmcontact/create-crm-contact","api-reference/crmcontact/update-a-crm-contact","api-reference/crmcontact/retrieve-a-crm-contact","api-reference/crmcontact/add-a-batch-of-crm-contacts"]},{"group":"Deal","pages":["api-reference/crmdeal/list-a-batch-of-deals","api-reference/crmdeal/create-a-deal","api-reference/crmdeal/retrieve-a-deal","api-reference/crmdeal/update-a-deal","api-reference/crmdeal/add-a-batch-of-deals"]},{"group":"Note","pages":["api-reference/crmnote/list-a-batch-of-notes","api-reference/crmnote/create-a-note","api-reference/crmnote/retrieve-a-note","api-reference/crmnote/add-a-batch-of-notes"]},{"group":"Company","pages":["api-reference/crmcompany/list-a-batch-of-companies","api-reference/crmcompany/create-a-company","api-reference/crmcompany/update-a-company","api-reference/crmcompany/retrieve-a-company","api-reference/crmcompany/add-a-batch-of-companies"]},{"group":"Engagement","pages":["api-reference/crmengagement/list-a-batch-of-engagements","api-reference/crmengagement/create-a-engagement","api-reference/crmengagement/update-a-engagement","api-reference/crmengagement/retrieve-a-engagement","api-reference/crmengagement/add-a-batch-of-engagements"]},{"group":"Stage","pages":["api-reference/crmstage/list-a-batch-of-stages","api-reference/crmstage/retrieve-a-stage"]},{"group":"Task","pages":["api-reference/crmtask/list-a-batch-of-tasks","api-reference/crmtask/create-a-task","api-reference/crmtask/update-a-task","api-reference/crmtask/retrieve-a-task","api-reference/crmtask/add-a-batch-of-tasks"]},{"group":"User","pages":["api-reference/crmuser/list-a-batch-of-users","api-reference/crmuser/retrieve-a-user"]}]},{"group":"Ticketing","pages":[{"group":"Ticket","pages":["api-reference/ticketingticket/list-a-batch-of-tickets","api-reference/ticketingticket/create-a-ticket","api-reference/ticketingticket/update-a-ticket","api-reference/ticketingticket/retrieve-a-ticket","api-reference/ticketingticket/add-a-batch-of-tickets"]},{"group":"Comment","pages":["api-reference/ticketingcomment/list-a-batch-of-comments","api-reference/ticketingcomment/create-a-comment","api-reference/ticketingcomment/retrieve-a-comment","api-reference/ticketingcomment/add-a-batch-of-comments"]},{"group":"User","pages":["api-reference/ticketinguser/list-a-batch-of-users","api-reference/ticketinguser/retrieve-a-user"]},{"group":"Attachment","pages":["api-reference/ticketingattachment/list-a-batch-of-attachments","api-reference/ticketingattachment/create-a-attachment","api-reference/ticketingattachment/retrieve-a-attachment","api-reference/ticketingattachment/download-a-attachment","api-reference/ticketingattachment/add-a-batch-of-attachments"]},{"group":"Contact","pages":["api-reference/ticketingcontact/list-a-batch-of-contacts","api-reference/ticketingcontact/retrieve-a-contact"]},{"group":"Account","pages":["api-reference/ticketingaccount/list-a-batch-of-accounts","api-reference/ticketingaccount/retrieve-an-account"]},{"group":"Tag","pages":["api-reference/ticketingtag/list-a-batch-of-tags","api-reference/ticketingtag/retrieve-a-tag"]},{"group":"Team","pages":["api-reference/ticketingteam/list-a-batch-of-teams","api-reference/ticketingteam/retrieve-a-team"]}]}]},{"group":"Core Resources","pages":[{"group":"Auth","pages":["api-reference/auth/register","api-reference/auth/log-in","api-reference/auth/get-users","api-reference/auth/retrieve-api-keys","api-reference/auth/create-api-key"]},{"group":"Connections","pages":["api-reference/connections/capture-oauth-callback","api-reference/connections/list-connections"]},{"group":"Webhook","pages":["api-reference/webhook/retrieve-webhooks-metadata","api-reference/webhook/add-webhook-metadata","api-reference/webhook/update-webhook-status"]},{"group":"Linked Users","pages":["api-reference/linked-users/add-linked-user","api-reference/linked-users/retrieve-linked-users","api-reference/linked-users/retrieve-a-linked-user"]},{"group":"Organisations","pages":["api-reference/organisations/retrieve-organisations","api-reference/organisations/create-an-organisation"]},{"group":"Projects","pages":["api-reference/projects/retrieve-projects","api-reference/projects/create-a-project"]},{"group":"Field Mappings","pages":["api-reference/field-mapping/retrieve-field-mapping-entities","api-reference/field-mapping/retrieve-field-mappings","api-reference/field-mapping/retrieve-field-mappings-values","api-reference/field-mapping/define-target-field","api-reference/field-mapping/map-custom-field","api-reference/field-mapping/retrieve-custom-properties"]},{"group":"Events","pages":["api-reference/events/retrieve-events"]},{"group":"Magic Links","pages":["api-reference/magic-link/create-a-magic-link","api-reference/magic-link/retrieve-magic-links","api-reference/magic-link/retrieve-a-magic-link"]},{"group":"Passthrough","pages":["api-reference/passthrough/make-a-passthrough-request"]}]},{"group":"Core Concepts","pages":["core-concepts/auth","core-concepts/magic-links","core-concepts/custom-fields","core-concepts/sync-strategies"]},{"group":"Recipes","pages":["recipes/frontend-sdk","recipes/embed-catalog","recipes/import-existing-users","recipes/catch-connection-token","recipes/add-custom-provider-creds"]},{"group":"Glossary","pages":["glossary/connection-object","glossary/linked-account-object",{"group":"Metadata","pages":["glossary/metadata/category","glossary/metadata/connectors"]}]},{"group":"Devtools","pages":[{"group":"Backend SDKs","pages":["backend-sdk/typescript","backend-sdk/python"]}]},{"group":"Webhooks","pages":["webhooks/overview",{"group":"Events","pages":["webhooks/events/overview","webhooks/events/event-types"]}]},{"group":"Open-Source","pages":[{"group":"Selfhost","icon":"house-laptop","pages":["open-source/selfhost/self-host-guide","open-source/selfhost/envVariables","open-source/selfhost/ngrok"]},{"group":"Build a connector","icon":"star","pages":["open-source/contributors/setup","open-source/contributors/metadata","open-source/contributors/build","open-source/contributors/test"]}]},{"group":"Support","pages":["support/get_help"]}],"openapi":"docs/openapi-with-code-samples.json","primaryTab":{"name":"Home"},"tabs":[{"name":"CRM","url":"crm"},{"name":"Ticketing","url":"ticketing"},{"name":"API Reference","url":"api-reference"},{"name":"Integrations","url":"integrations"}],"topbarCtaButton":{"type":"github","url":"https://github.com/panoratech/Panora"},"topbarLinks":[{"name":"Home","url":"https://panora.dev"},{"name":"Blog","url":"https://panora.dev/blog"}]} \ No newline at end of file diff --git a/docs/open-source/contributors/build.mdx b/docs/open-source/contributors/build.mdx deleted file mode 100644 index af4259a2e..000000000 --- a/docs/open-source/contributors/build.mdx +++ /dev/null @@ -1,189 +0,0 @@ ---- -title: "3. Build" -description: "We welcome all contributions to Panora; from small UI enhancements to brand new integrations. We love seeing community members level up and give people power-ups!" -icon: "star" ---- - - -## Adding new Integrations ✨ - -Make sure you are inside `packages/api/src` where the server lives ! - -### You want to add a new 3rd Party not yet supported ? 🧑‍🎤 - -_Ie: Slack, Hubspot, Jira, Shopify ..._ - -First choose wisely which category the 3rd party belongs to among these: - -- `crm` -- `ticketing` -- `accounting` -- `ats` -- `filestorage` -- `hris` -- `marketingautomation` - -You can find all categories inside [`packages/shared/src/categories.ts`](https://github.com/panoratech/Panora/blob/main/packages/shared/src/categories.ts). - - - For the sake of the guide, now on we'll consider adding a 3rd party belonging - to the `crm` category. - - - -Actually an integration is built in 2 parts : - -- the **authentication part** (oauth, api key, basic etc) which is built by the Panora team -- the **service integration** where the mapping with our unified model is created whixch is what you'll build in the next steps - -# Step 2: Build your provider service - -### You want to map a common object to your new 3rd Party ? 👩‍🎤 - -_Ie: Contact, Ticket, Deal, Company ..._ - -For the sake of this guide, let's map the common object `contact` under `crm` category to _my3rdParty_ (in reality it would be a real 3rd party name). - - - **An integration is considered valid when all common objects have been mapped. - Then, after the PR is accepted we'll be able to set `active` field to `true` - inside `CONNECTORS_METADATA`** - - - - - Create a new service folder with the name of your 3rd party. Let's call it _my3rdParty_. - - ```bash - cd crm/contact/services/my3rdParty - ``` - - You'll now create 3 files : - - - `index.ts` where your service is created and direct interaction with your 3rd party API is handled - - `types.ts` where the 3rd party specific API types are defined - - `mappers.ts` where the mapping between our unified common model and the 3rd party one is handled - - After copying the following code you'll end up with linting/deps errors. It is fixed by our script at Step 2. - - - - It must implement the `IContactService` interface. - ```ts - export interface IContactService { - addContact( - contactData: DesunifyReturnType, - linkedUserId: string - ): Promise>; - - syncContacts( - linkedUserId: string - ): Promise>; - } - ``` - - ```ts - @Injectable() - export class My3rdPartyService implements IContactService { - constructor( - private prisma: PrismaService, - private logger: LoggerService, - private cryptoService: EncryptionService, - private registry: ServiceRegistry, - ) { - this.logger.setContext( - CrmObject.contact.toUpperCase() + ':' + My3rdPartyService.name, - ); - this.registry.registerService('my3rdParty', this); - } - async addContact( - contactData: 3rdPartyContactInput, - linkedUserId: string, - ): Promise> {} - - async syncContacts( - linkedUserId: string, - ): Promise> {} - } - ``` - Check other implementations under `/crm/contacts/services` to fill the core functions. - - - The keen readers may have noticed `3rdPartyContactInput` and `3rdPartyContactOutput`. - This is where `types.ts` comes in:
- Go to the 3rd party API and insert the correct types asked by the API. - ```ts - export interface 3rdPartyContact { - //INSERT THE CORRECT TYPE HERE - } - export type 3rdPartyContactInput = Partial<3rdPartyContact>; - export type 3rdPartyContactOutput = 3rdPartyContactInput; - ``` -
- - Last but not least, inside `mappers.ts` you have to build the mappings between our unified common object `contact` and your third party specific type `3rdPartyContact`. - - It must implement `IContactMapper` interface. - - ```ts - export interface IContactMapper { - desunify( - source: UnifiedContactInput, - customFieldMappings?: { - slug: string; - remote_id: string; - }[] - ): DesunifyReturnType; - - unify( - source: OriginalContactOutput | OriginalContactOutput[], - customFieldMappings?: { - slug: string; - remote_id: string; - }[] - ): Promise; - } - ``` - - ```ts - export class My3rdPartyMapper implements IContactMapper { - desunify( - source: UnifiedContactInput, - customFieldMappings?: { - slug: string; - remote_id: string; - }[], - ): 3rdPartyContactInput {} - - unify( - source: 3rdPartyContactOutput | 3rdPartyContactOutput[], - customFieldMappings?: { - slug: string; - remote_id: string; - }[], - ): Promise {} - } - ``` - - Check other implementations under `/crm/contacts/services` to fill the core functions. - -
- -
- - - After these 3 files are successfully created and filled, you are ready to fix all dependencies/linting issues that you may have.
- To make sure the service is enabled, dependencies and imports must be added.
- We built a script that does it in seconds. You can execute the given command from the root directory of Panora. - - ```bash - docker build -t validate_connectors -f ./packages/api/Dockerfile.validate-connectors . - ``` - ```bash - docker run -v $(pwd):/app/ -e VERTICAL=crm -e OBJECT_TYPE=contact validate_connectors - ``` - - The script will automatically scan the `/crm/contact/services` folder and detect any new service folder so all dependencies and imports are updated across the codebase. - -
-
\ No newline at end of file diff --git a/docs/open-source/contributors/metadata.mdx b/docs/open-source/contributors/metadata.mdx deleted file mode 100644 index 807f1e28d..000000000 --- a/docs/open-source/contributors/metadata.mdx +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "2. Metadata" -description: "We welcome all contributions to Panora; from small UI enhancements to brand new integrations. We love seeing community members level up and give people power-ups!" -icon: "star" ---- - -# Ensure 3rd party metadata is set - -Look into the `packages/shared/src/connectors/metadata.ts` [file](https://github.com/panoratech/Panora/blob/main/packages/shared/src/connectors/metadata.ts) and check if the provider you want to build has its metadata set inside the `CONNECTORS_METADATA` object. - -It should be available (if not [contact us](https://app.cal.com/rflih/30)) with `active` field set to `false` meaning the integration has not been built. diff --git a/docs/open-source/contributors/setup.mdx b/docs/open-source/contributors/setup.mdx deleted file mode 100644 index b2fe8ce34..000000000 --- a/docs/open-source/contributors/setup.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: "1. Setup" -description: "We welcome all contributions to Panora; from small UI enhancements to brand new integrations. We love seeing community members level up and give people power-ups!" -icon: "star" ---- - -## Introduction - -### Setup your environnement - -We made a docker file that builds Panora from sources, specifically to help you locally test your contributions. Here's how to use it. - -Execute these from your Panora's repo root folder - - - - Check environment variables reference [here](/open-source/selfhost/envVariables) ! - ```bash - cp .env.example .env - ``` - - - ```bash - rm -rf node_modules .pnpm-store ./packages/api/dist ./packages/api/node_modules ./apps/webapp/node_modules ./apps/frontend_snippet/node_modules - ``` - For Mac users only: ```echo -e "node-linker=hoisted\n package-import-method=clone-or-copy" > .npmrc``` - - - If you have to create an oAuth app for a provider and needs an **https** redirect uri you must enable Grok service and use your secure domain from them (it proxies requests to `localhost:3000`). - Check this [quick guide](/open-source/selfhost/ngrok) to set it up ! - - - ```bash - docker compose -f docker-compose.dev.yml up - ``` - - - That's all ! You can find the backend and other services running at their usual location. Editing code locally will **immediately** reflect. - - - - - - - diff --git a/docs/open-source/contributors/test.mdx b/docs/open-source/contributors/test.mdx deleted file mode 100644 index 79f9e2cec..000000000 --- a/docs/open-source/contributors/test.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "4. Test" -description: "We welcome all contributions to Panora; from small UI enhancements to brand new integrations. We love seeing community members level up and give people power-ups!" -icon: "star" ---- - -# Test your new connector - -Now you must test Panora unified endpoints with the new connector built. - - - You need a set of credentials that you'll set in `.env` if you use oAuth (check [here](/open-source/selfhost/envVariables#providers-specific-credentials) how it works). - Check [this guide](/core-concepts/magic-links) to create a connection through it. - To activate your new connector on the magic link, visit this [**file**](https://github.com/panoratech/Panora/blob/main/packages/shared/src/connectors/metadata.ts#L6) : - and change your connector status to `active: true`. - - - Now after successfully creating a new connection, you can copy a `connection token` inside the webapp under `http://localhost/connections`. - Create a Panora Api Key and make unified request with your `connection token`. - Check [this guide](/core-concepts/auth) to do it ! - - - -### Congrats, you now have built a new integration with Panora ! 🦸‍♀️ - - - Nb: The development kit to add integrations out of the blue is coming soon 🎸 - diff --git a/docs/open-source/selfhost/envVariables.mdx b/docs/open-source/selfhost/envVariables.mdx deleted file mode 100644 index db13ccf7a..000000000 --- a/docs/open-source/selfhost/envVariables.mdx +++ /dev/null @@ -1,206 +0,0 @@ ---- -title: "Environment Variables" -description: "" ---- - - -# Backend - -## Secrets - -| Variable | Example | Purpose | -| -------- | ------------------------------------- | ------------------------------------- | -| JWT_SECRET | secret_jwt | Jwt token used to authenticate requests coming from the webapp to the server | -| ENCRYPT_CRYPTO_SECRET_KEY | 0123456789abcdef0123456789abcdef | 256-Bit Encryption key used to encrypt sensitive data | - -## Configuration - -| Variable | Example | Purpose | -| -------- | ------------------------------------- | ------------------------------------- | -| ENV | dev | Values are dev, prod or sandbox | -| DISTRIBUTION | selfhost | Values are selfhost or managed | -| PANORA_BASE_API_URL | http://localhost:3000 | | -| REDIS_HOST | redis | The redis host | -| REDIS_PASS | A3vniod98Zbuvn9u5 | The redis password | -| REDIS_PORT | 6379 |The redis port| - -## Errors & Analytics (Optional in Selfhost) - -| Variable | Example | Purpose | -| -------- | ------------------------------------- | ------------------------------------- | -| SENTRY_DSN | | Sentry Dsn | -| SENTRY_ENABLED | | Flag which indicates if you want to enable Sentry | - - -## Database - -| Variable | Example | Purpose | -| -------- | ------------------------------------- | ------------------------------------- | -| POSTGRES_USER | my_user | username to get access access to the db | -| POSTGRES_DB | panora_db | database name to get access access to the db | -| POSTGRES_HOST | postgres | host to get access access to the db | -| POSTGRES_PASSWORD | my_password | password to get access access to the db | - - -## Ingress - -Check [here](/selfhost/ngrok) to set up Ngrok ! - -| Variable | Example | Purpose | -| -------- | ------------------------------------- | ------------------------------------- | -| REDIRECT_TUNNEL_INGRESS | https://MY-NGROK-DOMAIN.ngrok-free.app | Mandatory only when DISTRIBUTION=selfhost. Endpoint (an Ngrok tunnel domain) when you have to test your OAuth App and needs a HTTPS redirectUri that redirects to your localhost (useful for contributors that might need to test their oAuth flow) | -| WEBHOOK_INGRESS | https://MY-NGROK-DOMAIN.ngrok-free.app | Same job as REDIRECT_TUNNEL_INGRESS. You can use the same value for both if you prefer. | - - -## Providers Specific Credentials - - - You must manually create a custom OAuth2 App inside the 3rd party and copy the - critical values (likely _client id and client secret_) - - You have the option to manage a custom 3rd party OAuth App. - - **Each custom 3rd party environment variable must be of the form `PROVIDER_category_SOFTWAREMODE_ATTRIBUTE` where** - - - `PROVIDER` is any 3rd party name - - `category` is for example [CRM, TICKETING, MARKETINGAUTOMATION, ...] - - `SOFTWAREMODE` is [ CLOUD, ONPREMISE ] - - `ATTRIBUTE` is for example [ CLIENT_ID, CLIENT_SECRET, SUBDOMAIN, ... ] - - _Example_ : - - - `HUBSPOT_CRM_CLOUD_CLIENT_ID = client_id_value_pasted_from_hubspot_developer_app` - - `HUBSPOT_CRM_CLOUD_CLIENT_SECRET = client_secret_value_pasted_from_hubspot_developer_app` - -| Variable | Example | Purpose | -| -------- | ------------------------------------- | ------------------------------------- | -| HUBSPOT_CRM_CLOUD_CLIENT_ID | | | -| HUBSPOT_CRM_CLOUD_CLIENT_SECRET | | | -| ZOHO_CRM_CLOUD_CLIENT_ID | | | -| ZOHO_CRM_CLOUD_CLIENT_SECRET | | | -| PIPEDRIVE_CRM_CLOUD_CLIENT_ID | | | -| PIPEDRIVE_CRM_CLOUD_CLIENT_SECRET | | | -| ZENDESK_CRM_CLOUD_CLIENT_ID | | | -| ZENDESK_CRM_CLOUD_CLIENT_SECRET | | | -| ATTIO_CRM_CLOUD_CLIENT_ID | | | -| ATTIO_CRM_CLOUD_CLIENT_SECRET | | | -| CLOSE_CRM_CLOUD_CLIENT_ID | | | -| CLOSE_CRM_CLOUD_CLIENT_SECRET | | | -| CAPSULE_CRM_CLOUD_CLIENT_ID | | | -| CAPSULE_CRM_CLOUD_CLIENT_SECRET | | | -| TEAMLEADER_CRM_CLOUD_CLIENT_ID | | | -| TEAMLEADER_CRM_CLOUD_CLIENT_SECRET | | | -| ZENDESK_TICKETING_CLOUD_CLIENT_ID | | | -| ZENDESK_TICKETING_CLOUD_CLIENT_SECRET | | | -| ZENDESK_TICKETING_CLOUD_SUBDOMAIN | | | -| JIRA_TICKETING_CLOUD_CLIENT_ID | | | -| JIRA_TICKETING_CLOUD_CLIENT_SECRET | | | -| FRONT_TICKETING_CLOUD_CLIENT_ID | | | -| FRONT_TICKETING_CLOUD_CLIENT_SECRET | | | -| GORGIAS_TICKETING_CLOUD_CLIENT_ID | | | -| GORGIAS_TICKETING_CLOUD_CLIENT_SECRET | | | -| LINEAR_TICKETING_CLOUD_CLIENT_ID | | | -| LINEAR_TICKETING_CLOUD_CLIENT_SECRET | | | -| CLICKUP_TICKETING_CLOUD_CLIENT_ID | | | -| CLICKUP_TICKETING_CLOUD_CLIENT_SECRET | | | -| ASANA_TICKETING_CLOUD_CLIENT_ID | | | -| ASANA_TICKETING_CLOUD_CLIENT_SECRET | | | -| AHA_TICKETING_CLOUD_CLIENT_ID | | | -| AHA_TICKETING_CLOUD_CLIENT_SECRET | | | -| AHA_TICKETING_CLOUD_SUBDOMAIN | | | -| HELPSCOUT_TICKETING_CLOUD_CLIENT_ID | | | -| HELPSCOUT_TICKETING_CLOUD_CLIENT_SECRET | | | -| IRONCLAD_TICKETING_CLOUD_CLIENT_ID | | | -| IRONCLAD_TICKETING_CLOUD_CLIENT_SECRET | | | -| GITHUB_TICKETING_CLOUD_CLIENT_ID | | | -| GITHUB_TICKETING_CLOUD_CLIENT_SECRET | | | -| WRIKE_TICKETING_CLOUD_CLIENT_ID | | | -| WRIKE_TICKETING_CLOUD_CLIENT_SECRET | | | -| GITLAB_TICKETING_CLOUD_CLIENT_ID | | | -| GITLAB_TICKETING_CLOUD_CLIENT_SECRET | | | -| SAGE_ACCOUNTING_CLOUD_CLIENT_ID | | | -| SAGE_ACCOUNTING_CLOUD_CLIENT_SECRET | | | -| PENNYLANE_ACCOUNTING_CLOUD_CLIENT_ID | | | -| PENNYLANE_ACCOUNTING_CLOUD_CLIENT_SECRET | | | -| FREEAGENT_ACCOUNTING_CLOUD_CLIENT_ID | | | -| FREEAGENT_ACCOUNTING_CLOUD_CLIENT_SECRET | | | -| FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_ID | | | -| FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET | | | -| MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_ID | | | -| MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_SECRET | | | -| QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_ID | | | -| QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET | | | -| XERO_ACCOUNTING_CLOUD_CLIENT_ID | | | -| XERO_ACCOUNTING_CLOUD_CLIENT_SECRET | | | -| DEEL_HRIS_CLOUD_CLIENT_ID | | | -| DEEL_HRIS_CLOUD_CLIENT_SECRET | | | -| RIPPLING_HRIS_CLOUD_CLIENT_ID | | | -| RIPPLING_HRIS_CLOUD_CLIENT_SECRET | | | -| GUSTO_HRIS_CLOUD_CLIENT_ID | | | -| GUSTO_HRIS_CLOUD_CLIENT_SECRET | | | -| FACTORIAL_HRIS_CLOUD_CLIENT_ID | | | -| FACTORIAL_HRIS_CLOUD_CLIENT_SECRET | | | -| NAMELY_HRIS_CLOUD_CLIENT_ID | | | -| NAMELY_HRIS_CLOUD_CLIENT_SECRET | | | -| NAMELY_HRIS_CLOUD_SUBDOMAIN | | | -| GOOGLEDRIVE_FILESTORAGE_CLOUD_CLIENT_ID | | | -| GOOGLEDRIVE_FILESTORAGE_CLOUD_CLIENT_SECRET | | | -| ONEDRIVE_FILESTORAGE_CLOUD_CLIENT_ID | | | -| ONEDRIVE_FILESTORAGE_CLOUD_CLIENT_SECRET | | | -| SHAREPOINT_FILESTORAGE_CLOUD_CLIENT_ID | | | -| SHAREPOINT_FILESTORAGE_CLOUD_CLIENT_SECRET | | | -| DROPBOX_FILESTORAGE_CLOUD_CLIENT_ID | | | -| DROPBOX_FILESTORAGE_CLOUD_CLIENT_SECRET | | | -| BOX_FILESTORAGE_CLOUD_CLIENT_ID | | | -| BOX_FILESTORAGE_CLOUD_CLIENT_SECRET | | | -| KEAP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID | | | -| KEAP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET | | | -| MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID | | | -| MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET | | | -| KLAVIYO_TICKETING_CLOUD_CLIENT_ID | | | -| KLAVIYO_TICKETING_CLOUD_CLIENT_SECRET | | | -| NOTION_MANAGEMENT_CLOUD_CLIENT_ID | | | -| NOTION_MANAGEMENT_CLOUD_CLIENT_SECRET | | | -| SLACK_MANAGEMENT_CLOUD_CLIENT_ID | | | -| SLACK_MANAGEMENT_CLOUD_CLIENT_SECRET | | | -| GREENHOUSE_ATS_CLOUD_CLIENT_ID | | | -| GREENHOUSE_ATS_CLOUD_CLIENT_SECRET | | | -| JOBADDER_ATS_CLOUD_CLIENT_ID | | | -| JOBADDER_ATS_CLOUD_CLIENT_SECRET | | | -| LEVER_ATS_CLOUD_CLIENT_ID | | | -| LEVER_ATS_CLOUD_CLIENT_SECRET | | | -| SHOPIFY_ECOMMERCE_CLOUD_CLIENT_ID | | | -| SHOPIFY_ECOMMERCE_CLOUD_CLIENT_SECRET | | | -| SHOPIFY_ECOMMERCE_CLOUD_SUBDOMAIN | | | - - -# Frontend - -## Configuration - -| Variable | Example | Purpose | -| -------- | ------------------------------------- | ------------------------------------- | -| NEXT_PUBLIC_BACKEND_DOMAIN | http://localhost:3000 | Server url. Values are [http://localhost:3000, https://api-dev.panora.dev, https://api-sandbox.panora.dev, https://api.panora.dev] | -| NEXT_PUBLIC_MAGIC_LINK_DOMAIN | http://localhost:81 | Magic link server. Values are [http://localhost:81, https://connect-dev.panora.dev, https://connect.panora.dev ] | -| NEXT_PUBLIC_DISTRIBUTION | managed | Values are selfhost or managed | -| NEXT_PUBLIC_WEBAPP_DOMAIN | http://localhost | Webapp client url. Values are [http://localhost, https://app-dev.panora.dev, https://app.panora.dev, ] | -| NEXT_PUBLIC_POSTHOG_HOST | | Host domain of your posthog | -| NEXT_PUBLIC_POSTHOG_KEY | | Key of your posthog account | - - - -## Storage (Optional) - -You can let them empty for now ! - -| Variable | Example | Purpose | -| -------- | ------------------------------------- | ------------------------------------- | -| MINIO_ROOT_USER | myaccesskey13 | | -| MINIO_ROOT_PASSWORD | mysecretkey12 | | -| AWS_S3_REGION | us-east-1 | | -| S3_TCG_ATTACHMENTS_BUCKETNAME | tcg-attachments| | -| BUCKET_TCG_ATTACHMENTS_USER | BUCKET_TCG_ATTACHMENTS_USER01 | | -| BUCKET_TCG_ATTACHMENTS_PW | BUCKET_TCG_ATTACHMENTS_PW01 | | - - - diff --git a/docs/open-source/selfhost/ngrok.mdx b/docs/open-source/selfhost/ngrok.mdx deleted file mode 100644 index 930f83498..000000000 --- a/docs/open-source/selfhost/ngrok.mdx +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "Set up Ngrok" -description: "" ---- - - - ```bash - cp ngrok.yml.example ngrok.yml - ``` - - - ```bash - version: 2 - authtoken: AUTH_TOKEN # Grab your auth token here - log_level: debug - log: stdout - - tunnels: - api-tunnel: - proto: http - addr: 3000 - domain: DOMAIN # Grab your domain here - ``` - - AUTH_TOKEN can be found [in your ngrok dashboard](https://dashboard.ngrok.com/get-started/your-authtoken) - - DOMAIN can be found also [in your ngrok dashboard](https://dashboard.ngrok.com/cloud-edge/domains) - - - Uncomment ngrok service in docker-compose[.dev, .source].yml. The following code **MUST BE** uncommented. - ```bash - ngrok: - image: ngrok/ngrok:latest - restart: always - command: - - "start" - - "--all" - - "--config" - - "/etc/ngrok.yml" - volumes: - - ./ngrok.yml:/etc/ngrok.yml - ports: - - 4040:4040 - network_mode: "host" - ``` - - -That's all ! After launching the dockers, all requests targeted at REDIRECT_TUNNEL_INGRESS or WEBHOOK_INGRESS are effectively tunneled to your backend server ! - diff --git a/docs/open-source/selfhost/self-host-guide.mdx b/docs/open-source/selfhost/self-host-guide.mdx deleted file mode 100644 index 78f7c34a7..000000000 --- a/docs/open-source/selfhost/self-host-guide.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: "Quickstart" -description: "Try Panora in no time with full control." ---- - -**Prerequisite:** You should have Git and Docker installed - - - - ```bash -git clone https://github.com/panoratech/Panora.git -``` - - - - Check [here](/open-source/selfhost/envVariables) to fill the right env variables ! - ```bash - cd Panora && cp .env.example .env - ``` - - - - ```bash - docker compose up -d - ``` - - - Update to the latest version. Run `docker version` to check. - - - - - - - - - - Use the following command to check progress. Look at services "Panora-api" and "Panora-webapp" and check in column STATUS both are "UP" - ```bash - docker ps - ``` -After a few minutes Panora's dashboard will be available at `http://localhost:80`. -The backend runs on `http://localhost:3000` - -**Congrats, Panora is now ready 🍾🔥** - - - - - - -Visit our [guide here](/quick-start) for more details. - - - -## Troubleshooting - -Here's how to solve some common problems when working with the CLI. - - - - Update to the latest version. Run `docker version` to check. - - - - [Come chat on Discord!](https://discord.gg/G7fr4HNyTb) - - - -Need help? [Come chat on Discord!](https://discord.gg/G7fr4HNyTb) diff --git a/docs/quick-start.mdx b/docs/quick-start.mdx deleted file mode 100644 index 206a30410..000000000 --- a/docs/quick-start.mdx +++ /dev/null @@ -1,241 +0,0 @@ ---- -title: "Quickstart Guide" -description: "This 5 minutes checklist helps you get all the requirements to start adding integrations to your product. " -icon: "star" ---- - -## **Prerequisites** - -Before you begin, make sure you have the following: - -- A cloud [account](https://tally.so/r/w5ZoaN?source=docs_welcome) (or see our guide [here](/open-source/self-host-guide) on getting started with the selfhost version) -- An API key, see our guide [here](/core-concepts/auth) -- Node JS v18.17.1 or newer installed on your computer - -## **Step 1: Get access to your users data** - -You either have the option to use a [**no-code magic link**](/core-concepts/magic-links) or the [**embedded frontend snippet**](/recipes/embed-catalog) to get access to your user's data. -Choose the one that fits your needs ! - -[We recommend listening to webhooks to get notified once a user connects and catch the connection token used for requests. -](/recipes/catch-connection-token) - - - - Let's send our first magic link so you can ask your customers to grant you access to their tools, without writing code. - - - - - Embed Panora into your product with our native component to collect access to use user's data. - - You can find the component on NPM - [here](https://www.npmjs.com/package/@panora/embedded-card-react) - - - - - ```shell React - npm i @panora/embedded-card-react - ``` - - - - - - ```javascript React - import "@panora/embedded-card-react/dist/index.css"; - import PanoraProviderCard from "@panora/embedded-card-react"; - import PanoraDynamicCatalog from "@panora/embedded-card-react"; - ``` - - - - - You can either import a single connector card or a catalog of all connectors that you select in the UI dashboard configuration (see [here](/recipes/embed-catalog) for more details). - In order to fill the `linkedUserId` prop, use your own remote id that exist in your system **OR** check this [recipe](/recipes/import-existing-users) ! - - ```javascript Single Connector Card - import "@panora/embedded-card-react/dist/index.css"; - import { PanoraProviderCard } from "@panora/embedded-card-react"; - import { ConnectorCategory } from '@panora/shared' - - - ``` - ```javascript Whole Connector Catalog - import "@panora/embedded-card-react/dist/index.css"; - import { PanoraDynamicCatalogCard } from "@panora/embedded-card-react"; - import { ConnectorCategory } from '@panora/shared' - - - ``` - - You should see a card or catalog being rendered client-side ! - - __insert photo__ - - - - - - -Once the user successfully completes the granting auth flow, the connection will have a `status` value of `valid`. - -## **Step 2: Send your first unified API requests** - -### _Create a contact in a CRM_ - - - We assume for this tutorial that you have a valid Panora API Key, and a - `connection_token`. Find help [here](/core-concepts/auth). - - - You can find the Typescript SDK on NPM - [here](https://www.npmjs.com/package/@panora/sdk-typescript) - - In this example, we will create a contact in a CRM. Visit other sections of the [documentation](/api-reference/introduction) to find category-specific examples. - - ```javascript TypeScript - import { PanoraSDK } from '@panora/sdk-typescript'; - - const sdk = new PanoraSDK({ accessToken: "MY_API_KEY" }); - - const input = { - first_name: 'tom', - last_name: 'jedusor', - email_addresses: [ - { - 'email_address': 'tom@jedusor.com', - 'email_address_type': 'PERSONAL' - } - ], - phone_numbers: [ - { - 'phone_number': '+33650438278', - 'phone_type': 'MOBILE' - } - ], - }; - - const result = await sdk.crmContact.addContact(input, 'MY_USER_CONNECTION_TOKEN', { - remoteData: true, - }); - - console.log(result); - ``` - - ```python Python - from panorasdk import PanoraSDK - - sdk = PanoraSDK() - - sdk.set_access_token("MY_API_KEY") - - request_body = { - 'first_name': 'tom', - 'last_name': 'jedusor', - 'email_addresses': [ - { - 'email_address': 'tom@jedusor.com', - 'email_address_type': 'PERSONAL' - } - ], - 'phone_numbers': [ - { - 'phone_number': '+33650438278', - 'phone_type': 'MOBILE' - } - ] - } - - results = sdk.crm_contact.add_contact( - request_input = request_body, - connection_token = 'MY_USER_CONNECTION_TOKEN', - remote_data = True - ) - - print(results) - ``` - - ```shell curl - curl --request POST \ - --url https://api.panora.dev/crm/contacts \ - --header 'Authorization: Bearer ' \ - --header 'Content-Type: application/json' \ - --header 'x-connection-token: ' \ - --data '{ - "first_name": "tom", - "last_name": "jedusor", - "email_addresses": [ - { - "email_address": "tom@jedusor.com", - "email_address_type": "PERSONAL" - } - ], - "phone_numbers": [ - { - "phone_number": "+33650438278", - "phone_type": "MOBILE" - } - ] - }' - ``` - - -Let’s break down what’s happening here: - -- We import the `Panora SDK`, which provides a convenient way to interact with the Panora Unified API. -- We create an instance of the `Panora SDK` client, passing in our API key. -- We call the `sdk.crmContact.addContact` method to add a contact inside a 3rd party. We specify the input we want to use (see [here](/crm/contacts/overview) for reference). -- Finally, we print the response. - -## Next Steps - -Congratulations, you’ve successfully sent your first unified API request with Panora! Here are some next steps to continue your journey. - -### Listen to events using a webhook - -Visit our [webhooks section](/webhooks/overview). - -### API resources - -Drop into our [API documentation](/api-reference/introduction) for more details on the available endpoints and parameters. - -Check out our [client SDKs](/backend-sdk/typescript) for a set of tools to make it easier for you to build with and integrate Panora into your applications. - -[✏️ Suggest an update](https://tally.so/r/mRD1QQ?feedback_source=home_quick-start) diff --git a/docs/recipes/add-custom-provider-creds.mdx b/docs/recipes/add-custom-provider-creds.mdx deleted file mode 100644 index 64593bfd2..000000000 --- a/docs/recipes/add-custom-provider-creds.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Custom Credentials" -description: "By default, all connectors use Panora's managed developer applications. You have the option to use your own custom apps." -icon: "gear-code" ---- - -## How it Works -By default, when an end user authenticates any Third Party that uses OAuth via Panora they see a prompt saying "Panora is requesting access to..." - -With Custom OAuth, you can supply your own Client Id and Client Secret and Panora will use those credentials to make the appropriate requests on your behalf. The result of this is that when an end user authenticates, they see "Your [App Name] is requesting access...". - -## How to add custom credentials for a connector - - - Before getting started, make sure you've created a custom oAuth application - inside your sofwtare's developer account.{" "} - - -Visit the _Manage Connectors_ [section](https://dashboard.panora.dev/configuration), choose the connector you wish to add credentials for and add your own credentials. - - -