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

# Windchill

> Connect Alumio to Windchill.

## Extra information

System documentation: Windchill API Reference (`https://<windchill-server>/Windchill/netmarkets/html/wrs/jsdoc/index.html`)

## Connector package documentation

### Table of Contents

* **1.** Setting up HTTP Client Windchill
  * **1.1** Steps
* **2.** Subscribing to entities from Windchill
  * **2.1** Steps
  * **2.2** General concept
* **3.** Publishing entity to Windchill
  * **3.1** Steps
  * **3.2** General concept

### 1. Setting up HTTP Client Windchill

**1.1 Steps**

1. In the Alumio Dashboard, go to Clients -> HTTP Clients. Create a new HTTP Client.
2. Select Windchill HTTP Client as Platform and click Next Step
3. Fill in the Base URI, Username, and Password.
4. You can optionally enable logging of requests to get the log of the authentication.
5. Click next step, fill in the name of the HTTP Client, and finally, you can save the HTTP Client for use.

<img src="https://mintcdn.com/alumio/HrSEhUofsj3bT3jH/images/connectors/windchill-01.png?fit=max&auto=format&n=HrSEhUofsj3bT3jH&q=85&s=cc1664a884e780cd64bfd24d6f88602e" alt="Windchill connector screenshot 1" width="690" height="288" data-path="images/connectors/windchill-01.png" />

### 2. Subscribing to Entities from Windchill

**2.1 Steps**

1. Go to Connections -> Incoming and create a new incoming configuration and select "Windchill Subscriber" as the subscriber.
2. Select the entity you want to subscribe to from Windchill.
3. Add any request parameters needed to subscribe to the entity.
4. Select the Windchill HTTP Client to use.
5. You can optionally add a transformer to transform the request parameters into something you will request from Windchill.
6. You can also optionally enable pagination to allow Alumio to fetch paginated entities.

**2.2 General Concept**
We follow the Windchill documentation on building this connector, so you can easily use the connector based on [Windchill API Reference](https://docs.wics.nl/#introduction).

**Entity**
The entity you want to subscribe to Windchill. Please refer to the entities from Windchill API Reference (`https://<windchill-server>/Windchill/netmarkets/html/wrs/jsdoc/index.html`) page.

**Request Parameters**
You can provide these parameters to get the needed entity based on the Windchill API Reference (`https://<windchill-server>/Windchill/netmarkets/html/wrs/jsdoc/index.html`).

Please look at the example below on how to fill the path field when we want to retrieve a list of tasks by subscribing "DataAdmin Get Folder" entity.

<img src="https://mintcdn.com/alumio/HrSEhUofsj3bT3jH/images/connectors/windchill-02.png?fit=max&auto=format&n=HrSEhUofsj3bT3jH&q=85&s=81ee994992abf940b58d6d04c672eb90" alt="Windchill connector screenshot 2" width="551" height="500" data-path="images/connectors/windchill-02.png" />

<img src="https://mintcdn.com/alumio/HrSEhUofsj3bT3jH/images/connectors/windchill-03.png?fit=max&auto=format&n=HrSEhUofsj3bT3jH&q=85&s=dad68c15fbcd8477e46413621a27ba73" alt="Windchill connector screenshot 3" width="690" height="231" data-path="images/connectors/windchill-03.png" />

From the end point, we can see that we need to set the ContainerId as a parameter. That is why we set the "ContainerId" inside the path key in the Request Parameters.

Alumio will then make a request to Windchill with the URL ` /servlet/odata/v7/DataAdmin/Containers('123')/Folders.`

* Path is the path parameter of the URL. For example the \{id}.
* Query is a defined set of parameters attached to the end of a URL.\
  Example: `www.url.com?type=true&start=0`

**HTTP Client**
The HTTP Client configuration you will use to access Windchill.

**3.1 Steps**

1. Go to Connections -> Outgoing, create a new outgoing configuration and select "Windchill Publisher" as the publisher.
2. Select the Method you want the publisher to use with the data.
3. Select the Windchill entity you want the data to be published to.
4. You can optionally add any query data to the request on the key query.
5. You can optionally add any payload data to the request on the key payload.
6. Select the HTTP Client to use.

**3.2 General Concept**
Like the subscriber, the publisher has similar methods for using it. The difference is the payload that will be submitted by the publisher originating from the data (from routes, from transformers in outgoing configuration), though you can also add or modify the payload using the Request Transformer.

**Method**
Currently, we support the HTTP Post, Put, and Delete method on submitting data to Windchill.

**Entity**
We support publishing to all Windchill endpoints.
Please refer to Windchill API Reference

For example, we want to create a folder. Please select “Post” as the Method and "DataAdmin - Create Folder".

<img src="https://mintcdn.com/alumio/HrSEhUofsj3bT3jH/images/connectors/windchill-04.png?fit=max&auto=format&n=HrSEhUofsj3bT3jH&q=85&s=9ccb98ae2d1cd6f257a1e784985cd943" alt="Windchill connector screenshot 4" width="690" height="303" data-path="images/connectors/windchill-04.png" />

<img src="https://mintcdn.com/alumio/HrSEhUofsj3bT3jH/images/connectors/windchill-05.png?fit=max&auto=format&n=HrSEhUofsj3bT3jH&q=85&s=46f333bf56065632dfd6deed995d449c" alt="Windchill connector screenshot 5" width="670" height="500" data-path="images/connectors/windchill-05.png" />

From the documentation, we can see that we need to set a path parameter and a body parameter. That is why we set the "ContainerId" inside the path key and body parameters inside the payload key in the data.

<img src="https://mintcdn.com/alumio/HrSEhUofsj3bT3jH/images/connectors/windchill-06.png?fit=max&auto=format&n=HrSEhUofsj3bT3jH&q=85&s=c97f52c6dc57f219e0b3a40f2fb42788" alt="Windchill connector screenshot 6" width="612" height="500" data-path="images/connectors/windchill-06.png" />

Alumio will send an API request to Windchill with URL `/servlet/odata/v7/DataAdmin/Containers('OR:wt.inf.container.OrgContainer:123')/Folders`

* Path is the path parameter of the URL. For example the \{ContainerId}.
* Query is a defined set of parameters attached to the end of a URL.\
  Example: `www.url.com?type=true&start=0`
* Payload is the data contained within a request.

**HTTP Client**
The HTTP Client configuration you will use to access Windchill.
