---
editLink: false
lastUpdated: false
---

[@salesforce/b2c-tooling-sdk](../../modules.md) / [cli](../index.md) / OdsCommand

# Abstract Class: OdsCommand\<T\>

Defined in: [packages/b2c-tooling-sdk/src/cli/ods-command.ts:35](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/e7c16f1ae423da0aa47b3e10be88f9770b53619b/packages/b2c-tooling-sdk/src/cli/ods-command.ts#L35)

Base command for ODS (On-Demand Sandbox) operations.
Use this for commands that interact with the Developer Sandbox API
(sandbox creation, deletion, start/stop, realm info, etc.)

Environment variables:
- SFCC_SANDBOX_API_HOST: ODS API hostname
- Plus all from OAuthCommand (SFCC_CLIENT_ID, SFCC_CLIENT_SECRET)

Provides:
- Host configuration flag with env var support
- Typed ODS API client via `this.odsClient`

## Example

```ts
export default class MySandboxCommand extends OdsCommand<typeof MySandboxCommand> {
  async run(): Promise<void> {
    const { data } = await this.odsClient.GET('/me', {});
    console.log('User:', data?.data?.user?.name);
  }
}
```

## Extends

- [`OAuthCommand`](OAuthCommand.md)\<`T`\>

## Type Parameters

### T

`T` *extends* *typeof* `Command`

## Constructors

### Constructor

> **new OdsCommand**\<`T`\>(`argv`, `config`): `OdsCommand`\<`T`\>

Defined in: [packages/b2c-tooling-sdk/src/cli/oauth-command.ts:38](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/e7c16f1ae423da0aa47b3e10be88f9770b53619b/packages/b2c-tooling-sdk/src/cli/oauth-command.ts#L38)

#### Parameters

##### argv

`string`[]

##### config

`Config`

#### Returns

`OdsCommand`\<`T`\>

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`constructor`](OAuthCommand.md#constructor)

## Properties

### argv

> **argv**: `string`[]

Defined in: node\_modules/@oclif/core/lib/command.d.ts:12

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`argv`](OAuthCommand.md#argv)

***

### config

> **config**: `Config`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:13

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`config`](OAuthCommand.md#config)

***

### id

> **id**: `string` \| `undefined`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:75

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`id`](OAuthCommand.md#id)

***

### parsed

> **parsed**: `boolean`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:76

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`parsed`](OAuthCommand.md#parsed)

***

### aliases

> `static` **aliases**: `string`[]

Defined in: node\_modules/@oclif/core/lib/command.d.ts:16

An array of aliases for this command.

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`aliases`](OAuthCommand.md#aliases)

***

### args

> `static` **args**: `ArgInput`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:18

An order-dependent object of arguments for the command

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`args`](OAuthCommand.md#args)

***

### baseFlags

> `static` **baseFlags**: `object`

Defined in: [packages/b2c-tooling-sdk/src/cli/ods-command.ts:40](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/e7c16f1ae423da0aa47b3e10be88f9770b53619b/packages/b2c-tooling-sdk/src/cli/ods-command.ts#L40)

#### account-manager-host

> **account-manager-host**: `OptionFlag`\<`string`, `CustomOptions`\>

#### auth-methods

> **auth-methods**: `OptionFlag`\<`string`[] \| `undefined`, `CustomOptions`\>

#### auth-scope

> **auth-scope**: `OptionFlag`\<`string`[] \| `undefined`, `CustomOptions`\>

#### client-id

> **client-id**: `OptionFlag`\<`string`, `CustomOptions`\>

#### client-secret

> **client-secret**: `OptionFlag`\<`string`, `CustomOptions`\>

#### config

> **config**: `OptionFlag`\<`string` \| `undefined`, `CustomOptions`\>

#### debug

> **debug**: `BooleanFlag`\<`boolean`\>

#### extra-body

> **extra-body**: `OptionFlag`\<`string` \| `undefined`, `CustomOptions`\>

#### extra-headers

> **extra-headers**: `OptionFlag`\<`string` \| `undefined`, `CustomOptions`\>

#### extra-query

> **extra-query**: `OptionFlag`\<`string` \| `undefined`, `CustomOptions`\>

#### instance

> **instance**: `OptionFlag`\<`string` \| `undefined`, `CustomOptions`\>

#### json

> **json**: `BooleanFlag`\<`boolean`\>

#### jsonl

> **jsonl**: `BooleanFlag`\<`boolean`\>

#### lang

> **lang**: `OptionFlag`\<`string` \| `undefined`, `CustomOptions`\>

#### log-level

> **log-level**: `OptionFlag`\<`"trace"` \| `"debug"` \| `"info"` \| `"warn"` \| `"error"` \| `"silent"` \| `undefined`, `CustomOptions`\>

#### project-directory

> **project-directory**: `OptionFlag`\<`string`, `CustomOptions`\>

#### sandbox-api-host

> **sandbox-api-host**: `OptionFlag`\<`string` \| `undefined`, `CustomOptions`\>

#### short-code

> **short-code**: `OptionFlag`\<`string` \| `undefined`, `CustomOptions`\>

#### tenant-id

> **tenant-id**: `OptionFlag`\<`string` \| `undefined`, `CustomOptions`\>

#### user-auth

> **user-auth**: `BooleanFlag`\<`boolean`\>

#### Overrides

[`OAuthCommand`](OAuthCommand.md).[`baseFlags`](OAuthCommand.md#baseflags)

***

### deprecateAliases?

> `static` `optional` **deprecateAliases**: `boolean`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:23

Emit deprecation warning when a command alias is used

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`deprecateAliases`](OAuthCommand.md#deprecatealiases)

***

### deprecationOptions?

> `static` `optional` **deprecationOptions**: `Deprecation`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:24

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`deprecationOptions`](OAuthCommand.md#deprecationoptions)

***

### description

> `static` **description**: `string` \| `undefined`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:30

A full description of how to use the command.

If no summary, the first line of the description will be used as the summary.

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`description`](OAuthCommand.md#description)

***

### enableJsonFlag

> `static` **enableJsonFlag**: `boolean`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:31

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`enableJsonFlag`](OAuthCommand.md#enablejsonflag)

***

### examples

> `static` **examples**: `Example`[]

Defined in: node\_modules/@oclif/core/lib/command.d.ts:46

An array of examples to show at the end of the command's help.

IF only a string is provided, it will try to look for a line that starts
with the cmd.bin as the example command and the rest as the description.
If found, the command will be formatted appropriately.

```
EXAMPLES:
  A description of a particular use case.

    $ <%= config.bin => command flags
```

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`examples`](OAuthCommand.md#examples)

***

### flags

> `static` **flags**: `FlagInput`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:48

A hash of flags for the command

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`flags`](OAuthCommand.md#flags)

***

### hasDynamicHelp

> `static` **hasDynamicHelp**: `boolean`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:49

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`hasDynamicHelp`](OAuthCommand.md#hasdynamichelp)

***

### help

> `static` **help**: `string` \| `undefined`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:50

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`help`](OAuthCommand.md#help)

***

### hidden

> `static` **hidden**: `boolean`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:52

Hide the command from help

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`hidden`](OAuthCommand.md#hidden)

***

### hiddenAliases

> `static` **hiddenAliases**: `string`[]

Defined in: node\_modules/@oclif/core/lib/command.d.ts:54

An array of aliases for this command that are hidden from help.

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`hiddenAliases`](OAuthCommand.md#hiddenaliases)

***

### id

> `static` **id**: `string`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:56

A command ID, used mostly in error or verbose reporting.

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`id`](OAuthCommand.md#id-1)

***

### plugin

> `static` **plugin**: `Plugin` \| `undefined`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:57

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`plugin`](OAuthCommand.md#plugin)

***

### pluginAlias?

> `readonly` `static` `optional` **pluginAlias**: `string`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:58

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`pluginAlias`](OAuthCommand.md#pluginalias)

***

### pluginName?

> `readonly` `static` `optional` **pluginName**: `string`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:59

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`pluginName`](OAuthCommand.md#pluginname)

***

### pluginType?

> `readonly` `static` `optional` **pluginType**: `string`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:60

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`pluginType`](OAuthCommand.md#plugintype)

***

### state?

> `static` `optional` **state**: `string`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:62

Mark the command as a given state (e.g. beta or deprecated) in help

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`state`](OAuthCommand.md#state)

***

### strict

> `static` **strict**: `boolean`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:64

When set to false, allows a variable amount of arguments

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`strict`](OAuthCommand.md#strict)

***

### summary?

> `static` `optional` **summary**: `string`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:69

The tweet-sized description for your class, used in a parent-commands
sub-command listing and as the header for the command help.

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`summary`](OAuthCommand.md#summary)

***

### usage

> `static` **usage**: `string` \| `string`[] \| `undefined`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:73

An override string (or strings) for the default usage documentation.

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`usage`](OAuthCommand.md#usage)

## Methods

### baseCommandTest()

> **baseCommandTest**(): `void`

Defined in: [packages/b2c-tooling-sdk/src/cli/base-command.ts:617](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/e7c16f1ae423da0aa47b3e10be88f9770b53619b/packages/b2c-tooling-sdk/src/cli/base-command.ts#L617)

#### Returns

`void`

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`baseCommandTest`](OAuthCommand.md#basecommandtest)

***

### error()

#### Call Signature

> **error**(`input`, `options`): `void`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:90

##### Parameters

###### input

`string` | `Error`

###### options

`object` & `PrettyPrintableError`

##### Returns

`void`

##### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`error`](OAuthCommand.md#error)

#### Call Signature

> **error**(`input`, `options?`): `never`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:94

##### Parameters

###### input

`string` | `Error`

###### options?

`object` & `PrettyPrintableError`

##### Returns

`never`

##### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`error`](OAuthCommand.md#error)

***

### exit()

> **exit**(`code?`): `never`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:98

#### Parameters

##### code?

`number`

#### Returns

`never`

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`exit`](OAuthCommand.md#exit)

***

### init()

> **init**(): `Promise`\<`void`\>

Defined in: [packages/b2c-tooling-sdk/src/cli/base-command.ts:149](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/e7c16f1ae423da0aa47b3e10be88f9770b53619b/packages/b2c-tooling-sdk/src/cli/base-command.ts#L149)

#### Returns

`Promise`\<`void`\>

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`init`](OAuthCommand.md#init)

***

### jsonEnabled()

> **jsonEnabled**(): `boolean`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:106

Determine if the command is being run with the --json flag in a command that supports it.

#### Returns

`boolean`

true if the command supports json and the --json flag is present

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`jsonEnabled`](OAuthCommand.md#jsonenabled)

***

### log()

> **log**(`message?`, ...`args?`): `void`

Defined in: [packages/b2c-tooling-sdk/src/cli/base-command.ts:315](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/e7c16f1ae423da0aa47b3e10be88f9770b53619b/packages/b2c-tooling-sdk/src/cli/base-command.ts#L315)

Override oclif's log() to use pino.

#### Parameters

##### message?

`string`

##### args?

...`unknown`[]

#### Returns

`void`

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`log`](OAuthCommand.md#log)

***

### logToStderr()

> **logToStderr**(`message?`, ...`args?`): `void`

Defined in: node\_modules/@oclif/core/lib/command.d.ts:109

#### Parameters

##### message?

`string`

##### args?

...`any`[]

#### Returns

`void`

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`logToStderr`](OAuthCommand.md#logtostderr)

***

### run()

> `abstract` **run**(): `Promise`\<`any`\>

Defined in: node\_modules/@oclif/core/lib/command.d.ts:114

actual command run code goes here

#### Returns

`Promise`\<`any`\>

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`run`](OAuthCommand.md#run)

***

### warn()

> **warn**(`input`): `string` \| `Error`

Defined in: [packages/b2c-tooling-sdk/src/cli/base-command.ts:324](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/e7c16f1ae423da0aa47b3e10be88f9770b53619b/packages/b2c-tooling-sdk/src/cli/base-command.ts#L324)

Override oclif's warn() to use pino.

#### Parameters

##### input

`string` | `Error`

#### Returns

`string` \| `Error`

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`warn`](OAuthCommand.md#warn)

***

### run()

> `static` **run**\<`T`\>(`this`, `argv?`, `opts?`): `Promise`\<`ReturnType`\<`T`\[`"run"`\]\>\>

Defined in: node\_modules/@oclif/core/lib/command.d.ts:86

instantiate and run the command

#### Type Parameters

##### T

`T` *extends* `Command`

#### Parameters

##### this

(`argv`, `config`) => `T`

the command class

##### argv?

`string`[]

argv

##### opts?

`LoadOptions`

options

#### Returns

`Promise`\<`ReturnType`\<`T`\[`"run"`\]\>\>

result

#### Inherited from

[`OAuthCommand`](OAuthCommand.md).[`run`](OAuthCommand.md#run-2)
