diff --git a/docs-v2/pages/connect/api.mdx b/docs-v2/pages/connect/api.mdx index 33e17a3f8d040..28622afc0f609 100644 --- a/docs-v2/pages/connect/api.mdx +++ b/docs-v2/pages/connect/api.mdx @@ -701,7 +701,7 @@ curl -X GET \ #### Delete connected account -Delete a specific connected account for an end user +Delete a specific connected account for an end user, and any deployed triggers. ``` DELETE /{project_id}/accounts/{account_id} @@ -867,7 +867,7 @@ Pipedream returns a `204 No Content` response on successful account deletion #### Delete an end user -Delete an end user and all their connected accounts +Delete an end user, all their connected accounts, and any deployed triggers. ``` DELETE /{project_id}/users/{external_user_id} @@ -1879,7 +1879,7 @@ const pd = createBackendClient({ }); // Deploy the "New Issue (Instant)" trigger for the Gitlab app -const { data: deployedTrigger } = await pd.runAction({ +const { data: deployedTrigger } = await pd.deployTrigger({ triggerId: { key: "gitlab-new-issue", }, @@ -1917,7 +1917,7 @@ const pd = createBackendClient({ }); // Deploy the "New Issue (Instant)" trigger for the Gitlab app -const { data: deployedTrigger } = await pd.runAction({ +const { data: deployedTrigger } = await pd.deployTrigger({ triggerId: { key: "gitlab-new-issue", }, @@ -2015,7 +2015,7 @@ curl -X POST "https://api.pipedream.com/v1/connect/{your_project_id}/triggers/de "type": "$.service.db" }, "http": { - "endpoint_url": "https://39643dc2c8ff98a019f3fdc9078d6db9.m.pipedream.net" + "endpoint_url": "https://xxxxxxxxxx.m.pipedream.net" }, "projectId": 45672541 }, @@ -2027,3 +2027,357 @@ curl -X POST "https://api.pipedream.com/v1/connect/{your_project_id}/triggers/de } } ``` + +#### List deployed triggers + +List all of the deployed triggers for a given user. + +```text +GET /deployed-triggers/ +``` + +##### Query parameters + +`external_user_id` **string** + +[The external user ID](/connect/api/#external-users) in your system on behalf of +which you want to deploy the trigger. + + +##### Examples + +```bash +# First, obtain an OAuth access token +curl -X POST https://api.pipedream.com/v1/oauth/token \ + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "client_credentials", + "client_id": "{oauth_client_id}", + "client_secret": "{oauth_client_secret}" + }' + +# The response will include an access_token. Use it in the Authorization header below. +# This request will list all deployed triggers for the specified user. + +curl -X GET \ + -G \ + "https://api.pipedream.com/v1/connect/{your_project_id}/deployed-triggers" \ + -H "Authorization: Bearer {access_token}" \ + -H "Content-Type: application/json" \ + -H "x-pd-environment: development" \ + -d "external_user_id={external_user_id}" +``` + +##### Example response + +```json +{ + "page_info": { + "total_count": 2, + "count": 2, + "start_cursor": "ZGNfZ3p1bUsyZQ", + "end_cursor": "ZGNfdjN1QllYZw" + }, + "data": [ + { + "id": "dc_gzumK2e", + "owner_id": "exu_2LniLm", + "component_id": "sc_r1ixBpL", + "configurable_props": [ + { + "name": "googleDrive", + "type": "app", + "app": "google_drive" + }, + { + "name": "db", + "type": "$.service.db" + }, + { + "name": "http", + "type": "$.interface.http" + }, + { + "name": "drive", + "type": "string", + "label": "Drive", + "description": "Defaults to My Drive. To select a [Shared Drive](https://support.google.com/a/users/answer/9310351) instead, select it from this list.", + "optional": false, + "default": "My Drive", + "remoteOptions": true + }, + { + "name": "timer", + "label": "Push notification renewal schedule", + "description": "The Google Drive API requires occasional renewal of push notification subscriptions. **This runs in the background, so you should not need to modify this schedule**.", + "type": "$.interface.timer", + "static": { + "intervalSeconds": 82080 + } + }, + { + "name": "folders", + "type": "string[]", + "label": "Folders", + "description": "(Optional) The folders you want to watch. Leave blank to watch for any new file in the Drive.", + "optional": true, + "default": [], + "remoteOptions": true + } + ], + "configured_props": { + "googleDrive": { + "authProvisionId": "apn_V1hMeLM" + }, + "db": { + "type": "$.service.db" + }, + "http": { + "endpoint_url": "https://xxxxxxxxxx.m.pipedream.net" + }, + "drive": "My Drive", + "timer": { + "cron": null, + "interval_seconds": 82080 + } + }, + "active": true, + "created_at": 1733512889, + "updated_at": 1733512889, + "name": "Danny Connect - exu_2LniLm", + "name_slug": "danny-connect---exu-2-lni-lm-3" + }, + { + "id": "dc_K0u2OEQ", + "owner_id": "exu_2LniLm", + "component_id": "sc_ogiRveN", + "configurable_props": [ + { + "name": "app", + "type": "app", + "app": "basecamp" + }, + { + "name": "db", + "type": "$.service.db" + }, + { + "name": "accountId", + "type": "string", + "label": "Account Id", + "description": "The ID of the account.", + "remoteOptions": true + }, + { + "name": "projectId", + "type": "string", + "label": "Project Id", + "description": "The ID of the project.", + "remoteOptions": true + }, + { + "name": "http", + "type": "$.interface.http" + } + ], + "configured_props": { + "app": { + "authProvisionId": "apn_EOh4dP0" + }, + "db": { + "type": "$.service.db" + }, + "accountId": { + "__lv": { + "label": "Pipedream", + "value": 5871996 + } + }, + "projectId": { + "__lv": { + "label": "Getting Started", + "value": 39996142 + } + }, + "http": { + "endpoint_url": "https://xxxxxxxxxx.m.pipedream.net" + } + }, + "active": true, + "created_at": 1733198039, + "updated_at": 1733198039, + "name": "Danny Connect - exu_2LniLm", + "name_slug": "danny-connect---exu-2-lni-lm-1" + } + ] +} +``` + +#### Retrieve a deployed trigger + +Retrieve a single deployed trigger for a given user. + +```text +GET /deployed-triggers/{deployed_component_id}/ +``` + +##### Path parameters + +`dcid` **string** + +The deployed component ID for the trigger you'd like to retrieve. + +##### Query parameters + +`external_user_id` **string** + +[The external user ID](/connect/api/#external-users) in your system on behalf of +which you want to deploy the trigger. + + +##### Examples + +```bash +# First, obtain an OAuth access token +curl -X POST https://api.pipedream.com/v1/oauth/token \ + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "client_credentials", + "client_id": "{oauth_client_id}", + "client_secret": "{oauth_client_secret}" + }' + +# The response will include an access_token. Use it in the Authorization header below. +# This request will list all deployed triggers for the specified user. + +curl -X GET \ + -G \ + "https://api.pipedream.com/v1/connect/{your_project_id}/deployed-triggers/{dcid}/" \ + -H "Authorization: Bearer {access_token}" \ + -H "Content-Type: application/json" \ + -H "x-pd-environment: development" \ + -d "external_user_id={external_user_id}" +``` + +##### Example response + +```json +{ + "id": "dc_gzumK2e", + "owner_id": "exu_2LniLm", + "component_id": "sc_r1ixBpL", + "configurable_props": [ + { + "name": "googleDrive", + "type": "app", + "app": "google_drive" + }, + { + "name": "db", + "type": "$.service.db" + }, + { + "name": "http", + "type": "$.interface.http" + }, + { + "name": "drive", + "type": "string", + "label": "Drive", + "description": "Defaults to My Drive. To select a [Shared Drive](https://support.google.com/a/users/answer/9310351) instead, select it from this list.", + "optional": false, + "default": "My Drive", + "remoteOptions": true + }, + { + "name": "timer", + "label": "Push notification renewal schedule", + "description": "The Google Drive API requires occasional renewal of push notification subscriptions. **This runs in the background, so you should not need to modify this schedule**.", + "type": "$.interface.timer", + "static": { + "intervalSeconds": 82080 + } + }, + { + "name": "folders", + "type": "string[]", + "label": "Folders", + "description": "(Optional) The folders you want to watch. Leave blank to watch for any new file in the Drive.", + "optional": true, + "default": [], + "remoteOptions": true + } + ], + "configured_props": { + "googleDrive": { + "authProvisionId": "apn_V1hMeLM" + }, + "db": { + "type": "$.service.db" + }, + "http": { + "endpoint_url": "https://xxxxxxxxxx.m.pipedream.net" + }, + "drive": "My Drive", + "timer": { + "cron": null, + "interval_seconds": 82080 + } + }, + "active": true, + "created_at": 1733512889, + "updated_at": 1733512889, + "name": "Danny Connect - exu_2LniLm", + "name_slug": "danny-connect---exu-2-lni-lm-3" +} +``` + +#### Delete a deployed trigger + +Delete deployed trigger for a given user. + +```text +DELETE /deployed-triggers/{deployed_component_id}/ +``` + +##### Path parameters + +`dcid` **string** + +The deployed component ID for the trigger you'd like to retrieve. + +##### Query parameters + +`external_user_id` **string** + +[The external user ID](/connect/api/#external-users) in your system on behalf of +which you want to deploy the trigger. + + +##### Examples + +```bash +# First, obtain an OAuth access token +curl -X POST https://api.pipedream.com/v1/oauth/token \ + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "client_credentials", + "client_id": "{oauth_client_id}", + "client_secret": "{oauth_client_secret}" + }' + +# The response will include an access_token. Use it in the Authorization header below. +# This request will list all deployed triggers for the specified user. + +curl -X DELETE \ + -G \ + "https://api.pipedream.com/v1/connect/{your_project_id}/deployed-triggers/{dcid}/" \ + -H "Authorization: Bearer {access_token}" \ + -H "Content-Type: application/json" \ + -H "x-pd-environment: development" \ + -d "external_user_id={external_user_id}" +``` + +##### Response + +Pipedream returns a `204 No Content` response on successful deletion \ No newline at end of file diff --git a/docs-v2/pages/connect/components.mdx b/docs-v2/pages/connect/components.mdx index 02b9a239c853e..efe46f3c1b243 100644 --- a/docs-v2/pages/connect/components.mdx +++ b/docs-v2/pages/connect/components.mdx @@ -26,19 +26,133 @@ Running components for your end users via Pipedream Connect is in **beta**, and ## How to run components for your end users + +Refer to the [Connect API docs](/connect/api) for the full API reference. Below is a quickstart with a few specific examples. + + -### Retrieving a component's definition +### Find the app you want to use + + +You can also skip steps 1 and 2 if you already know the component you want to use or if you'd prefer to [pass a natural language prompt to Pipedream's component search API](/rest-api#search-for-registry-components). + + +In order to find the right trigger or action to configure and run, you first need to find the app. For this example, we'll search for `gitlab`. + +```text +GET /v1/connect/apps?q=gitlab +``` + +Here's the response: + +```json +{ + "page_info": { + "total_count": 1, + "count": 1, + "start_cursor": "Z2l0bGFi", + "end_cursor": "Z2l0bGFi" + }, + "data": [ + { + "id": "app_1Z2hw1", + "name_slug": "gitlab", + "name": "GitLab", + "auth_type": "oauth", + "description": "GitLab is the most comprehensive AI-powered DevSecOps Platform.", + "img_src": "https://assets.pipedream.net/s.v0/app_1Z2hw1/logo/orig", + "custom_fields_json": "[{\"name\":\"base_api_url\",\"label\":\"Base API URL\",\"description\":\"The Base API URL defaults to `gitlab.com`. If you are using self-hosted Gitlab, enter your base url here, e.g. `gitlab.example.com`\",\"default\":\"gitlab.com\",\"optional\":null}]", + "categories": [ + "Developer Tools" + ] + } + ] +} +``` + +### List the available components for the app + +Once you have the app you want to use, now you can list the triggers and/or actions for that app. We'll list the actions for Gitlab and we'll pass the `name_slug` `gitlab` as the `app`. + +```text +GET /actions?app=gitlab +``` + +Here's the response: + +```json +{ + "page_info": { + "total_count": 20, + "count": 10, + "start_cursor": "c2NfbHlpRThkQQ", + "end_cursor": "c2NfQjVpTkJBTA" + }, + "data": [ + { + "name": "List Commits", + "version": "0.0.2", + "key": "gitlab_developer_app-list-commits" + }, + { + "name": "Update Issue", + "version": "0.0.1", + "key": "gitlab_developer_app-update-issue" + }, + { + "name": "Update Epic", + "version": "0.0.1", + "key": "gitlab_developer_app-update-epic" + }, + { + "name": "Search Issues", + "version": "0.0.1", + "key": "gitlab_developer_app-search-issues" + }, + { + "name": "List Repo Branches", + "version": "0.0.1", + "key": "gitlab_developer_app-list-repo-branches" + }, + { + "name": "Get Repo Branch", + "version": "0.0.1", + "key": "gitlab_developer_app-get-repo-branch" + }, + { + "name": "Get Issue", + "version": "0.0.1", + "key": "gitlab_developer_app-get-issue" + }, + { + "name": "Create issue", + "version": "0.0.1", + "key": "gitlab_developer_app-create-issue" + }, + { + "name": "Create Epic", + "version": "0.0.1", + "key": "gitlab_developer_app-create-epic" + }, + { + "name": "Create Branch", + "version": "0.0.1", + "key": "gitlab_developer_app-create-branch" + } + ] +} +``` +### Retrieve the component's definition -The first thing to do in order to run a component for your end users is to know -about the component itself. To start with, you need to know the component's -unique key. Using that key, you can retrieve the component's structure from the -Pipedream API. See the [component +In order to run a component for your end users, you need to understand +the component's definition. Now that you have the component's key from the previous step, +you can retrieve its structure from the Pipedream API. See the [component structure](/components/api#component-structure) section in our docs for more details. As an example, the following API call will return the structure of the **List -Commits** component for Gitlab: +Commits** action for Gitlab: ```text GET /v1/connect/components/gitlab-list-commits @@ -93,7 +207,7 @@ example above: Using this information, you can now drive the configuration of the component for your end users, as described in the next section. -### Configuration +### Configure the component Component execution on behalf of your end users requires a few preliminary steps, focused on getting the right input parameters (aka @@ -228,7 +342,7 @@ For example, to retrieve the configuration options for the `refName` prop: } ``` -#### Dynamic props (optional) +### Configure dynamic props (optional) The set of props that a component can accept might not be static, and can change depending on the values of prior props. Props that behave this way are called @@ -337,7 +451,7 @@ supports two types of components: [actions](/components#actions) and [sources](/components#sources) (aka triggers). Actions are components that perform a task by taking an input either during -[configuration](#configuration) and/or during invocation (usually both), and +[configuration](#configure-the-component) and/or during invocation (usually both), and produce a result. Sources are very similar, but the difference is that they are not invoked directly by Pipedream users, but rather by events that happen on a third-party service. For example, the "New File" source for Google Drive will be diff --git a/docs-v2/pages/rest-api/index.mdx b/docs-v2/pages/rest-api/index.mdx index 3876eda90849a..4141edad1e8b6 100644 --- a/docs-v2/pages/rest-api/index.mdx +++ b/docs-v2/pages/rest-api/index.mdx @@ -163,6 +163,10 @@ failure of an API request: ## Accounts + +These docs discuss connected accounts **for Pipedream users**. To retrieve accounts for your end users via Connect, refer to the [Connect API docs](/connect/api#accounts). + + [Connected accounts](/connected-accounts/) let you manage credentials for integrated APIs. ### List accounts @@ -345,6 +349,24 @@ GET /apps A query string to filter the list of apps. For example, to search for apps that **contain** the string "Slack", pass `q=Slack`. +--- + +`has_components` **string** (_optional_) + +Pass `1` to filter the list of apps to only those with public triggers or actions. + +--- + +`has_actions` **string** (_optional_) + +Pass `1` to filter the list of apps to only those with public actions. + +--- + +`has_triggers` **string** (_optional_) + +Pass `1` to filter the list of apps to only those with public triggers. + #### Example Request ```shell @@ -439,6 +461,10 @@ curl https://api.pipedream.com/v1/apps/app_OkrhR1 \ ## Components + +These docs discuss the management of Pipedream components. To run components on behalf of your end users in your application, refer to the [Connect API docs](/connect/api#components). + + Components are objects that represent the code for an [event source](#sources). ### Create a component diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d4595a5cce24..94d317e529b42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1239,8 +1239,7 @@ importers: specifier: ^1.6.0 version: 1.6.6 - components/boldsign: - specifiers: {} + components/boldsign: {} components/boloforms: dependencies: