---
title: "Duro PLM Unit Test"
slug: "duro-plm-unit-test"
updated: 2023-09-27T17:13:11Z
published: 2023-09-27T17:13:11Z
canonical: "support.tulip.co/duro-plm-unit-test"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://support.tulip.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Duro PLM Unit Test

*This article explains how to integrate your Duro PLM to Tulip.*

## Purpose

The purpose of the Duro PLM Unit Test is to allow users to verify whether their connection between Tulip and the Duro PLM platform is correct and functioning as intended.

The API connector enables users to view Product definitions, Revisions, Bill of Materials (BOM) details, pictures, documents, and specifications in Tulip.

A Starter App was also defined to make use of the Connector Functions and Graph QL APIs.

## Getting Started with Duro

Duro’s cloud-native PLM platform empowers hardware engineering teams to manage sourcing, BOMs, change orders, and revisions all in one place. The platform's intuitive interface and predefined agile workflows allow everyone involved in hardware development to make informed, timely decisions. Additionally, integrations with best-of-breed hardware partners, like Tulip, make it easy to centralize or share data in minutes without costly integrations.

## Setup

### Generate a Duro API key:

1. Log into Duro PLM
2. Generate a key by following Duro’s Starter Guide
3. Save the new API Key

### Configure Tulip Connector

1. In the **Connectors** page, find the Connector. ![Connectors.jpg](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Connectors.jpg)
2. In the connector, click **production & testing & development** to view connection settings. ![Duro Connector.jpg](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Duro%20Connector.jpg)
3. Set the connection setting as follows: Running On: Cloud Connector Host Host: mfg.duro.app Port: 443 TLS: Yes ![Details.png](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Details.png)
4. Click **Edit Headers** and set your "apiToken” header using the value retrieved from Duro’s settings. ![Details2.png](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Details2.png)
5. Go back and click **Test**, then **Save** the details. ![Passed.jpg](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Passed.jpg)

## How it works

Once you have configured the Connector as shown in the [Setup paragraph](/r230/docs/duro-plm-unit-test#setup), you can test the Connector Functions in the app by clicking **Test Graph QL API** in the Unit Testing step. The list of products defined in your Duro account will show up like the following: ![Unit Testing.jpg](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Unit%20Testing.jpg)

In the App Editor, you can see how the Trigger for the button is configured to call the Connector function: ![Trigger.jpg](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Trigger.jpg)

The result of the Connector Function call is stored in a Variable which is then displayed in a Tulip interactive table: ![Table View.jpg](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Table%20View.jpg)

### Connector Function

The Duro Connector makes use of Graph QL queries, it comes with predefined functions and can be extended to support any API offered by Duro (see Graph QL documentation [here](https://mfg-core-api.duro.app/docs/)).

          GraphQL to JSON

          

Tulip does not support Graph QL and requires to transform Grahp QL into JSON queries, use the following website to transform the queries: [GraphQL to JSON body converter](https://datafetcher.com/graphql-json-body-converter)

Current Connector comes with the following API Calls:

| Function Name | Description |
| --- | --- |
| Get All Components | Retreive a list of all Components |
| Get All Product Definitions | Retrieve a list of all Product Definitions |
| Get All Revisions | Retreive a list of all Product Revisions |
| Get Component Children - By Component ID | Retrieve a list of all components children of a component by Component ID |
| Get Component Definition - By Component ID | Retrieve a Component details by Component ID |
| Get Component Documents - By Component ID | Retrieve a list of Component documents by Component ID |
| Get Component Documents - By Component Name | Retrieve a list of Component documents by Component name |
| Get Product Children - By Product ID | Retrieve a list of product children for a Product by Product ID |
| Get Product Definition - By Product ID | Retrieve a Product Definition details by ID |
| Get Product Documents - By Product ID | Retrieve a list of product documents by Product ID |
| Get Product Revisions - By Product Name | Retrieve a list of Product Revisions by Product Name |
| Get Revision - By Revision ID | Get Product Revision details by Revision ID |
| Get Revision Children - By Revision ID | Get list of Revision children by Revision ID |
| Get Revision Documents - By Revision ID | Get list of Revision documents by Revision ID |

## Further Reading

- [Duro PLM Starter App](https://support.tulip.co/preview/r230/en/4aea6e02-8ce7-4839-85a1-87a418d1808b/1)
- [What are connectors?](https://support.tulip.co/docs/what-are-connectors)
- [HTTP Connectors (in university)](https://university.tulip.co/http-connectors)

**Connector Function**

**Connector Functions** are individual operations to interact with an HTTP or SQL Datasources. Connector Functions can have inputs and outputs, and can be called from: Triggers, Functions, Automations, and AI Agents.

Once pulled, data can be used throughout your applications.

**Connectors**

**Connectors** enable real-time connectivity between your Tulip solution and a transactional system (e.g. an ERP). The output of a Connector Function can be used in Tulip Apps, Automations, and Functions.

- **HTTP Connectors** utilize HTTP API endpoints.
- **SQL Connectors** can enable connectivity with certain SQL databases.
- **MQTT Connectors** can connect to MQTT brokers for machine monitoring.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/connector.gif)

**App Editor**

The web interface used for building applications. Where you design a user interface, add logic, and connect your applications to **Tables**. ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screen%20Shot%202022-09-13%20at%207.50.23%20AM.png)

**Trigger**

**Triggers** are groups of logic that are tied to an app event, such as step open, timer, widget interaction, etc. App builders can add triggers to **widgets**, **machines**, **devices**, **apps**, and **steps**.

**Triggers** can contain **actions**, **transitions**, and **conditions**.

**Variable**

**Variables**are a location to store app information. Variables have a specific type that must match the contents they can store.

Variables are only accessible within a single application and are cleared when the app is restarted or completed.

**JSON**

**JSON (JavaScript Object Notation)** is a light-weight, text-based data format that is used to store and transfer data.

**API Call**

An **API call** is a message sent to a server asking an API to provide a service or information.
