@e2y/occ-client
Version:
OCC client for SAP Commerce Cloud
131 lines (99 loc) • 3.52 kB
Markdown
<!-- TOC -->
* [`occ-client` v3](#occ-client-v3)
* [Creation of the client](#creation-of-the-client)
* [Without client credentials](#without-client-credentials)
* [With client credentials](#with-client-credentials)
* [With password credentials](#with-password-credentials)
* [Using the client](#using-the-client)
* [Creating schema from OpenAPI3.0](#creating-schema-from-openapi30)
* [Using the OAuth2 Client](#using-the-oauth2-client)
<!-- TOC -->
# `occ-client` v3
This package acts as a client for the SAP Commerce OCC that expose the API docs as an OpenAPI3.0 specification.
## Creation of the client
### Without client credentials
In case you don't need access token to be able to operate with the API, you can create the client directly.
```typescript
import {OccClient} from '@e2y/occ-client';
import {paths} from '../../types/occ/schema';
const occClient = await new OccClient(
new URL('https://localhost:9002/occ/v2/')
).create<paths>();
```
### With client credentials
```typescript
import {OccClient} from '@e2y/occ-client';
import {paths} from '../../types/occ/schema';
const occClient = await new OccClient(
new URL('https://localhost:9002/occ/v2/'),
{
oauthTokenUrl: new URL(
'https://localhost:9002/authorizationserver/oauth/token'
),
clientId,
clientSecret
}
).create<paths>();
```
### With password credentials
Depending on the actions you want to make, you may need to use the password grant type. To do so, you can use the
`password` method.
```typescript
import {OccClient} from '@e2y/occ-client';
import {paths} from '../../types/occ/schema';
const occClient = await new OccClient(
new URL('https://localhost:9002/occ/v2/'),
{
oauthTokenUrl: new URL(
'https://localhost:9002/authorizationserver/oauth/token'
),
clientId,
clientSecret,
username,
password
}
).create<paths>();
```
## Using the client
First, you need to specify the paths of the resources you want to use (refer to [Creating schema from OpenAPI3.0](
#creating- schema-from-openapi30)). In case of the OCC-Client, you do this once you instantiate the client.
```typescript
import {OccClient} from '@e2y/occ-client';
// This are the paths you need to import
import {paths} from '../../types/occ/schema';
const occClient = await new OccClient(...).create<paths>()
```
Then, you create the endpoint you want to use.
```typescript
const getCurrencies = fetcher
.path('/{baseSiteId}/currencies')
.method('get')
.create();
```
Finally, you can use the endpoint to get the data you want.
```typescript
const currenciesResponse = await getCurrencies({baseSiteId: 'wololo'});
```
## Creating schema from OpenAPI3.0
You can create the schema of any API that meets the OpenAPI3.0 specification. To do so, you can use the `schema`
package.
```bash
npx openapi-typescript https://myapi.dev/api/v1/openapi.yaml -o ./path/to/my/schema.d.ts
```
You can find more information about this [here](https://openapi-ts.pages.dev/cli/).
## Using the OAuth2 Client
The `OccClient` uses the `OAuth2Client` class to handle the authentication. You can use it directly if you need to
perform actions that are not covered by the `OccClient`.
```typescript
import {OAuth2Client} from '@e2y/occ-client';
const oauth2Client = new OAuth2Client({
oauthTokenUrl: new URL(
'https://localhost:9002/authorizationserver/oauth/token'
),
clientId,
clientSecret,
username,
password
});
const {accessToken} = await oauth2Client.getToken();
```