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 you to manage 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
To 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
Select a component from a dropdown list | key: selectComponent | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Duro PLM connection to use. | |
| Debug Request | Enabling this flag will log out the current request. | false |
| First N Items | The number of items to return. Defaults to 5 if not specified. | 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
Create a Draft Change Order | key: createChangeOrder
| Input | Notes | Example |
|---|---|---|
| Connection | The Duro PLM connection to use. | |
| Debug Request | Enabling this flag will log out the current request. | false |
| 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. | |
| Debug Request | Enabling this flag will log out the current request. | false |
{
"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. | |
| Debug Request | Enabling this flag will log out the current request. | false |
{
"data": {
"userById": {
"lastName": "Smith",
"email": "john.smith@example.com",
"firstName": "John",
"id": "1234567890abcdef12345678",
"primaryCompany": {
"id": "abcdef1234567890abcdef12",
"name": "ExampleCorp"
}
}
}
}
List Change Orders
Get a list of change orders | key: listChangeOrders
| Input | Notes | Example |
|---|---|---|
| Connection | The Duro PLM connection to use. | |
| Debug Request | Enabling this flag will log out the current request. | false |
| First N Items | The number of items to return. Defaults to 5 if not specified. | 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": "Test Order",
"type": "ECO",
"description": "Test description for change order.",
"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
Get account information from each user in your company library | key: listCompanyUsers
| Input | Notes | Example |
|---|---|---|
| Connection | The Duro PLM connection to use. | |
| Debug Request | Enabling this flag will log out the current request. | false |
{
"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
Get a list of components | key: listComponents
| Input | Notes | Example |
|---|---|---|
| Connection | The Duro PLM connection to use. | |
| Debug Request | Enabling this flag will log out the current request. | false |
| First N Items | The number of items to return. Defaults to 5 if not specified. | 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. | |
| Debug Request | Enabling this flag will log out the current request. | false |
| 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": {
"result": {
"id": "abcdef1234567890abcdef12",
"name": "Example Result"
}
}
}
Changelog
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