> For the complete documentation index, see [llms.txt](https://docs.violet.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.violet.io/ecom-platforms/oracle-commerce-cloud.md).

# Oracle Commerce Cloud

Overview of Violet's Oracle Commerce Cloud integration for channel developers

Oracle Commerce Cloud (OCC) is an enterprise ecommerce platform. Violet integrates using an application key registered in the OCC admin, which is exchanged for a short-lived access token via the OCC admin API.

## Connection

Merchants provide two credentials:

| Field               | Description                                                          |
| ------------------- | -------------------------------------------------------------------- |
| **Store URL**       | OCC instance hostname (e.g. `mystore.oracle.com`)                    |
| **Application Key** | JWT generated when the integration is registered in the OCC admin UI |

The application key is created in the OCC admin under the integrations or third-party applications section. Violet authenticates server-to-server via `/ccadmin/v1/login` using the application key as a bearer token with a `grant_type=client_credentials` body.

> **Note**: Username/password authentication (`/ccadmin/v1/mfalogin`) is reserved for internal admin users and is not used by Violet.

### Scope Validation

OCC permissions are determined by the application's assigned role at registration time, not per-call requested scopes. Violet validates credentials by performing a test authentication during connection — a successful token exchange confirms the key is valid and active.

## Webhooks

OCC ships a fixed catalog of webhook slots. Violet registers the following slots automatically after a merchant connects:

| Slot ID           | Event                |
| ----------------- | -------------------- |
| `order-submit`    | New order placed     |
| `order-update`    | Order status changed |
| `shipment-create` | Shipment created     |
| `shipment-update` | Shipment updated     |

Registration is performed via `PUT /ccadmin/v1/webhooks/{slotId}`. Failures on individual slots are logged but do not abort overall registration.

## Notable Behavior

* **Application key**: The application key is a JWT, not a username/password pair. It is generated once in the OCC admin when an integration is registered and does not expire on its own (expiry is determined by the application's configuration in OCC).
* **Token refresh**: Violet does not use OAuth refresh tokens for this platform. Each request exchanges the application key for a short-lived access token as needed.
* **Shipping methods**: Violet verifies that shipping methods are configured on the store during connection by querying the OCC shipping methods endpoint.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.violet.io/ecom-platforms/oracle-commerce-cloud.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
