> 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/program-api.md).

# Program API

The **Program API** provides secure endpoints for creating, retrieving, updating, and managing programs, certificates, and enrollments within the Marketplace Platform.

With this API, you can also perform additional operations, including:

* Publish and unpublish programs.
* Update program settings.
* Manage program groups and parameters.
* Create and manage program documents, media, and terms & conditions.
* Create and manage program templates.
* Submit and retrieve enrollment requests.
* Validate enrollments in the draft and querying states.
* Manage attachments associated with enrollments.
* Process or fail enrollment requests.
* Retrieve an enrollment's template.

## Before you start

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

* [Authentication](/developer-resources/rest-api.md)
* [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 Program API is built around the following core resources:

* **Certificate** – Issued to a client or partner as confirmation that they meet a specific program's requirements.
* **Enrollment** – Process through which a client formally registers or signs up to participate in a vendor program.
* **Program** – Represents a set of requirements (parameters) that vendors ask their clients to meet.

## Browse collections

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.

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

* [Certificate](#certificate)
* [Enrollment](#enrollment)
* [Program](#program)
* [Program Parameter](#program-parameter)
* [Program Parameter Group](#program-parameter-group)
* [Program Document](#program-document)
* [Program Media](#program-media)
* [Program Terms](#program-terms)
* [Program Terms Variant](#program-terms-variant)
* [Program Template](#program-template)

### Certificate

<details>

<summary>View Certificate operations</summary>

<table><thead><tr><th width="222">Operation</th><th width="113">Method</th><th>Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/XUYzF3r51H8P3tgQ82Fi">Create certificate</a></td><td>POST</td><td>Migrates a certificate.</td><td>ops</td></tr><tr><td><a href="/pages/OOnG1aauCUCgV78K1LOK">List certificates</a></td><td>GET</td><td>Returns a list of all certificates.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/9eKElKQvP1a43bfOdWj0">Get certificate by id</a></td><td>GET</td><td>Returns a certificate with the given id.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/BIS7Znpmeks7JWlmj5XE">Update certificate</a></td><td>PUT</td><td>Updates an existing certificate.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/Kjp6tPd2AjAIMx1kDCOB">Terminate certificate</a></td><td>POST</td><td>Terminates an active certificate.</td><td>vendor</td></tr><tr><td>Expire certificate</td><td>POST</td><td>Expires an active certificate.</td><td>vendor</td></tr><tr><td>Get certificate template</td><td>GET</td><td>Gets a template for a certificate.</td><td>vendor, client, ops</td></tr></tbody></table>

</details>

### Enrollment

<details>

<summary>View Enrollment operations</summary>

<table><thead><tr><th width="227">Operation</th><th width="133">Method</th><th width="235">Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/oiWMPuFDiS3ZKFKsJXfW">Create enrollment</a></td><td>POST</td><td>Creates a new enrollment and certificate.</td><td>client</td></tr><tr><td><a href="/pages/BTBYCH6Rs6ofVnRRPsJ1">Validate draft enrollment</a></td><td>POST</td><td>Validates draft enrollment data.</td><td>client</td></tr><tr><td><a href="/pages/X0r0K5a4A4cZPeUHzRTb">Validate enrollment</a></td><td>POST</td><td>Validates enrollment state.</td><td>vendor, client</td></tr><tr><td><a href="/pages/ZdBT2NmPygr3TNluecM0">Process enrollment</a></td><td>POST</td><td>Changes enrollment status to processing.</td><td>vendor, client</td></tr><tr><td><a href="/pages/eSACHJbB1mIrkclanMIS">Query enrollment</a></td><td>POST</td><td>Changes enrollment status to querying.</td><td>vendor</td></tr><tr><td><a href="/pages/kYICbiWYGayHLQVk5p1U">Complete enrollment</a></td><td>POST</td><td>Changes enrollment status to complete.</td><td>vendor</td></tr><tr><td><a href="/pages/5iFJfks6gYFlvW0CboJC">Fail enrollment</a></td><td>POST</td><td>Changes enrollment status to failed.</td><td>vendor</td></tr><tr><td>Assign enrollment</td><td>POST</td><td>Assigns a user to an enrollment.</td><td>vendor</td></tr><tr><td><a href="/pages/Vi3WY30NIwLV4WROwj8j">List enrollments</a></td><td>GET</td><td>Lists enrollments visible to the user.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/Wg5XOza1Mgmha3gJkCNH">Get enrollment by id</a></td><td>GET</td><td>Gets an enrollment by id.</td><td>vendor, client, ops</td></tr><tr><td>Update enrollment</td><td>PUT</td><td>Updates some properties of an enrollment.</td><td>vendor, client, ops</td></tr><tr><td>Delete enrollment</td><td>DELETE</td><td>Deletes an enrollment.</td><td>client</td></tr><tr><td><a href="/pages/VyYEhY7uTGe9OvLpI6B4">Render enrollment template</a></td><td>GET</td><td>Renders the template for the given enrollment id.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/iCP8LZVAg7qmkY6vtj33">List enrollment attachments</a></td><td>GET</td><td>Gets a list of enrollment attachments.</td><td>ops, client</td></tr><tr><td><a href="/pages/acJJOnovIMDtwc4xcJEc">Get enrollment attachment by id</a></td><td>GET</td><td>Gets an enrollment attachment by id.</td><td>ops, client</td></tr><tr><td><a href="/pages/QmiLO7XoSmVS3A19pitW">Create enrollment attachment</a></td><td>POST</td><td>Creates a new enrollment attachment.</td><td>ops, client</td></tr><tr><td><a href="/pages/bA30YO2mfhypeSVxiXrz">Update enrollment attachment</a></td><td>PUT</td><td>Updates an existing enrollment attachment.</td><td>ops, client</td></tr><tr><td><a href="/pages/YkpLC8cuXoFPGfkFhT5S">Delete enrollment attachment</a></td><td>DELETE</td><td>Deletes an existing enrollment attachment.</td><td>ops, client</td></tr></tbody></table>

</details>

### Program

<details>

<summary>View Program operations</summary>

<table><thead><tr><th width="226">Operation</th><th width="124">Method</th><th width="203">Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/YF3zDwHHMvfTYSuToZFm">Create program</a></td><td>POST</td><td>Creates a new program.</td><td>vendor</td></tr><tr><td><a href="/pages/vjWvKUYfyuAgmORDnt0j">List programs</a></td><td>GET</td><td>Fetches a list of programs.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/WwfTW8zQ4OHaWesYTssu">Get program by id</a></td><td>GET</td><td>Gets a program by id.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/XuSEAbrQ9eyMGLdULpAR">Update program</a></td><td>PUT</td><td>Updates some properties of a program.</td><td>vendor</td></tr><tr><td><a href="/pages/6naxfZxZpWpvyVIvxtky">Delete program</a></td><td>DELETE</td><td>Deletes a program.</td><td>vendor</td></tr><tr><td><a href="/pages/urigJvvz9uJXpLegN7LP">Publish program</a></td><td>POST</td><td>Publishes a program.</td><td>vendor</td></tr><tr><td><a href="/pages/bJBBkp9OpYy0NQMeurZ2">Unpublish program</a></td><td>POST</td><td>Unpublishes a program.</td><td>vendor</td></tr><tr><td><a href="/pages/77YWSD1Pdlg6lyaaG9Fe">Update program settings</a></td><td>PUT</td><td>Updates a program’s settings.</td><td>vendor</td></tr></tbody></table>

</details>

### Program Parameter

<details>

<summary>View Program Parameter operations</summary>

<table><thead><tr><th width="211">Operation</th><th width="119">Method</th><th>Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/Xse1tvFD0XHCOzUbTCMs">Create parameter</a></td><td>POST</td><td>Creates a program parameter.</td><td>vendor</td></tr><tr><td><a href="/pages/JjPY2q6dvvsEofvgcOH0">List parameters</a></td><td>GET</td><td>Gets a list of parameters for a program.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/EgfcODxq3u3zP4fidZ7P">Get parameter by id</a></td><td>GET</td><td>Gets a program parameter definition.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/jteWuecUmNlqUA3XVV8Y">Update parameter</a></td><td>PUT</td><td>Updates a program parameter definition.</td><td>vendor</td></tr><tr><td><a href="/pages/UZi5yvom2dLJYwiffoJd">Delete parameter</a></td><td>DELETE</td><td>Deletes a program parameter definition.</td><td>vendor</td></tr></tbody></table>

</details>

### Program Parameter Group

<details>

<summary>View Program Parameter Group operations</summary>

<table><thead><tr><th width="230">Operation</th><th width="102">Method</th><th width="227">Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/4fIYvx8iMBNtuENYXo7H">Create parameter group</a></td><td>POST</td><td>Creates a new parameter group for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/3sZ6C7pw3L2vOJQWykCn">List parameter groups</a></td><td>GET</td><td>Lists all parameter groups for a program based on filter criteria.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/mB0PNmOqpLF6BzpI4Mbx">Get parameter group by id</a></td><td>GET</td><td>Gets a parameter group by id for a program.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/GrhI43PHH3EP3vMDxyBV">Update parameter group</a></td><td>PUT</td><td>Updates a parameter group for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/AxKveu0TEjlQGHu8necy">Delete parameter group</a></td><td>DELETE</td><td>Deletes a parameter group from a program.</td><td>vendor</td></tr></tbody></table>

</details>

### Program Document

<details>

<summary>View Program Document operations</summary>

<table><thead><tr><th width="211">Operation</th><th width="125">Method</th><th>Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/QDrt6UhKPZNrm77vKnTO">Create document</a></td><td>POST</td><td>Creates a new document.</td><td>vendor</td></tr><tr><td><a href="/pages/mhO50fQLDqEZBvG1lL04">List documents</a></td><td>GET</td><td>Lists all documents based on filter criteria.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/hcX57EusD4pX3LOqEQTk">Get document by id</a></td><td>GET</td><td>Gets a document by id.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/rCweiDPL8dwoz83LUC9Y">Update document</a></td><td>PUT</td><td>Updates a document.</td><td>vendor</td></tr><tr><td><a href="/pages/R6k6eBZxiQub4Oqp5c2y">Delete document</a></td><td>DELETE</td><td>Removes a document.</td><td>vendor</td></tr><tr><td><a href="/pages/gZGxlcyH2VwhquDaJQMq">Publish document</a></td><td>POST</td><td>Publishes a document.</td><td>vendor</td></tr><tr><td><a href="/pages/2zNl3e7CKOTbU0dpPUTj">Unpublish document</a></td><td>POST</td><td>Unpublishes a document.</td><td>vendor</td></tr></tbody></table>

</details>

### Program Media

<details>

<summary>View Program Media operations</summary>

<table><thead><tr><th width="224">Operation</th><th width="122">Method</th><th>Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/fmWTQf1PaPbxUFonKhLH">Create program media</a></td><td>POST</td><td>Creates new media for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/rowwO6k0ftewzsESJNnz">List program media</a></td><td>GET</td><td>Gets a list of media for a program.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/9gVdRn2btI13Vka0nOOe">Get program media by id</a></td><td>GET</td><td>Gets an item of media for a program.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/YnVW0OmDLVFO5CCVjPpB">Update program media</a></td><td>PUT</td><td>Updates an item of media for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/Mho9F79z3POloLbgjpg2">Publish program media</a></td><td>POST</td><td>Publishes an item of media for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/6jX6CJ7bBnYcoOo9TOKk">Unpublish program media</a></td><td>POST</td><td>Unpublishes an item of media for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/DMUl0gFpO2ssLEJcaZ5D">Delete program media</a></td><td>DELETE</td><td>Deletes an item of media for a program.</td><td>vendor</td></tr></tbody></table>

</details>

### Program Terms

<details>

<summary>View Program Terms operations</summary>

<table><thead><tr><th width="192">Operation</th><th width="143">Method</th><th>Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/z0nqHNScskAX6pBWnSCt">Create terms</a></td><td>POST</td><td>Creates terms for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/DBQpY9wIuzDigDjpQcR0">List terms</a></td><td>GET</td><td>Gets a list of all terms for a program.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/yZyq6U2guWdjMPES0nin">Get terms by id</a></td><td>GET</td><td>Gets terms for a program by id.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/Yn5ssIHlcWWcbgGr5svm">Update terms</a></td><td>PUT</td><td>Updates terms for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/lzgYj5uVlmH87QlOkkZ3">Delete terms</a></td><td>DELETE</td><td>Deletes terms for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/LB8FHGqrcIjNJChDjaB2">Publish terms</a></td><td>POST</td><td>Publishes terms for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/eCyncl7ZAJkbXwonLrqa">Unpublish terms</a></td><td>POST</td><td>Unpublishes terms for a program.</td><td>vendor</td></tr></tbody></table>

</details>

### Program Terms Variant

<details>

<summary>View Program Terms Variant operations</summary>

<table><thead><tr><th width="191">Operation</th><th width="137">Method</th><th>Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/VErhMleh4kFbhylpwrI3">Create variant</a></td><td>POST</td><td>Creates a variant for terms.</td><td>vendor</td></tr><tr><td><a href="/pages/PhvTnjc6PjFtiUerhJVh">List variants</a></td><td>GET</td><td>Gets a list of all variants for terms.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/kXnyYc9duiLNSI2hE2Eu">Get variant by id</a></td><td>GET</td><td>Gets a variant for terms by id.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/MLsTBav681v3un430lSO">Update variant</a></td><td>PUT</td><td>Updates a variant for terms for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/77Zz7G6rW0hF5Wct1P82">Delete variant</a></td><td>DELETE</td><td>Deletes a variant for terms.</td><td>vendor</td></tr><tr><td><a href="/pages/LVPUHAQ4eVBfb2BmPW15">Publish variant</a></td><td>POST</td><td>Publishes a variant for terms.</td><td>vendor</td></tr><tr><td><a href="/pages/Yix1beEFKHi3OcTxiGAi">Unpublish variant</a></td><td>POST</td><td>Unpublishes a variant for terms.</td><td>vendor</td></tr></tbody></table>

</details>

### Program Template

<details>

<summary>View Program Template operations</summary>

<table><thead><tr><th width="185">Operation</th><th width="143">Method</th><th>Description</th><th>Access</th></tr></thead><tbody><tr><td><a href="/pages/4Hlv3bQNlrz11A29AKH9">Create program template</a></td><td>POST</td><td>Creates a template for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/oLByUorTLBBP9396Vrkl">List program templates</a></td><td>GET</td><td>Gets a list of templates for a program.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/3hHIkmHzMtHm1rMArqxD">Get program template by id</a></td><td>GET</td><td>Gets a template for a program.</td><td>vendor, client, ops</td></tr><tr><td><a href="/pages/gM2XWxnP85dpv35HYhxH">Update program template</a></td><td>PUT</td><td>Updates a template for a program.</td><td>vendor</td></tr><tr><td><a href="/pages/faSCA6DkvSA9wSMjegW0">Delete program template</a></td><td>DELETE</td><td>Deletes a template for a program.</td><td>vendor</td></tr></tbody></table>

</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:

```
GET https://docs.platform.softwareone.com/developer-resources/rest-api/program-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
