Duro PLM Component
Manage products, components, and change orders in Duro PLM.
Component key: duro-plm
Description
Duro PLM is a cloud based Product Lifecycle Management (PLM) platform for managing part data, change orders, and product development workflows. This component allows managing products, components, change orders, and other resources in a Duro workspace.
API Documentation
This component was built using the Duro GraphQL API Reference.
Connections
API Key
key: duroApiKeyTo authenticate with Duro PLM, an API key is required.
Prerequisites
- A Duro account
- Access to account settings with permissions to generate API keys
Setup Steps
To generate an API key:
- Navigate to the Duro application and log in to the account
- Click the user avatar in the top right corner and select Account settings
- In the Settings menu, select the Integrations tab
- Click the Get API Key button below the Integrations table
- Copy the displayed API key value
Refer to the Duro GraphQL API documentation for additional information about API authentication.
Configure the Connection
Enter the following values in the connection configuration:
- API Key: The API key generated from the Duro account settings
- Duro Environment: Select the appropriate environment based on data residency requirements:
- Main (MFG): Standard production environment for most accounts
- ITAR: US Government ITAR-compliant environment
- EU: European data residency environment
- Custom Duro Environment (Optional): Provide a custom GraphQL endpoint URL to override the selected environment. Use this for private Duro instances or custom deployments.
| Input | Notes | Example |
|---|---|---|
| Custom Duro Environment | If provided, this will override the selected Duro Environment. Use for private Duro instances or custom deployments. | https://custom-instance.duro.app/graphql |
| Duro Environment | The Duro GraphQL endpoint. Select based on data residency requirements: Main (MFG) for standard accounts, ITAR for US government compliance, or EU for European data residency. | https://mfg.duro.app/graphql |
| API Key | The API key for the Duro account. Generate an API key in Duro account settings under the Integrations tab. | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0 |
Data Sources
Select Component
A picklist of components in your library. | key: selectComponent | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Duro PLM connection to use. | |
| First N Items | The number of items to return. | 10 |
| Library Type | The type of library to query. Company (GENERAL) contains shared production components, while Sandbox (PERSONAL) contains personal or test components. | GENERAL |
Actions
Create Change Order
Creates a draft change order. | key: createChangeOrder
| Input | Notes | Example |
|---|---|---|
| Connection | The Duro PLM connection to use. | |
| Description | A detailed description of the change order, including the reason for the change and expected impact. | Replace aluminum housing with stainless steel to improve corrosion resistance in marine environments. |
| Name | The name of the change order to create. | ECO-2024-001: Update Component Materials |
| Type | The type of change order to create. ECO (Engineering Change Order), MCO (Manufacturing Change Order), or DCO (Document Change Order). | ECO |
{
"data": {
"createChangeOrder": {
"id": "abcdef1234567890abcdef12",
"con": {
"displayValue": "ECO-12345"
},
"description": "Initial creation of the change order for testing purposes.",
"name": "Initial Change Order",
"status": "DRAFT",
"type": "ECO",
"created": "2024-06-24T22:31:27.808Z",
"creator": {
"email": "john.doe@example.com",
"id": "1234567890abcdef12345678",
"firstName": "John",
"lastName": "Doe"
}
}
}
}
Get Component by ID
Get a specific component by a unique identifier | key: getComponentById
| Input | Notes | Example |
|---|---|---|
| Component ID | The unique identifier for the component to retrieve. | 666c5a9528e821000815990e |
| Connection | The Duro PLM connection to use. |
{
"data": {
"componentsByIds": [
{
"id": "abcdef1234567890abcdef12",
"cpn": {
"displayValue": "123-45678"
},
"created": "2024-06-14T14:58:29.791Z",
"category": "Integrated Circuit",
"archived": false,
"customSpecs": [],
"description": "A high-performance integrated circuit for advanced applications.",
"documentLinks": [],
"eid": "20-4567-B2",
"family": "IC",
"images": [
{
"mime": "JPEG",
"creator": {
"email": "john.doe@example.com"
},
"name": "ic_image.jpg",
"src": "https://example.com/ic_image.jpg"
}
],
"legacyCpn": "123-45678",
"lastModified": "2024-06-14T14:58:30.229Z",
"manufacturers": [],
"name": "High-Performance IC",
"primarySource": {
"dpn": "DP1234",
"distributor": "Distributor Inc.",
"manufacturer": "IC Manufacturer Ltd.",
"minQuantity": 10,
"mpn": "MP1234",
"unitPrice": 5.99
},
"specs": [],
"status": "PRODUCTION",
"revisionValue": "1",
"workflowState": "Approved",
"vendorId": "V1234",
"creator": {
"id": "1234567890abcdef12345678",
"email": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe"
},
"revisionHistory": [
{
"id": "abcdef1234567890abcdef34",
"cpn": {
"displayValue": "123-45678"
},
"revisionValue": "1"
}
],
"children": [
{
"component": {
"id": "abcdef1234567890abcdef56"
}
},
{
"component": {
"id": "abcdef1234567890abcdef78"
}
}
],
"modified": false,
"imageIds": [
"abcdef1234567890abcdef90"
]
}
]
}
}
Get Current User
Get information about the currently authenticated user | key: getCurrentUser
| Input | Notes | Example |
|---|---|---|
| Connection | The Duro PLM connection to use. |
{
"data": {
"userById": {
"lastName": "Smith",
"email": "john.smith@example.com",
"firstName": "John",
"id": "1234567890abcdef12345678",
"primaryCompany": {
"id": "abcdef1234567890abcdef12",
"name": "ExampleCorp"
}
}
}
}
List Change Orders
Retrieves a list of change orders. | key: listChangeOrders
| Input | Notes | Example |
|---|---|---|
| Connection | The Duro PLM connection to use. | |
| First N Items | The number of items to return. | 10 |
| Order By | The field and direction to sort the change orders by. Results will be returned in the specified order. | [{"con": "asc"}] |
{
"data": {
"changeOrders": {
"connection": {
"edges": [
{
"node": {
"con": {
"id": "abcdef1234567890abcdef12",
"displayValue": "ECO-12345"
},
"id": "abcdef1234567890abcdef34",
"name": "PCB Revision for Rev B Release",
"type": "ECO",
"description": "Engineering change order to update PCB layout for Rev B manufacturing release.",
"documentLinks": [],
"status": "DRAFT",
"resolution": "NONE",
"erpOptions": null,
"created": "2024-06-24T22:31:27.808Z",
"creator": {
"email": "john.doe@example.com",
"id": "1234567890abcdef12345678",
"firstName": "John",
"lastName": "Doe"
},
"approvalType": "FIRST_IN",
"lastModified": "2024-06-24T22:31:27.808Z"
}
}
]
}
}
}
}
List Company Users
Retrieves account information for each user in the company library. | key: listCompanyUsers
| Input | Notes | Example |
|---|---|---|
| Connection | The Duro PLM connection to use. |
{
"data": {
"id": "abcdef1234567890abcdef12",
"name": "ExampleCorp",
"users": [
{
"email": "john.doe@example.com",
"id": "1234567890abcdef12345678",
"firstName": "John",
"lastName": "Doe",
"created": "2024-06-14T14:57:37.227Z",
"role": "ADMINISTRATOR",
"title": "CEO",
"lastLogin": "2024-06-24T16:11:02.889Z"
}
]
}
}
List Components
Retrieves a list of components. | key: listComponents
| Input | Notes | Example |
|---|---|---|
| Connection | The Duro PLM connection to use. | |
| First N Items | The number of items to return. | 10 |
| Library Type | The type of library to query. Company (GENERAL) contains shared production components, while Sandbox (PERSONAL) contains personal or test components. | GENERAL |
{
"data": [
{
"id": "666c5a8828e82100081595b0",
"name": "CONN HEADER 10POS DUAL .05\", Keying Shroud, SMD",
"mass": null,
"created": "2024-06-14T14:58:16.638Z",
"lastModified": "2024-06-14T14:58:18.069Z"
}
]
}
Raw Request
Make a generic request to the Duro API | key: rawRequest
| Input | Notes | Example |
|---|---|---|
| Connection | The Duro PLM connection to use. | |
| Query or Mutation | GraphQL query or mutation to execute against the Duro API. See the Duro GraphQL API documentation for available queries and mutations. | |
| Variables | GraphQL variables to pass to the query or mutation. Each variable should be a key-value pair. | {"userId": "12345", "status": "active"} |
| Variables Object | Alternative way to provide GraphQL variables as a JSON object. Use this instead of the Variables field for complex nested variables. |
{
"data": {
"componentsByIds": [
{
"id": "abcdef1234567890abcdef12",
"name": "High-Performance IC"
}
]
}
}
Changelog
2026-03-02
Added global debug logging across all actions for improved troubleshooting of API requests and responses
2025-12-08
Enhanced Duro API connection with expanded environment support:
- Added EU environment option for European data residency
- Added custom Duro environment field for private or testing environments
2024-06-27
Initial release of Duro PLM component with product lifecycle management capabilities