PDQ Connector
Description
PDQ provides a suite of management tools to automate software deployment, manage patches, and track inventory across a company’s networks.
Use the PDQ component to manage deployments, devices, groups, and packages.
API Documentation:
The component was built using the PDQ V1 API
Connections
API Key
key: pdq-api-keyFollow these steps to generate a new API key in PDQ:
- Log in to the PDQ Connect account and select the settings icon represented by a cog located in the lower left corner.
- Navigate to the API keys section and select Create API Key.
- Provide a unique name for the API key and select Create.
- Copy and save the generated API key as it will not be shown again.
- Enter the generated API key into the connection configuration of the integration.
| Input | Notes | Example |
|---|---|---|
| API Key | The API key generated from the PDQ Connect settings page. See PDQ Connect API. | pdq_a1b2c3d4e5f67890a1b2c3d4e5f67890 |
Triggers
New Records
Checks for new Devices or Groups added to PDQ on a configured schedule. | key: pollChangesTrigger
| Input | Notes | Example |
|---|---|---|
| Connection | The PDQ connection to use. | |
| Resource Type | Select the PDQ resource to poll for newly added records. Choose Devices or Groups. Required. | Devices |
This trigger polls PDQ on a configured schedule and emits Devices or Groups that were added since the previous run. It is a convenient alternative for reacting to newly inventoried resources without manual checks.
How It Works
PDQ's list endpoints expose an insertedAt (creation) timestamp on each record but no modification timestamp, and no confirmed server-side date filter. On each scheduled run the trigger fetches all records of the selected resource (sorted by insertedAtDesc) and keeps only those whose insertedAt is after the previous poll time. The current run time is stored as the cursor for the next run.
- First run: the very first execution records the cursor and emits nothing, so an instance does not receive a backlog of historical records on deploy.
- Subsequent runs: only records added since the last run are returned.
Returned Data
The trigger returns the newly added records under data.created. Fields shown are representative. The full response object includes additional properties.
Example Payload
{
"data": {
"created": [
{
"id": "dvc_1bced782734040a581d",
"name": "LAB01",
"hostname": "LAB01",
"insertedAt": "2024-01-01T00:00:00.000000Z"
}
]
}
}
Notes
- This trigger detects new records only. PDQ exposes a creation timestamp (
insertedAt) but no modification timestamp, so edits to existing devices or groups are not detected. - Because there is no confirmed server-side date filter, each run lists all records of the resource and filters them in memory.
Example Payload for New Records⤓
Data Sources
Select Device
Select a Device from a dropdown menu. | key: selectDevice | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The PDQ connection to use. |
Example Payload for Select Device⤓
Select Group
Select a Group from a dropdown menu. | key: selectGroup | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The PDQ connection to use. |
Example Payload for Select Group⤓
Select Package
Select a Package from a dropdown menu. | key: selectPackage | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The PDQ connection to use. |
Example Payload for Select Package⤓
Actions
Create Deployment
Deploy a package version to target devices or groups. | key: createDeployment
| Input | Notes | Example |
|---|---|---|
| Connection | The PDQ connection to use. | |
| Package ID | The package id to deploy. | pkg_123abc |
| Targets | Comma-delimited Device IDs or Group IDs. | grp_123abc,dvc_123abc |
Example Payload for Create Deployment⤓
Get Device
Retrieve a device by ID. | key: getDevice
| Input | Notes | Example |
|---|---|---|
| Connection | The PDQ connection to use. | |
| Device ID | The ID of the device to retrieve. | 123456 |
Example Payload for Get Device⤓
Get Package
Retrieve a package by ID. | key: getPackage
| Input | Notes | Example |
|---|---|---|
| Connection | The PDQ connection to use. | |
| Package ID | The unique identifier for the package to retrieve. | 123456 |
Example Payload for Get Package⤓
List Devices
Retrieve a list of devices. | key: listDevices
| Input | Notes | Example |
|---|---|---|
| Connection | The PDQ connection to use. | |
| Custom Query Params | Additional query parameters to include in the request. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results using pagination. | false |
| Filters | Optional query controls to sort and refine the results. | |
| Group ID | The id of the group to filter by. | 123456 |
| Includes | Include related resources. | networking,processors |
| Pagination | Page number and page size to control result paging. |
Example Payload for List Devices⤓
List Groups
Retrieve a list of groups. | key: listGroups
| Input | Notes | Example |
|---|---|---|
| Connection | The PDQ connection to use. | |
| Custom Query Params | Additional query parameters to include in the request. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results using pagination. | false |
| Filters | Optional query controls to sort and refine the results. | |
| Pagination | Page number and page size to control result paging. |
Example Payload for List Groups⤓
List Packages
Retrieve a list of packages. | key: listPackages
| Input | Notes | Example |
|---|---|---|
| Connection | The PDQ connection to use. | |
| Custom Query Params | Additional query parameters to include in the request. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results using pagination. | false |
| Filters | Optional query controls to sort and refine the results. | |
| Pagination | Page number and page size to control result paging. |
Example Payload for List Packages⤓
Raw Request
Send raw HTTP request to the PDQ API. | key: rawRequest
| Input | Notes | Example |
|---|---|---|
| Connection | The PDQ connection to use. | |
| Data | The HTTP body payload to send to the URL. | {"exampleKey": "Example Data"} |
| File Data | File Data to be sent as a multipart form upload. | [{key: "example.txt", value: "My File Contents"}] |
| File Data File Names | File names to apply to the file data inputs. Keys must match the file data keys above. | |
| Form Data | The Form Data to be sent as a multipart form upload. | [{"key": "Example Key", "value": new Buffer("Hello World")}] |
| Header | A list of headers to send with the request. | User-Agent: curl/7.64.1 |
| Max Retry Count | The maximum number of retries to attempt. Specify 0 for no retries. | 0 |
| Method | The HTTP method to use. | |
| Query Parameter | A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2. | |
| Response Type | The type of data you expect in the response. You can request json, text, or binary data. | json |
| Retry On All Errors | If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors. | false |
| Retry Delay (ms) | The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled. | 0 |
| Timeout | The maximum time that a client will await a response to its request | 2000 |
| URL | Input the path only (/deployments), The base URL is already included (https://app.pdq.com/v1/api). For example, to connect to https://app.pdq.com/v1/api/deployments, only /deployments is entered in this field. e.g. /deployments | /deployments |
| Use Exponential Backoff | Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored. | false |
Changelog
2026-08-14
Enhanced action configuration and connection security:
- Grouped the paging and query-control inputs on List Devices, List Groups, and List Packages into the Pagination and Filters structured objects; Fetch All remains a top-level toggle
- Fixed List Devices to send configured custom query parameters, which were previously discarded
- Changed the API Key connection field to a masked password field
- Added output schemas to the Create Deployment, Get Device, List Devices, List Groups, Get Package, and List Packages actions for improved field mapping during configuration
- Added inline action calling support across all actions for improved example output during configuration
2026-06-09
Added the New Records polling trigger for Devices and Groups, which checks for records added since the last run
2026-04-30
Updated spectral version
2025-08-29
Added data sources and inline data sources for Devices, Groups, and Packages:
- Updated all string input placeholders to follow Guru standards (using "Enter..." pattern)
- Fixed connection label to follow standards (removed component name from label)
- Added marketing categories configuration