> For the complete documentation index, see [llms.txt](https://docs.platform.softwareone.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.platform.softwareone.com/developer-resources/rest-api/extensions-api.md).

# Extensions API

The **Extensions API** is a REST API used by the Marketplace Platform to manage extensions and everything around them. It lets you:

* Create, read, update, delete, review, publish and unpublish extensions.
* Create and maintain categories, then link extensions to them.
* Manage the documentation for the extension, including publish/unpublish documentation.
* Upload and manage images and videos.
* Manage terms and conditions and their variants.
* Track installations.

## Before you start

Review the shared API docs before you work with audit resources.

* [Authentication](/developer-resources/rest-api.md#authentication)
* [URL structure](/developer-resources/api-usage-and-reference/url-structure.md)
* [Error handling](/developer-resources/api-usage-and-reference/errors-handling.md)

## Core resources

The Extensions API is built around the following core resources:

* **Category** – Enables the operator to add, view, or delete the `category` object.
* **Document** – Allows uploading supplementary documentation to an extension, either via a file upload or an online link.
* **Extension** – Represents a set of requirements (parameters) that vendors ask their clients to meet.&#x20;
* **Media** – Allows vendors to add, view, and delete `media` associated with an extension.
* **Terms** – Represents a collection of documents associated with an extension, including uploaded PDF or DOCX files or links to externally hosted documents.
* **Variant** – Represents a specific version of terms for an extension, provided as an uploaded PDF or DOCX file or a link to an externally hosted document.
* **Instance** – Represents a running instance in the database, such as a Kubernetes pod, with its current status, for example, running.
* **Installation** – Allows an operator to add, view, and delete installations.
* **Invitation** – Allows a vendor to create and send an `invitation`.

## Browse collections <a href="#browse-collections" id="browse-collections"></a>

The API is organized into collections, each containing a set of operations. Access to these operations varies by role, depending on whether you are a `client`, `vendor`, or `operations` user.&#x20;

Use the following links to jump to the collection you need:

* [Extension](#extension)
* [Categories](#categories)
* [Documents](#document)
* [Media](#media)
* [Installation](#installation)
* [Instance](#instance)
* [Terms](#terms)
* [Variants](#variants)

### Extension

<details>

<summary>View Extension operations</summary>

<table><thead><tr><th width="216">Operation</th><th width="115">Method</th><th width="221">Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/luHKZRtjEbJt7dum5DxQ">Create extension</a></td><td>POST</td><td>Creates a new extension.</td><td>vendor</td></tr><tr><td><a href="/pages/ioAWlJRnftEczeBzyRpw">List extensions</a></td><td>GET</td><td>Fetches a list of extensions.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/YQu4pUYk5AVDefcURAnb">Get extension by id</a></td><td>GET</td><td>Gets an extension by id.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/3AaZ0YltuK1tvIpBbRHy">Update extension</a></td><td>PUT</td><td>Updates some properties of an extension.</td><td>vendor, ops</td></tr><tr><td><a href="/pages/wBOG18q3xwT2WT1bkuNd">Delete extension</a></td><td>DELETE</td><td>Deletes an extension.</td><td>vendor, ops</td></tr><tr><td><a href="/pages/9AOS5IOeUJfg8rjHrKSV">Publish extension</a></td><td>POST</td><td>Publishes an extension.</td><td>ops</td></tr><tr><td><a href="/pages/RN2Ewhsf0GAYP3ym3h8q">Unpublish extension</a></td><td>POST</td><td>Unpublishes an extension.</td><td>vendor, ops</td></tr></tbody></table>

</details>

### Categories

<details>

<summary>View Categories operations</summary>

<table><thead><tr><th width="214">Operation</th><th width="122">Method</th><th width="226">Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/Qt26W8aH12slsj8UxtdS">Create category</a></td><td>POST</td><td>Creates a new category.</td><td>ops</td></tr><tr><td><a href="/pages/gTNB0jMKzuX6ehLZ4PU4">Get categories</a></td><td>GET</td><td>Fetches a list of categories.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/3AinuVieEvWOlrbSx19K">Get category by id</a></td><td>GET</td><td>Gets a category by id.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/cPwO0J1TJoI0ixIa5atl">Update category</a></td><td>PUT</td><td>Updates some properties of a category.</td><td>ops</td></tr><tr><td><a href="/pages/9IHUUb5DTPhueOzm5DmP">Activate category</a></td><td>POST</td><td>Activates a category.</td><td>ops</td></tr><tr><td><a href="/pages/dpyqqaOUgCbWAeAw9tbM">Deactivate category</a></td><td>POST</td><td>Deactivates a category.</td><td>ops</td></tr></tbody></table>

</details>

### Documents

<details>

<summary>View Documents operations</summary>

| Operation                                                                                         | Method | Description                                     | Access              |
| ------------------------------------------------------------------------------------------------- | ------ | ----------------------------------------------- | ------------------- |
| [Create document](/developer-resources/rest-api/catalog-api/documentation/create-document.md)     | POST   | Creates a new document in extension management. | vendor              |
| [List documents](/developer-resources/rest-api/catalog-api/documentation/list-documents.md)       | GET    | Lists all documents based on filter criteria.   | vendor, client, ops |
| [Get document by id](/developer-resources/rest-api/extensions-api/document/get-document.md)       | GET    | Gets a document by id.                          | vendor, client, ops |
| [Update document](/developer-resources/rest-api/extensions-api/document/update-document.md)       | PUT    | Updates a document.                             | vendor              |
| [Delete document](/developer-resources/rest-api/extensions-api/document/delete-document.md)       | DELETE | Deletes a document.                             | vendor              |
| [Publish document](/developer-resources/rest-api/extensions-api/document/publish-document.md)     | POST   | Publishes a document.                           | vendor              |
| [Unpublish document](/developer-resources/rest-api/extensions-api/document/unpublish-document.md) | POST   | Unpublishes a document.                         | vendor              |

</details>

### Media

<details>

<summary>View Media operations</summary>

<table><thead><tr><th width="197">Operation</th><th width="135">Method</th><th width="262">Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/IXgzRuvalJZu623yxm6a">Create media</a></td><td>POST</td><td>Creates new media for an extension.</td><td>vendor</td></tr><tr><td><a href="/pages/0V84x9EprG4BrDZ2zTEC">List media</a></td><td>GET</td><td>Gets a list of media for an extension.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/bhDyvLSKNIFnhoIVeK6b">Get media by id</a></td><td>GET</td><td>Gets an item of media for an extension.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/qKySFj3oN9KE3LDfkefu">Update media</a></td><td>PUT</td><td>Updates an item of media for an extension.</td><td>vendor</td></tr><tr><td><a href="/pages/ZbbDbuOvnQNsyELDXoKp">Publish media</a></td><td>POST</td><td>Publishes an item of media for an extension.</td><td>vendor</td></tr><tr><td><a href="/pages/ktD0TkAW24DUQR6Dyf43">Unpublish media</a></td><td>POST</td><td>Unpublishes an item of media for an extension.</td><td>vendor</td></tr><tr><td><a href="/pages/WqcEz2rQCq2k3lvOh5oS">Delete media</a></td><td>DELETE</td><td>Deletes an item of media for an extension.</td><td>vendor</td></tr></tbody></table>

</details>

### Installation

<details>

<summary>View Installation operations</summary>

<table><thead><tr><th width="223">Operation</th><th width="124">Method</th><th width="209">Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/b11Bpkm99wjhU5RgrM2W">Create installation or invitation</a></td><td>POST</td><td>Creates a new installation or invitation.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/ZzXJfpyTp5q6wmt6yVSw">Update installation</a></td><td>PUT</td><td>Updates the configuration of an installation.</td><td>vendor-owner</td></tr><tr><td><a href="/pages/FShlzSYQBHeYmRMCU1QS">List installations</a></td><td>GET</td><td>Gets a list of installations.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/vyoQxLqqOBYU1GXzpiT9">Get installation by id</a></td><td>GET</td><td>Gets an installation by id.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/swLyVwzI9wuIPnFJ22lp">Delete installation</a></td><td>DELETE</td><td>Deletes an installation.</td><td>vendor, ops</td></tr><tr><td><a href="/pages/FShlzSYQBHeYmRMCU1QS">List installations for extension</a></td><td>GET</td><td>Gets a list of installations for an extension.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/vyoQxLqqOBYU1GXzpiT9">Get installation for extension by id</a></td><td>GET</td><td>Gets an installation for an extension by id.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/uUu5eiCSO4qyj3uscp6e">Redeem invitation</a></td><td>POST</td><td>Creates a redeemed invitation.</td><td>client, vendor, ops</td></tr></tbody></table>

</details>

### Instance

<details>

<summary>View Instance operations</summary>

| Operation                                                                                                       | Method | Description                                | Access       |
| --------------------------------------------------------------------------------------------------------------- | ------ | ------------------------------------------ | ------------ |
| [Create extension instance](/developer-resources/rest-api/extensions-api/instance/create-extension-instance.md) | POST   | Creates an instance for an extension.      | vendor-owner |
| [List extension instances](/developer-resources/rest-api/extensions-api/instance/list-extension-instance.md)    | GET    | Gets a list of instances for an extension. | vendor, ops  |
| [Get extension instance by id](/developer-resources/rest-api/extensions-api/instance/get-extension-instance.md) | GET    | Gets an instance for an extension by id.   | vendor, ops  |

</details>

### Terms

<details>

<summary>View Terms operations</summary>

| Operation                                                                                | Method | Description                                | Access              |
| ---------------------------------------------------------------------------------------- | ------ | ------------------------------------------ | ------------------- |
| [Create terms](/developer-resources/rest-api/extensions-api/terms/create-terms.md)       | POST   | Creates terms for an extension.            | vendor              |
| [List terms](/developer-resources/rest-api/extensions-api/terms/list-terms.md)           | GET    | Gets a list of all terms for an extension. | vendor, client, ops |
| [Get terms by id](/developer-resources/rest-api/extensions-api/terms/get-terms.md)       | GET    | Gets terms for an extension by id.         | vendor, client, ops |
| [Update terms](/developer-resources/rest-api/extensions-api/terms/update-terms.md)       | PUT    | Updates terms for an extension.            | vendor              |
| [Delete terms](/developer-resources/rest-api/extensions-api/terms/delete-terms.md)       | DELETE | Deletes terms for an extension.            | vendor              |
| Mark terms for review                                                                    | POST   | Marks terms for an extension for review.   | vendor              |
| [Publish terms](/developer-resources/rest-api/extensions-api/terms/publish-terms.md)     | POST   | Publishes terms for an extension.          | vendor              |
| [Unpublish terms](/developer-resources/rest-api/extensions-api/terms/unpublish-terms.md) | POST   | Unpublishes terms for an extension.        | vendor              |

</details>

### Variants

<details>

<summary>View Variants operations</summary>

| Operation                                                                                      | Method | Description                                   | Access              |
| ---------------------------------------------------------------------------------------------- | ------ | --------------------------------------------- | ------------------- |
| [Create variant](/developer-resources/rest-api/extensions-api/variant/create-variant.md)       | POST   | Creates a variant for terms.                  | vendor              |
| [List variants](/developer-resources/rest-api/extensions-api/variant/list-variants.md)         | GET    | Gets a list of all variants for terms.        | vendor, client, ops |
| [Get variant by id](/developer-resources/rest-api/extensions-api/variant/get-variant.md)       | GET    | Gets a variant for terms by id.               | vendor, client, ops |
| [Update variant](/developer-resources/rest-api/extensions-api/variant/update-variant.md)       | PUT    | Updates a variant for terms for an extension. | vendor              |
| [Delete variant](/developer-resources/rest-api/extensions-api/variant/delete-variant.md)       | DELETE | Deletes a variant for terms.                  | vendor              |
| Mark variant for review                                                                        | POST   | Marks a variant for terms for review.         | vendor              |
| [Publish variant](/developer-resources/rest-api/extensions-api/variant/publish-variant.md)     | POST   | Publishes a variant for terms.                | vendor              |
| [Unpublish variant](/developer-resources/rest-api/extensions-api/variant/unpublish-variant.md) | POST   | Unpublishes a variant for terms.              | vendor              |

</details>


---

# 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://docs.platform.softwareone.com/developer-resources/rest-api/extensions-api.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.
