> For the complete documentation index, see [llms.txt](https://interfacing.gitbook.io/interfacing-help-files/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://interfacing.gitbook.io/interfacing-help-files/solutions-developers/api-and-information-repository/rest-apis/use-cases-and-examples/create-an-object.md).

# Create an Object

Use the following endpoints to programmatically create new objects in IMS. Common use cases include:

* Importing or migrating structured content such as folders, processes, or documentation
* One-way or two-way data synchronization with external systems (via APIs or scripts)
* Receiving and processing webhooks (e.g., from Jira, service tools, or ETL platforms)
* Programmatically generating IMS content (e.g., from code or templates)

***

## Quick Start

* **Base Endpoint URL**: <https://YOURIMS.interfacing.com/api/v1/items>
* **Authentication**: Obtain a valid token (see [Authentication & Token Management](/interfacing-help-files/solutions-developers/api-and-information-repository/rest-apis.md#authentication-and-token-management))
* **Swagger Documentation**: <https://YOURIMS.interfacing.com/api/v1/swagger/#/Common/createItem>

***

## Scenario & Code Examples

### Scenario 1: Create a Process with Tasks

In this example, we’ll walk through how to create a **Development Process** with three tasks:

1. Write Requirements
2. Code Application
3. Integration Tests

We’ll use two API endpoints:

* One to **create the process** (`POST /items` )
* Another to **add all task nodes** (`POST /process/nodes` )

#### Step 1: Create the Process

Use the `POST /items` endpoint to create a new **Process** node.

**Request**:

```json
10:42:51.655 request:
1 > POST http://myims.interfacing.com/api/v1/items?draft=true
1 > Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
1 > X-Cache-Control: private
1 > Content-Type: application/json; charset=UTF-8
1 > Content-Length: 128
1 > Host: myims.interfacing.com
1 > Connection: Keep-Alive
1 > User-Agent: Apache-HttpClient/4.5.13 (Java/11.0.15)
1 > Accept-Encoding: gzip,deflate
{
  "parent": {
    "nodeId": "0D6AF657-0C16-04E4-50BB-19E9A9D0FCBC"
  },
  "@type": "Process",
  "name": "Development Process",
  "nodeType": "PROCESS"
}
```

**Response**:

```json
10:42:51.745 response time in milliseconds: 89
1 < 200
1 < Server: nginx/1.21.6
1 < Date: Tue, 28 Jun 2022 14:42:51 GMT
1 < Content-Type: application/json
1 < X-Varnish: 590197
1 < Age: 0
1 < Via: 1.1 varnish (Varnish/7.1)
1 < Connection: keep-alive
1 < Transfer-Encoding: chunked
{
  "nodeSubTypeName": null,
  "userNodeSubType": null,
  "@type": "BaseElement",
  "nodeVersionId": "BF3A6E68-F79B-4CF8-9236-D7894044B657",
  "nodeType": "PROCESS",
  "creationDate": "2022-06-28T10:42:51.680-04:00",
  "nodeStatus": "IN_PROGRESS",
  "publishedNodeVersionId": null,
  "version": "0.0001",
  "nodeSubType": null,
  "modificationDate": "2022-06-28T10:42:51.680-04:00",
  "extensions": null,
  "deleted": false,
  "system": false,
  "referenceNumber": null,
  "name": "Development Process",
  "locked": false,
  "nodeId": "C9A2E210-BD57-4096-B107-EB79C9920500",
  "favorite": false
}
```

> Save the `nodeId` of the new process (`C9A2E210-...`). You’ll need it for the next step.

#### Step 2: Add Tasks to the Process

Now use the `POST /process/nodes` endpoint to add the task nodes to the newly created process.

**Request**:

```json
10:42:51.756 request:
2 > POST http://myims.interfacing.com/api/v1/process/nodes?process=C9A2E210-BD57-4096-B107-EB79C9920500&draft=true
2 > Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
2 > X-Cache-Control: private
2 > Content-Type: application/json; charset=UTF-8
2 > Content-Length: 937
2 > Host: myims.interfacing.com
2 > Connection: Keep-Alive
2 > User-Agent: Apache-HttpClient/4.5.13 (Java/11.0.15)
2 > Accept-Encoding: gzip,deflate
[
  {
    "sequenceNumber": 1,
    "topLeftY": 50,
    "topLeftX": 100,
    "@type": "TaskNode",
    "name": "Write Requirements",
    "width": 100,
    "edges": [
      {
        "sourceNodeId": "74e574e5-4777-425d-8588-576388fc94e2",
        "sourcePortPoint": {
          "x": 25,
          "y": 15
        },
        "targetNodeId": "a50b686e-d3a8-40db-be9e-fa216d040c26",
        "targetPortPoint": {
          "x": 75,
          "y": 20
        }
      }
    ],
    "editId": "74e574e5-4777-425d-8588-576388fc94e2",
    "nodeType": "TASK",
    "height": 50
  },
  {
    "sequenceNumber": 2,
    "topLeftY": 50,
    "topLeftX": 300,
    "@type": "TaskNode",
    "name": "Code Application",
    "width": 100,
    "edges": [
      {
        "sourceNodeId": "a50b686e-d3a8-40db-be9e-fa216d040c26",
        "sourcePortPoint": {
          "x": 125,
          "y": 15
        },
        "targetNodeId": "1486400e-30e7-4ce8-a944-78b382dcaee4",
        "targetPortPoint": {
          "x": 175,
          "y": 20
        }
      }
    ],
    "editId": "a50b686e-d3a8-40db-be9e-fa216d040c26",
    "nodeType": "TASK",
    "height": 50
  },
  {
    "sequenceNumber": 3,
    "topLeftY": 50,
    "topLeftX": 500,
    "@type": "TaskNode",
    "name": "Integration Tests",
    "width": 100,
    "editId": "1486400e-30e7-4ce8-a944-78b382dcaee4",
    "nodeType": "TASK",
    "height": 50
  }
]
```

**Response**:

```json
10:42:52.139 response time in milliseconds: 383
2 < 200
2 < Server: nginx/1.21.6
2 < Date: Tue, 28 Jun 2022 14:42:52 GMT
2 < Content-Type: application/json
2 < X-Varnish: 526213
2 < Age: 0
2 < Via: 1.1 varnish (Varnish/7.1)
2 < Connection: keep-alive
2 < Transfer-Encoding: chunked
[
  {
    "nodeSubTypeName": null,
    "userNodeSubType": null,
    "@type": "BaseElement",
    "nodeVersionId": "E6775E5C-08B5-4A1F-8717-9C1438E3929C",
    "editId": "74e574e5-4777-425d-8588-576388fc94e2",
    "nodeType": "TASK",
    "creationDate": "2022-06-28T10:42:51.847-04:00",
    "nodeStatus": "IN_PROGRESS",
    "publishedNodeVersionId": null,
    "version": "0.0002",
    "nodeSubType": null,
    "modificationDate": "2022-06-28T10:42:51.847-04:00",
    "extensions": null,
    "deleted": false,
    "system": false,
    "referenceNumber": null,
    "name": "Write Requirements",
    "locked": false,
    "nodeId": "5E8D7B08-74A4-43B4-B6F2-BD288448BEAE",
    "favorite": false
  },
  {
    "nodeSubTypeName": null,
    "userNodeSubType": null,
    "@type": "BaseElement",
    "nodeVersionId": "709D3C21-74CE-4BC0-BFCA-9102B923434D",
    "editId": "a50b686e-d3a8-40db-be9e-fa216d040c26",
    "nodeType": "TASK",
    "creationDate": "2022-06-28T10:42:51.897-04:00",
    "nodeStatus": "IN_PROGRESS",
    "publishedNodeVersionId": null,
    "version": "0.0002",
    "nodeSubType": null,
    "modificationDate": "2022-06-28T10:42:51.897-04:00",
    "extensions": null,
    "deleted": false,
    "system": false,
    "referenceNumber": null,
    "name": "Code Application",
    "locked": false,
    "nodeId": "9D58DB9B-611E-4A53-87C8-D0597DA8D7AB",
    "favorite": false
  },
  {
    "nodeSubTypeName": null,
    "userNodeSubType": null,
    "@type": "BaseElement",
    "nodeVersionId": "B1973029-DF12-49DA-8DF3-8FB53E8BC173",
    "editId": "1486400e-30e7-4ce8-a944-78b382dcaee4",
    "nodeType": "TASK",
    "creationDate": "2022-06-28T10:42:51.927-04:00",
    "nodeStatus": "IN_PROGRESS",
    "publishedNodeVersionId": null,
    "version": "0.0002",
    "nodeSubType": null,
    "modificationDate": "2022-06-28T10:42:51.927-04:00",
    "extensions": null,
    "deleted": false,
    "system": false,
    "referenceNumber": null,
    "name": "Integration Tests",
    "locked": false,
    "nodeId": "140222BF-3BC9-440B-9B4B-D21F0A1F826F",
    "favorite": false
  }
]
```

***

### Scenario 2: Create a <mark style="color:red;">Wiki</mark> Document

In this example, we'll use the `PUT /items` endpoint to create a <mark style="color:red;">**Wiki document**</mark> <mark style="color:red;"></mark><mark style="color:red;">(i.e., a URL-based reference document).</mark>

**Request**:

```json
{
  "@type": "Document",
  "nodeType": "DOCUMENT",
  "parent": {
    "nodeId": "98694AD2-F128-4352-88BE-90143BB75E69"
  },
  "url": "http://wiki.com",
  "name": "Reports",
  "referenceNumber": null,
  "documentType": "URL",
  "richTextDescription": "<html><body><p>Reports in Information Technology is the<strong>&nbsp;presentation of information in an organized and readable format as per the user&#39;s requirement</strong>&nbsp;is known as the report. Various complex reports can be generated that can help in taking decisions by the management. Report is the representation of data in printed form.</p>\n</body></html>"
}
```

**Response**:&#x20;

```json
{
    "@type": "BaseElement",
    "nodeId": "1EE6744F-A8B1-4B1E-BC3B-C7B0827D042A",
    "nodeType": "DOCUMENT",
    "name": "Reports",
    "nodeVersionId": "340EEC26-8CE0-4DA0-8269-C129FF52E3FC",
    "version": "0.0001",
    "creationDate": "2022-06-13T18:53:31.877Z",
    "modificationDate": "2022-06-13T18:53:31.877Z",
    "nodeSubType": null,
    "nodeSubTypeName": null,
    "userNodeSubType": null,
    "nodeStatus": "IN_PROGRESS",
    "deleted": false,
    "locked": false,
    "system": false,
    "referenceNumber": null,
    "favorite": false,
    "publishedNodeVersionId": null,
    "extensions": null
}
```

**CURL Example:**

```bash
curl --request POST --url 'http://myims.interfacing.com/api/v1/items?draft=true' --header 'Content-Type: application/json' -b /tmp/cookie.tmp \
--data '{
  "@type": "Document",
  "nodeType": "DOCUMENT",
  "parent": {
    "nodeId": "98694AD2-F128-4352-88BE-90143BB75E69"
  },
  "url": "http://wiki.com",
  "name": "Reports",
  "referenceNumber": null,
  "documentType": "URL",
  "richTextDescription": "<html><body><p>Reports in Information Technology is the<strong>&nbsp;presentation of information in an organized and readable format as per the user&#39;s requirement</strong>&nbsp;is known as the report. Various complex reports can be generated that can help in taking decisions by the management. Report is the representation of data in printed form.</p>\n</body></html>"
}'
```

***

### Scenario 3: Create a Document with a File Attachment

In this example, we'll use two API endpoints:

1. One to **upload the file**&#x20;
2. Another to **create a document referencing that file**&#x20;

#### Step 1: Upload the File

To upload a file, send a `POST` request with the file content in the request body. You must include a `resumableIdentifier`, which is a unique string used to associate the uploaded file with the IMS document.

While the system supports multi-chunk uploads, this example uses a **single-chunk upload**, which is suitable for most use cases. To do this, you also need to specify the file name using `resumableFilename` and `resumableRelativePath`.

For a single-chunk upload, set the following parameters to `1`:

* `resumableChunkSize`
* `resumableChunkNumber`
* `resumableTotalSize`

**Request:**

```json
15:35:04.960 request:
1 > POST http://myims.interfacing.com/bpc/upload/?resumableIdentifier=55762fcc-c28b-4579-8afb-4141ba07bdf3&resumableFilename=Authoring%20Tools%20Comparison%20(1).xlsx&resumableRelativePath=Authoring%20Tools%20Comparison%20(1).xlsx&resumableChunkSize=1&resumableChunkNumber=1&resumableTotalSize=1
1 > Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
1 > Content-Type: text/plain; charset=UTF-8
1 > Content-Length: 16
1 > Host: myims.interfacing.com
1 > Connection: Keep-Alive
1 > User-Agent: Apache-HttpClient/4.5.13 (Java/11.0.15)
1 > Accept-Encoding: gzip,deflate
```

**Response:**

```json
15:35:04.962 response time in milliseconds: 2
1 < 200
1 < Connection: keep-alive
1 < Content-Length: 0
1 < Date: Wed, 08 Jun 2022 19:35:04 GMT
```

#### Step 2: Create the IMS Document

When creating the EPC document, you must assign the previously used `resumableIdentifier` and `resumableFilename` to `fileInfo.uploadIdentifier` and `fileInfo.name`, respectively.

**Request**:

```json
15:35:04.967 request:
2 > POST http://myims.interfacing.com/api/v1/items?draft=true
2 > Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
2 > Content-Type: application/json; charset=UTF-8
2 > Content-Length: 230
2 > Host: myims.interfacing.com
2 > Connection: Keep-Alive
2 > User-Agent: Apache-HttpClient/4.5.13 (Java/11.0.15)
2 > Accept-Encoding: gzip,deflate
{
  "parent": {
    "nodeId": "7BC41685-BD57-44F2-8807-0143FDFC619C"
  },
  "documentType": "FILE",
  "@type": "Document",
  "name": "Authoring Tools",
  "fileInfo": {
    "uploadIdentifier": "55762fcc-c28b-4579-8afb-4141ba07bdf3",
    "name": "Authoring Tools Comparison (1).xlsx"
  },
  "nodeType": "DOCUMENT"
}
```

**Response:**

```json
15:35:05.007 response time in milliseconds: 39
2 < 200
2 < Server: nginx/1.21.6
2 < Date: Wed, 08 Jun 2022 19:35:05 GMT
2 < Content-Type: application/json
2 < Content-Length: 507
2 < X-Varnish: 721243
2 < Age: 0
2 < Via: 1.1 varnish (Varnish/7.1)
2 < Connection: keep-alive
{
  "nodeSubTypeName": null,
  "userNodeSubType": null,
  "@type": "BaseElement",
  "nodeVersionId": "D6B0A34B-5C2C-4E1C-9F00-41BCCE09AE74",
  "nodeType": "DOCUMENT",
  "creationDate": "2022-06-08T15:35:04.977-04:00",
  "nodeStatus": "IN_PROGRESS",
  "publishedNodeVersionId": null,
  "version": "0.0001",
  "nodeSubType": null,
  "modificationDate": "2022-06-08T15:35:04.977-04:00",
  "extensions": null,
  "deleted": false,
  "system": false,
  "referenceNumber": null,
  "name": "Authoring Tools",
  "locked": false,
  "nodeId": "172CAE08-D725-49CD-BC39-3008FB394DD6",
  "favorite": false
}
```

**CURL Example:**

```bash
curl --request POST --url 'http://myims.interfacing.com/bpc/upload/?resumableIdentifier=55762fcc-c28b-4579-8afb-4141ba07bdf3&resumableFilename=Authoring%20Tools%20Comparison%20(1).xlsx&resumableRelativePath=Authoring%20Tools%20Comparison%20(1).xlsx&resumableChunkSize=1&resumableChunkNumber=1&resumableTotalSize=1' --data @Authoring\ Tools\ Comparison\ \(1\).xlsx -b /tmp/cookie.tmp
```

```bash
curl --request POST --url 'https://myims.interfacing.com/api/v1/items?draft=true' --header 'Content-Type: application/json' -b /tmp/cookie.tmp \
--data '{
  "parent": {
    "nodeId": "7BC41685-BD57-44F2-8807-0143FDFC619C"
  },
  "documentType": "FILE",
  "@type": "Document",
  "name": "Authoring Tools",
  "fileInfo": {
    "uploadIdentifier": "55762fcc-c28b-4579-8afb-4141ba07bdf3",
    "name": "Authoring Tools Comparison (1).xlsx"
  },
  "nodeType": "DOCUMENT"
}'
```

{% hint style="info" %}
Any object available in IMS, such as Resources, Assets, Controls, Risks, Rules, and others, can be created through the API.
{% endhint %}

***

## What is this feature in IMS?

**IMS objects** are the individual items stored within the IMS web application. These include folders and various content types such as roles, terms, documents, rules, and more.&#x20;

All objects are organized in the <mark style="color:red;">**Library**</mark>, each under a specific **parent root** based on its type, such as the Glossary root for terms or the Organization root for roles.

***

## See Also

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td>Authentication &#x26; Token Management</td><td><a href="/interfacing-help-files/solutions-developers/api-and-information-repository/rest-apis.md#authentication-and-token-management">REST APIs</a></td><td><a href="https://1488562728-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTx7AmE0d2Q4ja20EYjF5%2Fuploads%2FLfvkwix26vW3CnepEMTv%2FIMS-V16-NAV-Home-Icons-5.png?alt=media&amp;token=4244c676-38ac-4218-8552-680a3ac1dcdc">IMS-V16-NAV-Home-Icons-5.png</a></td></tr><tr><td>API Reference (Swagger)</td><td><a href="/interfacing-help-files/solutions-developers/api-and-information-repository/rest-apis/api-reference-swagger.md">API Reference (Swagger)</a></td><td><a href="https://1488562728-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTx7AmE0d2Q4ja20EYjF5%2Fuploads%2FuIm0jP36LBJWUKIgHGxl%2FIMS-V16-NAV-Library-Icons-41.png?alt=media&amp;token=a91c1498-c99a-4013-b6bd-5877df0a71bb">IMS-V16-NAV-Library-Icons-41.png</a></td></tr><tr><td>How to Perform Other Use Cases</td><td><a href="/interfacing-help-files/solutions-developers/api-and-information-repository/rest-apis/use-cases-and-examples/how-to-perform-other-use-cases.md">How to Perform Other Use Cases</a></td><td><a href="https://1488562728-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTx7AmE0d2Q4ja20EYjF5%2Fuploads%2F5Aeu2y0v898h8TlT2GMk%2FIMS-V16-Intro-7.png?alt=media&amp;token=4c09eacd-abdd-44d1-b318-8d6dbb4a11b1">IMS-V16-Intro-7.png</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://interfacing.gitbook.io/interfacing-help-files/solutions-developers/api-and-information-repository/rest-apis/use-cases-and-examples/create-an-object.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
