Pipedream · Schema
Pipedream ConnectToken
An authentication token with a limited lifespan
ProCode_API_CompositionWorkflowsConnectMCPEmbedded IntegrationsManaged AuthAI Agents
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/pipedream/main/json-schema/pipedream-connecttoken-schema.json",
"title": "Pipedream ConnectToken",
"description": "An authentication token with a limited lifespan",
"type": "string",
"pattern": "^ctok_[0-9a-f]{32}$",
"$defs": {
"AccountId": {
"type": "string",
"description": "The unique ID of the account.",
"pattern": "^apn_[a-zA-Z0-9]+$"
},
"Account": {
"type": "object",
"description": "End user account data, returned from the API.",
"required": [
"id"
],
"properties": {
"id": {
"$ref": "#/components/schemas/AccountId"
},
"name": {
"type": "string",
"description": "The custom name of the account if set.",
"nullable": true
},
"external_id": {
"type": "string",
"description": "The external ID associated with the account."
},
"healthy": {
"type": "boolean",
"description": "Indicates if the account is healthy. Pipedream will periodically retry token refresh and test requests for unhealthy accounts"
},
"dead": {
"type": "boolean",
"nullable": true,
"description": "Indicates if the account is no longer active"
},
"app": {
"$ref": "#/components/schemas/App"
},
"created_at": {
"type": "string",
"description": "The date and time the account was created, an ISO 8601 formatted string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"description": "The date and time the account was last updated, an ISO 8601 formatted string",
"format": "date-time"
},
"authorized_scopes": {
"type": "array",
"items": {
"type": "string"
},
"description": "The OAuth scopes effectively granted to this account. Empty for non-OAuth apps."
},
"credentials": {
"type": "object",
"description": "The credentials associated with the account, if the `include_credentials` parameter was set to true in the request (only applicable for BYOA apps). In addition to the well-known OAuth fields listed below, this object may contain app-specific custom fields (e.g. `base_url`).",
"nullable": true,
"additionalProperties": true,
"properties": {
"oauth_client_id": {
"type": "string",
"description": "The OAuth client ID for the app, if applicable"
},
"oauth_access_token": {
"type": "string",
"description": "The OAuth access token"
},
"oauth_refresh_token": {
"type": "string",
"description": "The OAuth refresh token"
},
"oauth_uid": {
"type": "string",
"description": "The unique OAuth user identifier"
},
"oauth_signer_uri": {
"type": "string",
"description": "The OAuth signer URI, if the app uses a custom OAuth signer"
}
}
},
"expires_at": {
"type": "string",
"description": "The date and time the account's credentials expiration, an ISO 8601 formatted string",
"format": "date-time"
},
"error": {
"type": "string",
"description": "The error message if the account is unhealthy or dead, null otherwise",
"nullable": true
},
"last_refreshed_at": {
"type": "string",
"description": "The date and time the account was last refreshed, an ISO 8601 formatted string",
"format": "date-time",
"nullable": true
},
"next_refresh_at": {
"type": "string",
"description": "The date and time the account will next be refreshed, an ISO 8601 formatted string",
"format": "date-time",
"nullable": true
}
}
},
"App": {
"type": "object",
"description": "Response object for a Pipedream app's metadata",
"required": [
"name_slug",
"name",
"img_src",
"custom_fields_json",
"categories",
"featured_weight"
],
"properties": {
"id": {
"type": "string",
"description": "ID of the app. Only applies for OAuth apps.",
"nullable": true
},
"name_slug": {
"type": "string",
"description": "The name slug of the target app (see https://pipedream.com/docs/connect/quickstart#find-your-apps-name-slug)"
},
"name": {
"type": "string",
"description": "The human-readable name of the app"
},
"auth_type": {
"$ref": "#/components/schemas/AppAuthType"
},
"description": {
"type": "string",
"description": "A short description of the app",
"nullable": true
},
"img_src": {
"type": "string",
"description": "The URL to the app's logo"
},
"custom_fields_json": {
"type": "string",
"description": "A JSON string representing the custom fields for the app",
"nullable": true
},
"categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "Categories associated with the app"
},
"featured_weight": {
"type": "number",
"description": "A rough directional ordering of app popularity, subject to changes by Pipedream"
}
}
},
"AppAuthType": {
"type": "string",
"enum": [
"keys",
"oauth",
"none"
],
"description": "The authentication type used by the app",
"nullable": true
},
"AppCategory": {
"type": "object",
"description": "Response object for a Pipedream app category",
"properties": {
"id": {
"type": "string",
"description": "ID of the app category"
},
"name": {
"type": "string",
"description": "The human-readable name of the app category"
},
"description": {
"type": "string",
"description": "A short description of the app category",
"nullable": true
}
}
},
"ConnectUsage": {
"type": "object",
"description": "Connect usage record",
"required": [
"credits_used",
"usage_start_ts",
"usage_end_ts"
],
"properties": {
"credits_used": {
"type": "integer",
"description": "Total Connect credits used"
},
"action_run_credits_used": {
"type": "integer",
"description": "Credits used when running Connect actions",
"nullable": true
},
"proxy_credits_used": {
"type": "integer",
"description": "Credits used by Connect proxy requests",
"nullable": true
},
"source_emit_credits_used": {
"type": "integer",
"description": "Credits used by Connect source event emissions",
"nullable": true
},
"usage_start_ts": {
"type": "integer",
"description": "Usage window start timestamp (seconds)"
},
"usage_end_ts": {
"type": "integer",
"description": "Usage window end timestamp (seconds)"
}
}
},
"ConnectUsageResponse": {
"type": "object",
"description": "Connect usage records for a time window",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ConnectUsage"
}
}
}
},
"BackendClientOpts": {
"type": "object",
"description": "Options for creating a server-side client",
"properties": {
"client_id": {
"type": "string",
"description": "The client ID for authentication"
},
"client_secret": {
"type": "string",
"description": "The client secret for authentication"
},
"api_url": {
"type": "string",
"description": "The API URL to use"
},
"scope": {
"type": "string",
"description": "Optional space-separated scopes for the access token. Defaults to `*`."
}
}
},
"ClientOpts": {
"type": "object",
"description": "Options for creating a server-side client",
"properties": {
"client_id": {
"type": "string",
"description": "The client ID for authentication"
},
"client_secret": {
"type": "string",
"description": "The client secret for authentication"
},
"api_url": {
"type": "string",
"description": "The API URL to use (defaults to https://api.pipedream.com/)"
}
}
},
"Component": {
"type": "object",
"required": [
"key",
"name",
"version",
"configurable_props"
],
"properties": {
"key": {
"type": "string",
"description": "The key that uniquely identifies the component."
},
"name": {
"type": "string",
"description": "The human-readable name of the component, e.g. 'GitLab: List Commits'"
},
"version": {
"type": "string",
"description": "The latest version of the component, in SemVer format.",
"pattern": "^\\d+.\\d+.\\d+$"
},
"configurable_props": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ConfigurableProp"
}
},
"description": {
"type": "string",
"description": "A description of the component",
"nullable": true
},
"component_type": {
"type": "string",
"description": "The type of component (trigger or action)",
"nullable": true
},
"stash": {
"$ref": "#/components/schemas/ComponentStash"
},
"annotations": {
"$ref": "#/components/schemas/ToolAnnotations"
}
}
},
"ToolAnnotations": {
"type": "object",
"description": "Optional properties describing component behavior",
"nullable": true,
"properties": {
"destructiveHint": {
"type": "boolean",
"description": "If true, the component may perform destructive updates to its environment. If false, the component performs only additive updates.",
"nullable": true
},
"idempotentHint": {
"type": "boolean",
"description": "If true, calling the component repeatedly with the same arguments will have no additional effect on the its environment.",
"nullable": true
},
"openWorldHint": {
"type": "boolean",
"description": "If true, this component may interact with an \u201copen world\u201d of external entities. If false, the component's domain of interaction is closed. For example, the world of a web search component is open, whereas that of a memory component is not.",
"nullable": true
},
"readOnlyHint": {
"type": "boolean",
"description": "If true, the component does not modify its environment.",
"nullable": true
},
"title": {
"type": "string",
"description": "A human-readable title for the component.",
"nullable": true
}
}
},
"ComponentStash": {
"type": "string",
"enum": [
"optional",
"required"
],
"description": "Indicates if a File Stash ID is optional or required to run the component",
"nullable": true
},
"ComponentType": {
"type": "string",
"enum": [
"trigger",
"action"
],
"description": "The type of component (trigger or action)"
},
"TimerInterval": {
"type": "object",
"description": "Timer configuration using interval in seconds",
"required": [
"intervalSeconds"
],
"properties": {
"intervalSeconds": {
"type": "integer",
"description": "Interval in seconds for timer execution"
}
}
},
"TimerCron": {
"type": "object",
"description": "Timer configuration using cron expression",
"required": [
"cron"
],
"properties": {
"cron": {
"type": "string",
"description": "Cron expression for timer execution"
}
}
},
"ConfigurablePropBase": {
"type": "object",
"description": "A configuration or input field for a component.",
"required": [
"name",
"type"
],
"properties": {
"name": {
"type": "string",
"description": "When building `configuredProps`, make sure to use this field as the key when setting the prop value"
},
"type": {
"type": "string",
"enum": [
"$.airtable.baseId",
"$.airtable.fieldId",
"$.airtable.tableId",
"$.airtable.viewId",
"$.discord.channel",
"$.discord.channel[]",
"$.interface.apphook",
"$.interface.http",
"$.interface.timer",
"$.service.db",
"alert",
"any",
"app",
"boolean",
"data_store",
"dir",
"http_request",
"integer",
"integer[]",
"object",
"sql",
"string",
"string[]"
],
"x-fern-enum": {
"$.discord.channel[]": {
"name": "DiscordChannelArray"
},
"integer[]": {
"name": "IntegerArray"
},
"string[]": {
"name": "StringArray"
}
}
},
"label": {
"type": "string",
"description": "Value to use as an input label. In cases where `type` is \"app\", should load the app via `getApp`, etc. and show `app.name` instead.",
"nullable": true
},
"description": {
"type": "string",
"description": "A description of the prop, shown to the user when configuring the component.",
"nullable": true
},
"optional": {
"type": "boolean",
"description": "If true, this prop does not need to be specified.",
"nullable": true
},
"disabled": {
"type": "boolean",
"description": "If true, this prop will be ignored.",
"nullable": true
},
"readOnly": {
"type": "boolean",
"description": "If true, this prop is read-only \u2014 its value is either fixed by the component author (`static`) or the prop is purely informational (e.g. `alert`, `dir`). Connect clients should render it without treating it as a configurable input.",
"nullable": true
},
"hidden": {
"type": "boolean",
"description": "If true, should not expose this prop to the user",
"nullable": true
},
"remoteOptions": {
"type": "boolean",
"description": "If true, call `configureComponent` for this prop to load remote options. It is safe, and preferred, given a returned list of { label: string; value: any } objects to set the prop value to { __lv: { label: string; value: any } }. This way, on load, you can access label for the value without necessarily reloading these options",
"nullable": true
},
"useQuery": {
"type": "boolean",
"description": "If true, calls to `configureComponent` for this prop support receiving a `query` parameter to filter remote options",
"nullable": true
},
"reloadProps": {
"type": "boolean",
"description": "If true, after setting a value for this prop, a call to `reloadComponentProps` is required as the component has dynamic configurable props dependent on this one",
"nullable": true
},
"withLabel": {
"type": "boolean",
"description": "If true, you must save the configured prop value as a \"label-value\" object which should look like: { __lv: { label: string; value: any } } because the execution needs to access the label",
"nullable": true
}
}
},
"ConfigurablePropAlert": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop is used to configure an alert component",
"required": [
"type",
"content"
],
"properties": {
"type": {
"type": "string",
"enum": [
"alert"
]
},
"alertType": {
"$ref": "#/components/schemas/ConfigurablePropAlertType"
},
"content": {
"type": "string",
"description": "The content of the alert, which can include HTML or plain text."
}
}
}
]
},
"ConfigurablePropAlertType": {
"type": "string",
"enum": [
"info",
"neutral",
"warning",
"error"
],
"description": "The severity level of the alert."
},
"ConfigurablePropAny": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop can accept any value.",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"any"
]
},
"default": {
"$ref": "#/components/schemas/ConfiguredPropValueAny"
},
"options": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/components/schemas/PropOption"
},
{
"$ref": "#/components/schemas/PropOptionNested"
},
{
"$ref": "#/components/schemas/PropOptionValue"
}
]
}
}
}
}
]
},
"ConfigurablePropApp": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop is used to configure an account for a specific app",
"required": [
"type",
"app"
],
"properties": {
"type": {
"type": "string",
"enum": [
"app"
]
},
"app": {
"type": "string",
"description": "The name slug of the app, e.g. 'github', 'slack', etc. This is used to identify the app for which the account is being configured."
}
}
}
]
},
"ConfigurablePropBoolean": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop can accept a boolean value.",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"boolean"
]
},
"default": {
"$ref": "#/components/schemas/ConfiguredPropValueBoolean"
},
"options": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/components/schemas/PropOption"
},
{
"$ref": "#/components/schemas/PropOptionNested"
},
{
"$ref": "#/components/schemas/PropOptionValue"
}
]
}
}
}
}
]
},
"ConfigurablePropTimer": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop is used to configure a timer interface.",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"$.interface.timer"
]
},
"static": {
"$ref": "#/components/schemas/ConfigurablePropTimerStatic"
},
"default": {
"$ref": "#/components/schemas/ConfigurablePropTimerDefault"
},
"options": {
"type": "array",
"nullable": true,
"description": "Available timer configuration options",
"items": {
"$ref": "#/components/schemas/ConfigurablePropTimerOption"
}
}
}
}
]
},
"ConfigurablePropTimerDefault": {
"nullable": true,
"description": "Default timer configuration",
"oneOf": [
{
"$ref": "#/components/schemas/TimerInterval"
},
{
"$ref": "#/components/schemas/TimerCron"
}
]
},
"ConfigurablePropTimerOption": {
"nullable": true,
"description": "Timer configuration options",
"oneOf": [
{
"$ref": "#/components/schemas/TimerInterval"
},
{
"$ref": "#/components/schemas/TimerCron"
}
]
},
"ConfigurablePropTimerStatic": {
"nullable": true,
"description": "Static timer configuration",
"oneOf": [
{
"$ref": "#/components/schemas/TimerInterval"
},
{
"$ref": "#/components/schemas/TimerCron"
}
]
},
"HttpRequestField": {
"type": "object",
"description": "A name-value field for HTTP request configuration",
"required": [
"name",
"value"
],
"properties": {
"name": {
"type": "string",
"description": "The field name"
},
"value": {
"type": "string",
"description": "The field value"
}
}
},
"HttpRequestAuth": {
"type": "object",
"description": "Authentication configuration for HTTP request",
"nullable": true,
"properties": {
"type": {
"type": "string",
"enum": [
"basic",
"bearer",
"none"
],
"description": "The authentication type"
},
"username": {
"type": "string",
"nullable": true
},
"password": {
"type": "string",
"nullable": true
},
"token": {
"type": "string",
"nullable": true
}
}
},
"HttpRequestBody": {
"type": "object",
"description": "Body configuration for HTTP request",
"nullable": true,
"properties": {
"type": {
"type": "string",
"enum": [
"fields",
"raw"
],
"nullable": true
},
"contentType": {
"type": "string",
"nullable": true
},
"fields": {
"type": "array",
"items": {
"$ref": "#/components/schemas/HttpRequestField"
},
"nullable": true
},
"mode": {
"type": "string",
"enum": [
"fields",
"raw"
],
"nullable": true
},
"raw": {
"type": "string",
"nullable": true
}
}
},
"HttpRequestConfig": {
"type": "object",
"description": "Configuration for an HTTP request prop",
"nullable": true,
"properties": {
"auth": {
"$ref": "#/components/schemas/HttpRequestAuth"
},
"body": {
"$ref": "#/components/schemas/HttpRequestBody"
},
"headers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/HttpRequestField"
},
"nullable": true
},
"params": {
"type": "array",
"items": {
"$ref": "#/components/schemas/HttpRequestField"
},
"nullable": true
},
"tab": {
"type": "string",
"nullable": true
},
"method": {
"type": "string",
"nullable": true
},
"url": {
"type": "string",
"nullable": true
}
}
},
"ConfigurablePropApphook": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop is used to configure an app webhook interface.",
"required": [
"type",
"appProp"
],
"properties": {
"type": {
"type": "string",
"enum": [
"$.interface.apphook"
]
},
"appProp": {
"type": "string",
"description": "The name of the app prop that this apphook depends on"
},
"eventNames": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of event names to listen for",
"nullable": true
},
"remote": {
"type": "boolean",
"description": "Whether this apphook is remote",
"nullable": true
},
"static": {
"type": "array",
"items": {},
"description": "Static configuration for the apphook",
"nullable": true
}
}
}
]
},
"ConfigurablePropIntegerArray": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop can accept an array of integers.",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"integer[]"
]
},
"min": {
"type": "integer",
"description": "The minimum value for integers in this array",
"nullable": true
},
"max": {
"type": "integer",
"description": "The maximum value for integers in this array",
"nullable": true
},
"default": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ConfiguredPropValueInteger"
},
"description": "Default array of integers",
"nullable": true
},
"options": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/components/schemas/PropOption"
},
{
"$ref": "#/components/schemas/PropOptionNested"
},
{
"$ref": "#/components/schemas/PropOptionValue"
}
]
},
"description": "Available options for the integer array",
"nullable": true
}
}
}
]
},
"ConfigurablePropHttp": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop is used to configure an HTTP interface.",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"$.interface.http"
]
},
"customResponse": {
"type": "boolean",
"description": "Whether this HTTP interface allows custom responses",
"nullable": true
}
}
}
]
},
"ConfigurablePropDb": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop is used to configure a database service.",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"$.service.db"
]
}
}
}
]
},
"ConfigurablePropDataStore": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop is used to configure a data store for key-value storage.",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"data_store"
]
}
}
}
]
},
"ConfigurablePropDir": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop is used to indicate how a component may access File Stash",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"dir"
]
},
"accessMode": {
"$ref": "#/components/schemas/ConfigurablePropDirAccessMode"
},
"sync": {
"type": "boolean",
"description": "If true, the component's /tmp directory is synchronized with File Stash"
}
}
}
]
},
"ConfigurablePropDirAccessMode": {
"type": "string",
"enum": [
"read",
"write",
"read-write"
],
"x-fern-enum": {
"read-write": {
"name": "ReadWrite"
}
},
"description": "The mode in which the component may access File Stash"
},
"ConfigurablePropHttpRequest": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop is used to configure an HTTP request with URL, method, headers, params, body, and authentication.",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"http_request"
]
},
"default": {
"$ref": "#/components/schemas/HttpRequestConfig"
}
}
}
]
},
"ConfigurablePropSql": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigurablePropBase"
},
{
"type": "object",
"description": "This prop is used to configure SQL queries.",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"sql"
]
},
"auth": {
"$re
# --- truncated at 32 KB (92 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/pipedream/refs/heads/main/json-schema/pipedream-connecttoken-schema.json