# sdk/src/widgets/worker

## Classes

### PortalFunctionError

A stable, serializable failure reported by a Portal function call.

#### Extends

- `Error`

#### Constructors

##### Constructor

> **new PortalFunctionError**(`code`, `message`): [`PortalFunctionError`](#portalfunctionerror)

Creates an error with a stable code and developer-facing message.

###### Parameters

###### code

[`PortalFunctionErrorCode`](#portalfunctionerrorcode-1)

Machine-readable failure classification.

###### message

`string`

Developer-facing explanation safe to cross the worker boundary.

###### Returns

[`PortalFunctionError`](#portalfunctionerror)

###### Example

```ts
throw new PortalFunctionError("INVALID_ARGUMENT", "An id is required.");
```

###### Overrides

`Error.constructor`

#### Properties

##### cause?

> `optional` **cause?**: `unknown`

###### Inherited from

`Error.cause`

##### code

> `readonly` **code**: [`PortalFunctionErrorCode`](#portalfunctionerrorcode-1)

Machine-readable failure classification.

##### message

> **message**: `string`

###### Inherited from

`Error.message`

##### name

> **name**: `string`

###### Inherited from

`Error.name`

##### stack?

> `optional` **stack?**: `string`

###### Inherited from

`Error.stack`

##### stackTraceLimit

> `static` **stackTraceLimit**: `number`

The `Error.stackTraceLimit` property specifies the number of stack frames
collected by a stack trace (whether generated by `new Error().stack` or
`Error.captureStackTrace(obj)`).

The default value is `10` but may be set to any valid JavaScript number. Changes
will affect any stack trace captured _after_ the value has been changed.

If set to a non-number value, or set to a negative number, stack traces will
not capture any frames.

###### Inherited from

`Error.stackTraceLimit`

#### Methods

##### captureStackTrace()

> `static` **captureStackTrace**(`targetObject`, `constructorOpt?`): `void`

Creates a `.stack` property on `targetObject`, which when accessed returns
a string representing the location in the code at which
`Error.captureStackTrace()` was called.

```js
const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack; // Similar to `new Error().stack`
```

The first line of the trace will be prefixed with
`${myObject.name}: ${myObject.message}`.

The optional `constructorOpt` argument accepts a function. If given, all frames
above `constructorOpt`, including `constructorOpt`, will be omitted from the
generated stack trace.

The `constructorOpt` argument is useful for hiding implementation
details of error generation from the user. For instance:

```js
function a() {
  b();
}

function b() {
  c();
}

function c() {
  // Create an error without stack trace to avoid calculating the stack trace twice.
  const { stackTraceLimit } = Error;
  Error.stackTraceLimit = 0;
  const error = new Error();
  Error.stackTraceLimit = stackTraceLimit;

  // Capture the stack trace above function b
  Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
  throw error;
}

a();
```

###### Parameters

###### targetObject

`object`

###### constructorOpt?

`Function`

###### Returns

`void`

###### Inherited from

`Error.captureStackTrace`

##### prepareStackTrace()

> `static` **prepareStackTrace**(`err`, `stackTraces`): `any`

###### Parameters

###### err

`Error`

###### stackTraces

`CallSite`[]

###### Returns

`any`

###### See

https://v8.dev/docs/stack-trace-api#customizing-stack-traces

###### Inherited from

`Error.prepareStackTrace`

## Interfaces

### DeclarativeCapabilityUse

A capability declaration that does not expose individual Portal functions.

#### Properties

##### \[DECLARATIVE_CAPABILITY_USE\]

> `readonly` **\[DECLARATIVE_CAPABILITY_USE\]**: `true`

Internal marker used to validate `uses` entries.

##### name

> `readonly` **name**: `string`

Stable capability name.

##### version

> `readonly` **version**: `string`

Required capability contract version.

---

### DefineWidgetOptions

Authoring options accepted by [defineWidget](#definewidget).

#### Extended by

- [`SourceWidget`](#sourcewidget)

#### Type Parameters

##### Name

`Name` _extends_ `string` = `string`

##### Props

`Props` = [`WidgetSourceDefaultProps`](#widgetsourcedefaultprops)

#### Properties

##### category?

> `readonly` `optional` **category?**: `string`

Builder palette category.

##### component

> `readonly` **component**: `ComponentType`\<`Props` & `object`\>

React component rendered by the Remote DOM worker.

##### container?

> `readonly` `optional` **container?**: `"inline"` \| `"block"` \| `"card"` \| `"fullscreen"`

Host layout treatment for the widget.

##### defaultProps?

> `readonly` `optional` **defaultProps?**: `Partial`\<`Props`\>

JSON-serializable props assigned to new widget instances.

##### description?

> `readonly` `optional` **description?**: `string`

Builder palette description of the widget's purpose.

##### displayName?

> `readonly` `optional` **displayName?**: `string`

Human-readable builder palette name.

##### icon?

> `readonly` `optional` **icon?**: `string`

Icon identifier displayed in the builder palette.

##### minSdkVersion?

> `readonly` `optional` **minSdkVersion?**: `string`

Oldest portal SDK version that can host the widget.

##### name

> `readonly` **name**: `Name`

Stable URL-safe widget name used in the canonical widget type.

##### propertySchema?

> `readonly` `optional` **propertySchema?**: [`WidgetSourcePropertySchema`](#widgetsourcepropertyschema)

JSON-serializable property editor schema.

##### resizable?

> `readonly` `optional` **resizable?**: [`WidgetSourceResizable`](#widgetsourceresizable)

Builder resize behavior and optional minimum dimensions.

##### uses?

> `readonly` `optional` **uses?**: readonly ([`DeclarativeCapabilityUse`](#declarativecapabilityuse) \| `AnyPortalFunction`)[]

Typed portal functions and declarative capabilities used by the widget.

---

### FluidSpacerWidgetProps

Props for the worker-safe Portal spacer element.

#### Properties

##### customHeight?

> `readonly` `optional` **customHeight?**: `string`

Explicit spacer height accepted by the Portal element.

##### previewMode?

> `readonly` `optional` **previewMode?**: `boolean`

Whether the spacer is rendered in builder preview mode.

---

### PortalFunctionDefinition

Serializable identity of one versioned host capability method.

#### Properties

##### capability

> `readonly` **capability**: `string`

Capability family declared by a widget.

##### method

> `readonly` **method**: `string`

Method name within the capability.

##### version

> `readonly` **version**: `string`

Capability contract version.

---

### PortalFunctionImplementation

Bound Portal function definition and host handler.

#### Properties

##### definition

> `readonly` **definition**: [`PortalFunctionDefinition`](#portalfunctiondefinition)

Capability identity implemented by the handler.

##### handler

> `readonly` **handler**: (...`args`) => `unknown`

Host handler invoked for the function.

###### Parameters

###### args

...`never`[]

###### Returns

`unknown`

##### portalFunction

> `readonly` **portalFunction**: `AnyPortalFunction`

Worker callable associated with the implementation.

---

### RemoteDomWidgetWorkerController

#### Methods

##### dispose()

> **dispose**(): `void`

###### Returns

`void`

---

### RuntimeSourceWidget

Generated runtime widget definition accepted by [startWidgetPackage](#startwidgetpackage).

#### Properties

##### capabilities?

> `readonly` `optional` **capabilities?**: readonly [`WidgetSourceCapabilityDeclaration`](#widgetsourcecapabilitydeclaration)[]

Capability declarations enforced for generated runtime widgets.

##### component

> `readonly` **component**: `ComponentType`\<`Record`\<`string`, `unknown`\>\>

React component rendered for this runtime widget type.

##### name?

> `readonly` `optional` **name?**: `string`

Source name retained by generated company worker entries.

##### type

> `readonly` **type**: `string`

Fully qualified widget type registered with the worker runtime.

---

### SearchSortProps

Props for the worker-safe Portal search and sort control.

#### Extends

- `FluidSearchSortElementProperties`

#### Properties

##### onSearchChange

> `readonly` **onSearchChange**: (`value`) => `void`

Called when the search value changes.

###### Parameters

###### value

`string`

###### Returns

`void`

##### onSortChange?

> `readonly` `optional` **onSortChange?**: (`value`) => `void`

Called when the selected sort value changes.

###### Parameters

###### value

`string`

###### Returns

`void`

##### placeholder?

> `readonly` `optional` **placeholder?**: `string`

Search-input placeholder.

###### Inherited from

`FluidSearchSortElementProperties.placeholder`

##### searchValue

> `readonly` **searchValue**: `string`

Current search text displayed by the control.

###### Inherited from

`FluidSearchSortElementProperties.searchValue`

##### sortOptions?

> `readonly` `optional` **sortOptions?**: readonly `FluidSearchSortOption`[]

Sort choices displayed by the control.

###### Inherited from

`FluidSearchSortElementProperties.sortOptions`

##### sortValue?

> `readonly` `optional` **sortValue?**: `string`

Value of the selected sort choice.

###### Inherited from

`FluidSearchSortElementProperties.sortValue`

---

### SourceWidget

Normalized source widget returned by [defineWidget](#definewidget).

#### Extends

- [`DefineWidgetOptions`](#definewidgetoptions)\<`Name`, `Props`\>

#### Type Parameters

##### Name

`Name` _extends_ `string` = `string`

##### Props

`Props` = [`WidgetSourceDefaultProps`](#widgetsourcedefaultprops)

#### Properties

##### \_\_fluidSourceWidget

> `readonly` **\_\_fluidSourceWidget**: `true`

Internal marker that distinguishes normalized source widgets.

##### capabilities

> `readonly` **capabilities**: readonly [`WidgetSourceCapabilityDeclaration`](#widgetsourcecapabilitydeclaration)[]

Capability declarations derived from [uses](#uses-1).

##### category?

> `readonly` `optional` **category?**: `string`

Builder palette category.

###### Inherited from

[`DefineWidgetOptions`](#definewidgetoptions).[`category`](#category)

##### component

> `readonly` **component**: `ComponentType`\<`Props` & `object`\>

React component rendered by the Remote DOM worker.

###### Inherited from

[`DefineWidgetOptions`](#definewidgetoptions).[`component`](#component)

##### container?

> `readonly` `optional` **container?**: `"inline"` \| `"block"` \| `"card"` \| `"fullscreen"`

Host layout treatment for the widget.

###### Inherited from

[`DefineWidgetOptions`](#definewidgetoptions).[`container`](#container)

##### defaultProps

> `readonly` **defaultProps**: `Partial`\<`Props`\>

Normalized defaults; an omitted author value becomes an empty object.

###### Overrides

[`DefineWidgetOptions`](#definewidgetoptions).[`defaultProps`](#defaultprops)

##### description?

> `readonly` `optional` **description?**: `string`

Builder palette description of the widget's purpose.

###### Inherited from

[`DefineWidgetOptions`](#definewidgetoptions).[`description`](#description)

##### displayName?

> `readonly` `optional` **displayName?**: `string`

Human-readable builder palette name.

###### Inherited from

[`DefineWidgetOptions`](#definewidgetoptions).[`displayName`](#displayname)

##### icon?

> `readonly` `optional` **icon?**: `string`

Icon identifier displayed in the builder palette.

###### Inherited from

[`DefineWidgetOptions`](#definewidgetoptions).[`icon`](#icon)

##### minSdkVersion?

> `readonly` `optional` **minSdkVersion?**: `string`

Oldest portal SDK version that can host the widget.

###### Inherited from

[`DefineWidgetOptions`](#definewidgetoptions).[`minSdkVersion`](#minsdkversion)

##### name

> `readonly` **name**: `Name`

Stable URL-safe widget name used in the canonical widget type.

###### Inherited from

[`DefineWidgetOptions`](#definewidgetoptions).[`name`](#name-3)

##### propertySchema?

> `readonly` `optional` **propertySchema?**: [`WidgetSourcePropertySchema`](#widgetsourcepropertyschema)

JSON-serializable property editor schema.

###### Inherited from

[`DefineWidgetOptions`](#definewidgetoptions).[`propertySchema`](#propertyschema)

##### resizable?

> `readonly` `optional` **resizable?**: [`WidgetSourceResizable`](#widgetsourceresizable)

Builder resize behavior and optional minimum dimensions.

###### Inherited from

[`DefineWidgetOptions`](#definewidgetoptions).[`resizable`](#resizable)

##### uses

> `readonly` **uses**: readonly ([`DeclarativeCapabilityUse`](#declarativecapabilityuse) \| `AnyPortalFunction`)[]

Normalized typed functions and declarative capability markers.

###### Overrides

[`DefineWidgetOptions`](#definewidgetoptions).[`uses`](#uses)

---

### SourceWidgetPackage

Canonical source package returned by [defineWidgetPackage](#definewidgetpackage).

#### Type Parameters

##### Scope

`Scope` _extends_ `string` = `string`

##### StableId

`StableId` _extends_ `string` = `string`

#### Properties

##### \_\_fluidSourceWidgetPackage

> `readonly` **\_\_fluidSourceWidgetPackage**: `true`

Internal marker that distinguishes normalized source packages.

##### cssUrls

> `readonly` **cssUrls**: readonly `string`[]

Runtime stylesheet URLs included in the published descriptor.

##### manifestVersion

> `readonly` **manifestVersion**: `1`

Widget package descriptor format version.

##### packageId

> `readonly` **packageId**: `` `${Scope}.${StableId}` ``

Canonical `${scope}.${packageStableId}` package id.

##### packageStableId

> `readonly` **packageStableId**: `StableId`

Stable company or droplet owner identifier.

##### packageType

> `readonly` **packageType**: `"company"` \| `"droplet"`

Ownership model used for validation, consent, and publication.

##### scope

> `readonly` **scope**: `Scope`

Namespace used as the first segment of the package id.

##### version

> `readonly` **version**: `string`

Normalized SemVer package version.

##### widgets

> `readonly` **widgets**: readonly [`AnySourceWidget`](#anysourcewidget)[]

Widgets included in the package.

---

### StartWidgetPackageOptions

Generated-worker options accepted by [startWidgetPackage](#startwidgetpackage).

#### Properties

##### widgets

> `readonly` **widgets**: readonly [`RuntimeSourceWidget`](#runtimesourcewidget)[]

Generated runtime widgets to register when no source package is available.

---

### WidgetSourceCapabilityDeclaration

Versioned host capability required by a widget.

#### Properties

##### name

> `readonly` **name**: `string`

Stable capability name enforced by the worker and host.

##### version

> `readonly` **version**: `string`

Capability contract version required by the widget.

---

### WidgetSourcePropertySchema

JSON-serializable property editor schema accepted by widget source metadata.
The build adds `widgetType`; authors must not supply it.

#### Properties

##### dataSourceTargetProps?

> `readonly` `optional` **dataSourceTargetProps?**: readonly `string`[]

Widget props that data sources can populate.

##### fields

> `readonly` **fields**: readonly (\{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `maxLength?`: `number`; `placeholder?`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `tokenSuggestions?`: readonly `object`[]; `type`: `"text"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `maxLength?`: `number`; `placeholder?`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `rows?`: `number`; `tab?`: `string`; `type`: `"textarea"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `max?`: `number`; `min?`: `number`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `step?`: `number`; `tab?`: `string`; `type`: `"number"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"boolean"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `string` \| `number`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `options`: `object`[]; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"select"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"color"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `max`: `number`; `min`: `number`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `step?`: `number`; `tab?`: `string`; `type`: `"range"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `targetProps?`: readonly `object`[]; `type`: `"dataSource"`; \} \| \{ `advanced?`: `boolean`; `allowedTypes?`: `string`[]; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"resource"`; \} \| \{ `accept?`: `"image"` \| `"video"` \| `"any"`; `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"image"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `AlignOptions`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `options`: \{ `horizontalEnabled`: `boolean`; `verticalEnabled`: `boolean`; \}; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"alignment"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `max`: `number`; `min`: `number`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `step?`: `number`; `tab?`: `string`; `type`: `"slider"`; `unit?`: `string`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `swatches?`: `string`[]; `tab?`: `string`; `type`: `"colorPicker"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `subtitle?`: `string`; `tab?`: `string`; `type`: `"sectionHeader"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"separator"`; \} \| `Omit`\<\{ `advanced?`: `boolean`; `defaultValue?`: `string` \| `number`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `options`: readonly `object`[]; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"buttonGroup"`; \}, `"options"`\> & `object` \| \{ `advanced?`: `boolean`; `defaultValue?`: `ColorOptions`; `description?`: `string`; `excludeColors?`: `ColorOptions`[]; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"colorSelect"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `"single-column"` \| `"2c-equal"` \| `"2c-left-wider"` \| `"2c-right-wider"` \| `"2c-left-narrow"` \| `"2c-right-narrow"` \| `"3c-equal"` \| `"3c-middle-wider"`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"sectionLayoutSelect"`; \} \| \{ `advanced?`: `boolean`; `allowedTypes?`: `string`[]; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"background"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `string`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"contentPosition"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `FontSizeOptions`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"textSizeSelect"`; \} \| \{ `advanced?`: `boolean`; `allowedUnits?`: [`CssUnit`](../../../core/src/registries/property-schema-types.md#cssunit)[]; `defaultUnit?`: [`CssUnit`](../../../core/src/registries/property-schema-types.md#cssunit); `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `maxByUnit?`: `Partial`\<`Record`\<[`CssUnit`](../../../core/src/registries/property-schema-types.md#cssunit), `number`\>\>; `minByUnit?`: `Partial`\<`Record`\<[`CssUnit`](../../../core/src/registries/property-schema-types.md#cssunit), `number`\>\>; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `stepByUnit?`: `Partial`\<`Record`\<[`CssUnit`](../../../core/src/registries/property-schema-types.md#cssunit), `number`\>\>; `tab?`: `string`; `type`: `"cssUnit"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `placeholder?`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"fontPicker"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `string`[]; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `placeholder?`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"stringArray"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: readonly `object`[]; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"quoteList"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `BorderRadiusOptions`; `description?`: `string`; `group?`: `string`; `key`: `string`; `keys`: \{ `bottomLeft`: `string`; `bottomRight`: `string`; `topLeft`: `string`; `topRight`: `string`; \}; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"borderRadius"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `includeSystemItems?`: `boolean`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"screenPicker"`; \})[]

Editable fields shown in the property editor.

##### itemConfigSchema?

> `readonly` `optional` **itemConfigSchema?**: `object`

Optional per-item fields for custom data-source selections.

###### description?

> `readonly` `optional` **description?**: `string`

Help text shown above the per-item editor.

###### fields

> `readonly` **fields**: readonly (\{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `maxLength?`: `number`; `placeholder?`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `tokenSuggestions?`: readonly `object`[]; `type`: `"text"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `maxLength?`: `number`; `placeholder?`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `rows?`: `number`; `tab?`: `string`; `type`: `"textarea"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `max?`: `number`; `min?`: `number`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `step?`: `number`; `tab?`: `string`; `type`: `"number"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"boolean"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `string` \| `number`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `options`: `object`[]; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"select"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"color"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `max`: `number`; `min`: `number`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `step?`: `number`; `tab?`: `string`; `type`: `"range"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `targetProps?`: readonly `object`[]; `type`: `"dataSource"`; \} \| \{ `advanced?`: `boolean`; `allowedTypes?`: `string`[]; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"resource"`; \} \| \{ `accept?`: `"image"` \| `"video"` \| `"any"`; `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"image"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `AlignOptions`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `options`: \{ `horizontalEnabled`: `boolean`; `verticalEnabled`: `boolean`; \}; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"alignment"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `max`: `number`; `min`: `number`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `step?`: `number`; `tab?`: `string`; `type`: `"slider"`; `unit?`: `string`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `swatches?`: `string`[]; `tab?`: `string`; `type`: `"colorPicker"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `subtitle?`: `string`; `tab?`: `string`; `type`: `"sectionHeader"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"separator"`; \} \| `Omit`\<\{ `advanced?`: `boolean`; `defaultValue?`: `string` \| `number`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `options`: readonly `object`[]; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"buttonGroup"`; \}, `"options"`\> & `object` \| \{ `advanced?`: `boolean`; `defaultValue?`: `ColorOptions`; `description?`: `string`; `excludeColors?`: `ColorOptions`[]; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"colorSelect"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `"single-column"` \| `"2c-equal"` \| `"2c-left-wider"` \| `"2c-right-wider"` \| `"2c-left-narrow"` \| `"2c-right-narrow"` \| `"3c-equal"` \| `"3c-middle-wider"`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"sectionLayoutSelect"`; \} \| \{ `advanced?`: `boolean`; `allowedTypes?`: `string`[]; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"background"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `string`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"contentPosition"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `FontSizeOptions`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"textSizeSelect"`; \} \| \{ `advanced?`: `boolean`; `allowedUnits?`: [`CssUnit`](../../../core/src/registries/property-schema-types.md#cssunit)[]; `defaultUnit?`: [`CssUnit`](../../../core/src/registries/property-schema-types.md#cssunit); `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `maxByUnit?`: `Partial`\<`Record`\<[`CssUnit`](../../../core/src/registries/property-schema-types.md#cssunit), `number`\>\>; `minByUnit?`: `Partial`\<`Record`\<[`CssUnit`](../../../core/src/registries/property-schema-types.md#cssunit), `number`\>\>; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `stepByUnit?`: `Partial`\<`Record`\<[`CssUnit`](../../../core/src/registries/property-schema-types.md#cssunit), `number`\>\>; `tab?`: `string`; `type`: `"cssUnit"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `placeholder?`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"fontPicker"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `string`[]; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `placeholder?`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"stringArray"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: readonly `object`[]; `description?`: `string`; `group?`: `string`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"quoteList"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `BorderRadiusOptions`; `description?`: `string`; `group?`: `string`; `key`: `string`; `keys`: \{ `bottomLeft`: `string`; `bottomRight`: `string`; `topLeft`: `string`; `topRight`: `string`; \}; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"borderRadius"`; \} \| \{ `advanced?`: `boolean`; `defaultValue?`: `JsonValue`; `description?`: `string`; `group?`: `string`; `includeSystemItems?`: `boolean`; `key`: `string`; `label`: `string`; `requiresKeyToBeTrue?`: `string`; `requiresKeyValue?`: \{ `key`: `string`; `value`: `JsonValue`; \} \| readonly `object`[]; `tab?`: `string`; `type`: `"screenPicker"`; \})[]

Fields available for each selected item.

##### tabsConfig?

> `readonly` `optional` **tabsConfig?**: readonly `object`[]

Optional tabs used to organize the property editor.

## Type Aliases

### AddContentMediaProductInput

> **AddContentMediaProductInput** = `object`

Identifies media and product records to associate.

#### Properties

##### mediaId

> `readonly` **mediaId**: `number`

Media identifier.

##### productId

> `readonly` **productId**: `number`

Product identifier.

---

### AddContentPlaylistItemInput

> **AddContentPlaylistItemInput** = `object`

Identifies content to insert into a playlist.

#### Properties

##### contentId

> `readonly` **contentId**: `number`

Content resource identifier.

##### contentType

> `readonly` **contentType**: `"media"` \| `"page"` \| `"product"` \| `"enrollmentPack"`

Kind of content to add.

##### playlistId

> `readonly` **playlistId**: `number`

Playlist identifier.

##### position?

> `readonly` `optional` **position?**: `number` \| `null`

Requested insertion position.

---

### AddMySiteFavoriteInput

> **AddMySiteFavoriteInput** = `object`

Identifies a product to add to MySite favorites.

#### Properties

##### productId

> `readonly` **productId**: `number`

Product identifier.

---

### AnySourceWidget

> **AnySourceWidget** = [`SourceWidget`](#sourcewidget)\<`string`, `any`\>

Heterogeneous source widget type used by package arrays.

---

### CreateContentMediaInput

> **CreateContentMediaInput** = `object`

Fields used to create a content-media record.

#### Properties

##### contentFormat?

> `readonly` `optional` **contentFormat?**: `"image"` \| `"video"` \| `"pdf"` \| `"ppt"`

Content file format.

##### description?

> `readonly` `optional` **description?**: `string` \| `null`

Optional description.

##### mediaType

> `readonly` **mediaType**: `string`

Host media category.

##### title

> `readonly` **title**: `string`

Media title.

##### url?

> `readonly` `optional` **url?**: `string` \| `null`

Media URL, if already available.

---

### CreateContentPlaylistInput

> **CreateContentPlaylistInput** = `object`

Fields used to create a content playlist.

#### Properties

##### description?

> `readonly` `optional` **description?**: `string` \| `null`

Optional playlist description.

##### title

> `readonly` **title**: `string`

Playlist title.

---

### CreateContentShareInput

> **CreateContentShareInput** = `object`

Identifies content for which to create a share link.

#### Properties

##### shareableId

> `readonly` **shareableId**: `number`

Shared resource identifier.

##### shareableType

> `readonly` **shareableType**: `"media"` \| `"product"` \| `"library"` \| `"page"`

Kind of resource to share.

---

### CreateDamAssetInput

> **CreateDamAssetInput** = `object`

Fields used to create a digital-asset record.

#### Properties

##### description?

> `readonly` `optional` **description?**: `string` \| `null`

Optional asset description.

##### name

> `readonly` **name**: `string`

Asset name.

---

### CreateDamAssetPathInput

> **CreateDamAssetPathInput** = `object`

Fields used to add a path to a digital asset.

#### Properties

##### assetCode

> `readonly` **assetCode**: `string`

Stable asset code.

##### path

> `readonly` **path**: `string`

New asset path.

---

### CreateMySiteLinkInput

> **CreateMySiteLinkInput** = `object`

Fields used to create a MySite link.

#### Properties

##### title

> `readonly` **title**: `string`

Visible link title.

##### url

> `readonly` **url**: `string`

Destination URL.

---

### CreateTodoInput

> **CreateTodoInput** = `object`

Fields used to create a todo.

#### Properties

##### body

> `readonly` **body**: `string`

Todo text.

##### dueAt?

> `readonly` `optional` **dueAt?**: `string` \| `null`

Optional ISO due timestamp; `null` clears the due date.

---

### DefineWidgetPackageOptions

> **DefineWidgetPackageOptions**\<`Scope`, `StableId`\> = `DefineWidgetPackageBase`\<`Scope`\> & \{ `packageStableId`: `StableId`; `packageType?`: `"company"`; \} \| \{ `packageStableId?`: `StableId`; `packageType`: `"droplet"`; \}

Authoring options accepted by [defineWidgetPackage](#definewidgetpackage).

#### Type Parameters

##### Scope

`Scope` _extends_ `string` = `string`

##### StableId

`StableId` _extends_ `string` = `string`

---

### DeleteContentMediaInput

> **DeleteContentMediaInput** = `object`

Identifies content media to delete.

#### Properties

##### id

> `readonly` **id**: `number`

Media identifier.

---

### DeleteContentPlaylistInput

> **DeleteContentPlaylistInput** = `object`

Identifies a content playlist to delete.

#### Properties

##### id

> `readonly` **id**: `number`

Playlist identifier.

---

### DeleteMySiteFavoriteInput

> **DeleteMySiteFavoriteInput** = `object`

Identifies a MySite favorite to delete.

#### Properties

##### id

> `readonly` **id**: `number`

Favorite record identifier.

---

### DeleteMySiteLinkInput

> **DeleteMySiteLinkInput** = `object`

Identifies a MySite link to delete.

#### Properties

##### id

> `readonly` **id**: `number`

Link identifier.

---

### FullscreenState

> **FullscreenState** = `object`

Whether fullscreen is supported and active for the current widget mount.

#### Properties

##### available

> `readonly` **available**: `boolean`

Whether the current host can enter fullscreen.

##### fullscreen

> `readonly` **fullscreen**: `boolean`

Whether the widget is currently fullscreen.

---

### GetAddressFieldsInput

> **GetAddressFieldsInput** = `object`

Country and language used by [getAddressFields](#getaddressfields).

#### Properties

##### countryCode

> `readonly` **countryCode**: `string`

ISO code of the country whose address form is requested.

##### languageIso?

> `readonly` `optional` **languageIso?**: `string`

ISO language code used to localize field labels.

---

### GetContentMediaInput

> **GetContentMediaInput** = `object`

Media identifier and localization for [getContentMedia](#getcontentmedia).

#### Properties

##### id

> `readonly` **id**: `number`

Content-media identifier.

##### languageIso?

> `readonly` `optional` **languageIso?**: `string`

ISO language code for localized content.

---

### GetEnrollmentPackInput

> **GetEnrollmentPackInput** = `object`

Enrollment-pack identifier accepted by [getEnrollmentPack](#getenrollmentpack).

#### Properties

##### id

> `readonly` **id**: `number`

Enrollment-pack identifier.

---

### GetOrderInput

> **GetOrderInput** = `object`

Routing token and optional metafield selection for [getOrder](#getorder).

#### Properties

##### includeMetafields?

> `readonly` `optional` **includeMetafields?**: `boolean`

Include order metafields. They are omitted by default.

##### token

> `readonly` **token**: `string`

URL-safe order token returned by [listOrders](#listorders).

---

### GetPageInput

> **GetPageInput** = `object`

Page identifier and localization for [getPage](#getpage).

#### Properties

##### id

> `readonly` **id**: `number`

Page identifier.

##### languageIso?

> `readonly` `optional` **languageIso?**: `string`

ISO language code for localized page content.

---

### GetPlaylistInput

> **GetPlaylistInput** = `object`

Playlist identifier accepted by [getPlaylist](#getplaylist).

#### Properties

##### id

> `readonly` **id**: `number`

Playlist identifier.

---

### GetProductInput

> **GetProductInput** = `object`

Product identifier accepted by [getProduct](#getproduct).

#### Properties

##### id

> `readonly` **id**: `string` \| `number`

Product identifier.

---

### ListContentMediaInput

> **ListContentMediaInput** = [`PortalPageInput`](#portalpageinput) & `object`

Filters, localization, ordering, and pagination for [listContentMedia](#listcontentmedia).

#### Type Declaration

##### contentFormat?

> `readonly` `optional` **contentFormat?**: `"video"` \| `"image"` \| `"pdf"` \| `"ppt"`

Media format to return.

##### languageIso?

> `readonly` `optional` **languageIso?**: `string`

ISO language code for localized content.

##### ownership?

> `readonly` `optional` **ownership?**: `"all"` \| `"mine"` \| `"company"`

Ownership scope for the returned media.

##### sort?

> `readonly` `optional` **sort?**: `"title_asc"` \| `"title_desc"`

Media ordering.

##### title?

> `readonly` `optional` **title?**: `string`

Text to match against media titles.

---

### ListContentMediaProductsInput

> **ListContentMediaProductsInput** = [`PortalPageInput`](#portalpageinput) & `object`

Pagination and localization for content-media products.

#### Type Declaration

##### languageIso?

> `readonly` `optional` **languageIso?**: `string`

ISO language code.

##### mediaId

> `readonly` **mediaId**: `number`

Media identifier.

---

### ListContentMetricsInput

> **ListContentMetricsInput** = `ListContentMetricsBaseInput` & `object` \| `ListContentMetricsBaseInput` & `object`

Resource and metric selection for [listContentMetrics](#listcontentmetrics).

---

### ListCountriesInput

> **ListCountriesInput** = `object`

Filters for [listCountries](#listcountries). Cursor pagination fields remain accepted
for compatibility, but the Portal tenant endpoint returns the complete list.

#### Properties

##### ~~cursor?~~

> `readonly` `optional` **cursor?**: `string`

###### Deprecated

The Portal tenant endpoint returns every country and ignores this field.

##### languageIso?

> `readonly` `optional` **languageIso?**: `string`

ISO language code used to localize returned names.

##### ~~limit?~~

> `readonly` `optional` **limit?**: `number`

###### Deprecated

The Portal tenant endpoint returns every country and ignores this field.

---

### ListDamAssetPathsInput

> **ListDamAssetPathsInput** = [`PortalPageInput`](#portalpageinput) & `object`

Asset and pagination selection for [listDamAssetPaths](#listdamassetpaths).

#### Type Declaration

##### assetCode

> `readonly` **assetCode**: `string`

Stable asset code from [PortalDamAsset.code](#code-2).

---

### ListOrdersInput

> **ListOrdersInput** = [`PortalPageInput`](#portalpageinput) & `object`

Filters and pagination for [listOrders](#listorders).

#### Type Declaration

##### includeMetafields?

> `readonly` `optional` **includeMetafields?**: `boolean`

Include order metafields. They are omitted by default.

##### search?

> `readonly` `optional` **search?**: `string`

Search text matched by the Portal tenant order-list endpoint.

##### status?

> `readonly` `optional` **status?**: [`PortalOrderListStatus`](#portalorderliststatus)

Order lifecycle filter accepted by the Portal tenant order-list endpoint.

---

### ListPagesInput

> **ListPagesInput** = [`PortalPageInput`](#portalpageinput) & `object`

Filters, localization, ordering, and pagination for [listPages](#listpages).

#### Type Declaration

##### languageIso?

> `readonly` `optional` **languageIso?**: `string`

ISO language code for localized page content.

##### sort?

> `readonly` `optional` **sort?**: `"title_asc"` \| `"title_desc"`

Page ordering.

##### title?

> `readonly` `optional` **title?**: `string`

Text to match against page titles.

---

### ListPlaylistItemsInput

> **ListPlaylistItemsInput** = [`PortalPageInput`](#portalpageinput) & `object`

Playlist, localization, and pagination for [listPlaylistItems](#listplaylistitems).

#### Type Declaration

##### languageIso?

> `readonly` `optional` **languageIso?**: `string`

ISO language code for localized item content.

##### playlistId

> `readonly` **playlistId**: `number`

Playlist whose items are requested.

---

### ListPlaylistsInput

> **ListPlaylistsInput** = [`PortalPageInput`](#portalpageinput) & `object`

Filters, ordering, and pagination for [listPlaylists](#listplaylists).

#### Type Declaration

##### ownership?

> `readonly` `optional` **ownership?**: `"all"` \| `"mine"` \| `"company"`

Ownership scope for the returned playlists.

##### sort?

> `readonly` `optional` **sort?**: `"title_asc"` \| `"title_desc"` \| `"created_at_asc"` \| `"created_at_desc"`

Playlist ordering.

##### title?

> `readonly` `optional` **title?**: `string`

Text to match against playlist titles.

---

### ListProductMediaInput

> **ListProductMediaInput** = `object`

Product identifier accepted by [listProductMedia](#listproductmedia).

#### Properties

##### productId

> `readonly` **productId**: `string` \| `number`

Product whose media is requested.

---

### ListProductMetricsInput

> **ListProductMetricsInput** = `object`

Metric selection for [listProductMetrics](#listproductmetrics).

#### Properties

##### kind

> `readonly` **kind**: `"visits"` \| `"shareVisits"`

Whether to return direct visits or visits attributed to shares.

##### limit?

> `readonly` `optional` **limit?**: `number`

Maximum number of metric rows to return.

##### period?

> `readonly` `optional` **period?**: [`PortalMetricsPeriod`](#portalmetricsperiod)

Aggregation window.

---

### ListProductsInput

> **ListProductsInput** = [`PortalPageInput`](#portalpageinput) & `object`

Pagination and ordering for [listProducts](#listproducts).

#### Type Declaration

##### sort?

> `readonly` `optional` **sort?**: `"title_asc"` \| `"title_desc"` \| `"price_asc"` \| `"price_desc"` \| `"created_at_asc"` \| `"created_at_desc"`

Product ordering.

---

### ListTodosInput

> **ListTodosInput** = `object`

Filters accepted by [listTodos](#listtodos).

#### Properties

##### state?

> `readonly` `optional` **state?**: `"incomplete"` \| `"completed"` \| `"all"`

Completion state to include.

---

### MutateDamAssetInput

> **MutateDamAssetInput** = `object`

Identifies a digital asset for mutation.

#### Properties

##### assetCode

> `readonly` **assetCode**: `string`

Stable asset code.

---

### PortalAddressFields

> **PortalAddressFields** = `object`

Localized address-field configuration for a country.

#### Properties

##### countryCode

> `readonly` **countryCode**: `string`

ISO code of the requested country.

##### countryName

> `readonly` **countryName**: `string`

Localized country name.

##### fields

> `readonly` **fields**: readonly `object`[]

Address fields in display order.

---

### PortalAppSummary

> **PortalAppSummary** = `object`

Published portal definition, profile, and screen summary.

#### Properties

##### definitionId

> `readonly` **definitionId**: [`PortalEntityId`](#portalentityid) \| `null`

Current definition identifier, if available.

##### profile

> `readonly` **profile**: [`PortalProfileSummary`](#portalprofilesummary) \| `null`

Active profile summary, if configured.

##### publishedVersion

> `readonly` **publishedVersion**: `number` \| `null`

Active immutable version number, if published.

##### screens

> `readonly` **screens**: [`PortalSummaryCollection`](#portalsummarycollection)\<[`PortalScreenSummary`](#portalscreensummary)\>

Screen summaries.

---

### PortalCalendarEvent

> **PortalCalendarEvent** = `object`

Calendar event visible to the signed-in Portal user.

#### Properties

##### color

> `readonly` **color**: `string` \| `null`

Event color value supplied by the host.

##### countries

> `readonly` **countries**: readonly `string`[]

ISO country codes where the event is available.

##### description

> `readonly` **description**: `string` \| `null`

Event description.

##### end

> `readonly` **end**: `string`

ISO 8601 event end.

##### id

> `readonly` **id**: `number`

Event identifier.

##### imageUrl

> `readonly` **imageUrl**: `string` \| `null`

Absolute event image URL.

##### isAllDay

> `readonly` **isAllDay**: `boolean`

Whether the event spans a whole day rather than explicit times.

##### start

> `readonly` **start**: `string`

ISO 8601 event start.

##### status

> `readonly` **status**: `string` \| `null`

Event status.

##### timeZone

> `readonly` **timeZone**: `string` \| `null`

IANA time-zone name.

##### title

> `readonly` **title**: `string`

Event title.

##### url

> `readonly` **url**: `string` \| `null`

Absolute event URL.

##### venue

> `readonly` **venue**: `string` \| `null`

Event venue.

---

### PortalContentFavoriteState

> **PortalContentFavoriteState** = `object`

Current favorite state returned after a toggle.

#### Properties

##### favoriteableId

> `readonly` **favoriteableId**: `number`

Favorite resource identifier.

##### favoriteableType

> `readonly` **favoriteableType**: `ContentFavoriteType`

Favorite resource category.

##### isFavorited

> `readonly` **isFavorited**: `boolean`

Resulting favorite state.

---

### PortalCountry

> **PortalCountry** = `object`

Country and state data available in the current Portal.

#### Properties

##### code

> `readonly` **code**: `string`

ISO country code.

##### currencyCode

> `readonly` **currencyCode**: `string`

ISO currency code used by the country.

##### name

> `readonly` **name**: `string`

Localized country name.

##### states

> `readonly` **states**: readonly `object`[]

States or other first-level administrative areas in the country.

---

### PortalDamAsset

> **PortalDamAsset** = `object`

Digital asset available from the Portal content library.

#### Properties

##### canonicalPath

> `readonly` **canonicalPath**: `string` \| `null`

Canonical path for the asset.

##### category

> `readonly` **category**: `string` \| `null`

Asset category.

##### code

> `readonly` **code**: `string`

Stable asset code used to query its paths.

##### createdAt

> `readonly` **createdAt**: `string`

ISO 8601 creation timestamp.

##### defaultVariantUrl

> `readonly` **defaultVariantUrl**: `string` \| `null`

Absolute URL of the default asset variant.

##### description

> `readonly` **description**: `string` \| `null`

Asset description.

##### id

> `readonly` **id**: `number`

Asset identifier.

##### name

> `readonly` **name**: `string`

Asset display name.

##### updatedAt

> `readonly` **updatedAt**: `string` \| `null`

ISO 8601 last-update timestamp.

---

### PortalDamAssetPath

> **PortalDamAssetPath** = `object`

One accessible path for a digital asset.

#### Properties

##### assetCode

> `readonly` **assetCode**: `string`

Stable code of the parent asset.

##### createdAt

> `readonly` **createdAt**: `string`

ISO 8601 creation timestamp.

##### id

> `readonly` **id**: `number`

Asset-path identifier.

##### path

> `readonly` **path**: `string`

Asset path supplied by the content library.

---

### PortalEnrollmentPack

> **PortalEnrollmentPack** = `object`

Enrollment pack available to a widget.

#### Properties

##### canonicalUrl

> `readonly` **canonicalUrl**: `string` \| `null`

Canonical absolute URL.

##### description

> `readonly` **description**: `string` \| `null`

Enrollment-pack description.

##### id

> `readonly` **id**: `number`

Enrollment-pack identifier.

##### images

> `readonly` **images**: readonly [`PortalImage`](#portalimage)[]

Enrollment-pack images.

##### slug

> `readonly` **slug**: `string` \| `null`

URL-safe enrollment-pack slug.

##### title

> `readonly` **title**: `string`

Enrollment-pack title.

##### url

> `readonly` **url**: `string` \| `null`

Absolute enrollment-pack URL.

---

### PortalEntityId

> **PortalEntityId** = `string` \| `number`

Identifier used by portal resources. IDs can be numeric or string-backed.

---

### PortalFunction

> **PortalFunction**\<`Output`, `Input`\> = \[`Input`\] _extends_ \[`void`\] ? () => `Promise`\<`Output`\> : (`input`) => `Promise`\<`Output`\>

Async worker-side callable for a Portal function.

#### Type Parameters

##### Output

`Output`

##### Input

`Input` = `void`

---

### PortalFunctionErrorCode

> **PortalFunctionErrorCode** = `"NOT_MOUNTED"` \| `"NOT_DECLARED"` \| `"NOT_GRANTED"` \| `"INVALID_ARGUMENT"` \| `"UNAVAILABLE"` \| `"UNSUPPORTED"` \| `"HOST_FAILURE"` \| `"INVALID_RESPONSE"`

Stable error classification returned by Portal functions.

---

### PortalFunctionHandler

> **PortalFunctionHandler**\<`Output`, `Input`\> = \[`Input`\] _extends_ \[`void`\] ? () => `Output` \| `Promise`\<`Output`\> : (`input`) => `Output` \| `Promise`\<`Output`\>

Host-side handler shape for a Portal function definition.

#### Type Parameters

##### Output

`Output`

##### Input

`Input` = `void`

---

### PortalFunctionJsonValue

> **PortalFunctionJsonValue** = `RemoteDomSerializableValue`

JSON-compatible value that can cross the widget worker boundary.

---

### PortalImage

> **PortalImage** = `object`

Image metadata returned with a product or enrollment pack.

#### Properties

##### alt

> `readonly` **alt**: `string` \| `null`

Alternative text, or `null` when none is available.

##### url

> `readonly` **url**: `string` \| `null`

Absolute image URL, or `null` when no image URL is available.

---

### PortalLanguage

> **PortalLanguage** = `object`

Language available in the current Portal.

#### Properties

##### code

> `readonly` **code**: `string`

ISO language code.

##### name

> `readonly` **name**: `string`

Display name of the language.

---

### PortalMedia

> **PortalMedia** = `object`

Content-library media item available to a widget.

#### Properties

##### contentFormat

> `readonly` **contentFormat**: `string` \| `null`

Media format supplied by the content library.

##### createdAt

> `readonly` **createdAt**: `string`

ISO 8601 creation timestamp.

##### cta

> `readonly` **cta**: [`PortalMediaCta`](#portalmediacta-1) \| `null`

Configured call to action.

##### description

> `readonly` **description**: `string` \| `null`

Media description.

##### id

> `readonly` **id**: `number`

Media identifier.

##### seo

> `readonly` **seo**: \{ `blockCrawler`: `boolean`; `description`: `string` \| `null`; `imageUrl`: `string` \| `null`; `title`: `string` \| `null`; \} \| `null`

Search-engine metadata for the media item.

###### Union Members

###### Type Literal

\{ `blockCrawler`: `boolean`; `description`: `string` \| `null`; `imageUrl`: `string` \| `null`; `title`: `string` \| `null`; \}

###### blockCrawler

> `readonly` **blockCrawler**: `boolean`

Whether crawlers should be asked not to index the item.

###### description

> `readonly` **description**: `string` \| `null`

Search result description.

###### imageUrl

> `readonly` **imageUrl**: `string` \| `null`

Absolute social or search preview image URL.

###### title

> `readonly` **title**: `string` \| `null`

Search result title.

---

`null`

##### status

> `readonly` **status**: `string` \| `null`

Publication or processing status.

##### thumbnailUrl

> `readonly` **thumbnailUrl**: `string` \| `null`

Absolute thumbnail URL.

##### title

> `readonly` **title**: `string`

Media title.

##### updatedAt

> `readonly` **updatedAt**: `string`

ISO 8601 last-update timestamp.

##### url

> `readonly` **url**: `string` \| `null`

Absolute content URL.

---

### PortalMediaCta

> **PortalMediaCta** = `object`

Call-to-action configuration attached to content media.

#### Properties

##### actionUrl

> `readonly` **actionUrl**: `string` \| `null`

URL or URI used by the action.

##### buttonColor

> `readonly` **buttonColor**: `string` \| `null`

Button color value supplied by the host.

##### buttonDescription

> `readonly` **buttonDescription**: `string` \| `null`

Accessible or supporting description of the action.

##### buttonText

> `readonly` **buttonText**: `string` \| `null`

Text shown on the action button.

##### enabled

> `readonly` **enabled**: `boolean`

Whether the call to action is enabled.

##### type

> `readonly` **type**: `"link"` \| `"cart"` \| `"email"` \| `"phone"` \| `null`

Action behavior, or `null` when no behavior is configured.

---

### PortalMediaProduct

> **PortalMediaProduct** = `object`

Product associated with a content-media record.

#### Properties

##### addedAt

> `readonly` **addedAt**: `string` \| `null`

ISO association timestamp, if available.

##### currency

> `readonly` **currency**: `string` \| `null`

Currency code, if available.

##### id

> `readonly` **id**: `number`

Product identifier.

##### imageUrl

> `readonly` **imageUrl**: `string` \| `null`

Product image URL, if available.

##### name

> `readonly` **name**: `string` \| `null`

Product name, if available.

##### price

> `readonly` **price**: `string` \| `null`

Retail price, if available.

##### slug

> `readonly` **slug**: `string` \| `null`

Product slug, if available.

---

### PortalMemberAccess

> **PortalMemberAccess** = `object`

Membership identity, representative access, and granted permissions.

#### Properties

##### canAccessRepSurfaces

> `readonly` **canAccessRepSurfaces**: `boolean`

Whether representative-only surfaces are available.

##### memberType

> `readonly` **memberType**: `"customer"` \| `"rep"`

Customer or representative role.

##### name

> `readonly` **name**: `string` \| `null`

Display name, if available.

##### permissions

> `readonly` **permissions**: `Readonly`\<`Record`\<`string`, `boolean`\>\>

Permission names mapped to their granted state.

##### slug

> `readonly` **slug**: `string`

Public member slug.

---

### PortalMetric

> **PortalMetric** = `object`

Aggregated metric value for a Portal resource.

#### Properties

##### id

> `readonly` **id**: `number` \| `null`

Resource identifier, or `null` for an aggregate without one resource.

##### total

> `readonly` **total**: `number`

Metric total for the requested period.

---

### PortalMetricsPeriod

> **PortalMetricsPeriod** = `"7d"` \| `"30d"` \| `"90d"` \| `"1y"` \| `"all"`

Supported aggregation windows for product and content metrics.

---

### PortalMySiteFavorite

> **PortalMySiteFavorite** = `object`

Product favorite displayed on a MySite profile.

#### Properties

##### createdAt

> `readonly` **createdAt**: `string` \| `null`

ISO creation timestamp, if available.

##### favoriteableId

> `readonly` **favoriteableId**: `number`

Favorited resource identifier.

##### favoriteableType

> `readonly` **favoriteableType**: `string`

Host resource type.

##### id

> `readonly` **id**: `number`

Favorite record identifier.

##### imageUrl

> `readonly` **imageUrl**: `string` \| `null`

Resource image URL, if available.

##### name

> `readonly` **name**: `string` \| `null`

Resource name, if available.

##### position

> `readonly` **position**: `number`

Display position.

---

### PortalMySiteLink

> **PortalMySiteLink** = `object`

Link displayed on a MySite profile.

#### Properties

##### id

> `readonly` **id**: `number`

Link identifier.

##### position

> `readonly` **position**: `number`

Display position.

##### title

> `readonly` **title**: `string`

Visible link title.

##### url

> `readonly` **url**: `string`

Destination URL.

---

### PortalMySiteProfile

> **PortalMySiteProfile** = `object`

Public MySite profile and aggregate performance values.

#### Properties

##### avatarUrl

> `readonly` **avatarUrl**: `string` \| `null`

Profile avatar URL, if set.

##### bio

> `readonly` **bio**: `string` \| `null`

Profile biography, if set.

##### displayName

> `readonly` **displayName**: `string` \| `null`

Public display name, if set.

##### id

> `readonly` **id**: `number`

MySite profile identifier.

##### leads

> `readonly` **leads**: `number`

Recorded lead count.

##### slug

> `readonly` **slug**: `string` \| `null`

Public route slug, if set.

##### themeId

> `readonly` **themeId**: `number` \| `null`

Active theme identifier, if set.

##### url

> `readonly` **url**: `string` \| `null`

Public MySite URL, if published.

##### views

> `readonly` **views**: `number`

Recorded view count.

---

### PortalMySiteTheme

> **PortalMySiteTheme** = `object`

MySite theme available to the signed-in member.

#### Properties

##### id

> `readonly` **id**: `number`

Theme identifier.

##### name

> `readonly` **name**: `string`

Theme name.

##### previewUrl

> `readonly` **previewUrl**: `string` \| `null`

Theme preview URL, if available.

---

### PortalNamedEntitySummary

> **PortalNamedEntitySummary** = `object`

Common identity fields for resources in a portal definition summary.

#### Properties

##### definitionId

> `readonly` **definitionId**: [`PortalEntityId`](#portalentityid) \| `null`

Definition resource identifier, if available.

##### id

> `readonly` **id**: [`PortalEntityId`](#portalentityid) \| `null`

Persisted entity identifier, if available.

##### name

> `readonly` **name**: `string` \| `null`

Entity name, if available.

##### slug

> `readonly` **slug**: `string` \| `null`

Entity route slug, if available.

---

### PortalNavigationItem

> **PortalNavigationItem** = `object`

One resolved navigation item, including its nested children.

#### Properties

##### children

> `readonly` **children**: readonly [`PortalNavigationItem`](#portalnavigationitem)[]

Nested child items.

##### icon

> `readonly` **icon**: `string` \| `null`

Icon identifier, if configured.

##### id

> `readonly` **id**: `number` \| `null`

Persisted navigation-item identifier, if available.

##### label

> `readonly` **label**: `string`

Visible navigation label.

##### parentId

> `readonly` **parentId**: `number` \| `null`

Parent item identifier, if nested.

##### position

> `readonly` **position**: `number` \| `null`

Sort position, if available.

##### screenId

> `readonly` **screenId**: `number` \| `null`

Target screen identifier, if configured.

##### section

> `readonly` **section**: `string` \| `null`

Navigation section, if configured.

##### slug

> `readonly` **slug**: `string` \| `null`

Destination slug, if the item targets a screen.

##### source

> `readonly` **source**: `"user"` \| `"system"` \| `"code"` \| `null`

Origin of the navigation item.

---

### PortalNavigationState

> **PortalNavigationState** = `object`

Current route and resolved navigation tree for the mounted portal.

#### Properties

##### basePath

> `readonly` **basePath**: `string`

Portal base path used to build hrefs.

##### currentSlug

> `readonly` **currentSlug**: `string`

Slug of the current route.

##### navItems

> `readonly` **navItems**: readonly [`PortalNavigationItem`](#portalnavigationitem)[]

Resolved navigation tree.

##### previousSlug

> `readonly` **previousSlug**: `string` \| `null`

Slug of the previous route, if known.

---

### PortalNavigationSummary

> **PortalNavigationSummary** = `object`

Navigation identity and aggregate counts returned with a portal summary.

#### Properties

##### definitionId

> `readonly` **definitionId**: [`PortalEntityId`](#portalentityid) \| `null`

Definition resource identifier, if available.

##### id

> `readonly` **id**: [`PortalEntityId`](#portalentityid) \| `null`

Persisted navigation identifier, if available.

##### name

> `readonly` **name**: `string` \| `null`

Navigation name, if available.

##### navigationItemCount

> `readonly` **navigationItemCount**: `number`

Number of navigation items.

##### screenCount

> `readonly` **screenCount**: `number`

Number of linked screens.

---

### PortalNavigationTarget

> **PortalNavigationTarget** = `string` \| \{ `slug`: `string`; \} \| \{ `href`: `string`; \}

Route target accepted by [buildPortalHref](#buildportalhref) and [navigateTo](#navigateto).

#### Union Members

`string`

---

##### Type Literal

\{ `slug`: `string`; \}

###### slug

> `readonly` **slug**: `string`

Portal screen slug.

---

##### Type Literal

\{ `href`: `string`; \}

###### href

> `readonly` **href**: `string`

Portal-relative or allowed absolute href.

---

### PortalOrder

> **PortalOrder** = `object`

Complete order returned by [getOrder](#getorder).

#### Properties

##### billingAddress

> `readonly` **billingAddress**: [`PortalOrderAddress`](#portalorderaddress) \| `null`

Order billing address, when available.

##### createdAt

> `readonly` **createdAt**: `string`

ISO 8601 creation timestamp.

##### currency

> `readonly` **currency**: `string`

ISO 4217 currency code for monetary values.

##### customerEmail

> `readonly` **customerEmail**: `string` \| `null`

Customer email address, when available.

##### customerName

> `readonly` **customerName**: `string` \| `null`

Customer display name, when available.

##### customerPointsBalance?

> `readonly` `optional` **customerPointsBalance?**: `number`

Customer loyalty-points balance after the order.

##### discount

> `readonly` **discount**: `string`

Discount total as a decimal string.

##### discountInCurrency

> `readonly` **discountInCurrency**: `string` \| `null`

Localized discount display value.

##### fulfillmentStatus

> `readonly` **fulfillmentStatus**: `string`

Backend-defined fulfillment status.

##### id

> `readonly` **id**: `number`

Numeric order identifier.

##### lineItems

> `readonly` **lineItems**: readonly [`PortalOrderLineItem`](#portalorderlineitem)[]

Purchased line items.

##### metafields?

> `readonly` `optional` **metafields?**: readonly [`PortalOrderMetafield`](#portalordermetafield)[]

Order metafields, when explicitly requested.

##### orderNumber

> `readonly` **orderNumber**: `string` \| `null`

Merchant-facing order number, when available.

##### orderTotalAfterPointsRedemption?

> `readonly` `optional` **orderTotalAfterPointsRedemption?**: `number`

Order total after point redemption as a decimal number.

##### orderTotalAfterPointsRedemptionInCurrency?

> `readonly` `optional` **orderTotalAfterPointsRedemptionInCurrency?**: `string` \| `null`

Localized post-redemption order-total display value.

##### paymentMethod

> `readonly` **paymentMethod**: [`PortalOrderPaymentMethod`](#portalorderpaymentmethod-1) \| `null`

Payment summary, when available.

##### pointsApplied?

> `readonly` `optional` **pointsApplied?**: `number`

Loyalty points redeemed on the order.

##### pointsAppliedAmount?

> `readonly` `optional` **pointsAppliedAmount?**: `number`

Redemption amount as a decimal number.

##### pointsAppliedAmountInCurrency?

> `readonly` `optional` **pointsAppliedAmountInCurrency?**: `string` \| `null`

Localized redemption-amount display value.

##### saleDate?

> `readonly` `optional` **saleDate?**: `string` \| `null`

ISO 8601 sale timestamp, when available.

##### shipping

> `readonly` **shipping**: `string`

Shipping total as a decimal string.

##### shippingAddress

> `readonly` **shippingAddress**: [`PortalOrderAddress`](#portalorderaddress) \| `null`

Order shipping address, when available.

##### shippingInCurrency

> `readonly` **shippingInCurrency**: `string` \| `null`

Localized shipping display value.

##### shippingMethod

> `readonly` **shippingMethod**: [`PortalOrderShippingMethod`](#portalordershippingmethod-1) \| `null`

Selected shipping method, when available.

##### status

> `readonly` **status**: `string`

Order lifecycle status, for example `draft`, `completed`, or `archived`.

##### subscriptionOrder

> `readonly` **subscriptionOrder**: `boolean`

Whether the order originated from a subscription.

##### subscriptionToken

> `readonly` **subscriptionToken**: `string` \| `null`

Source subscription token, when available.

##### subtotal

> `readonly` **subtotal**: `string`

Merchandise subtotal as a decimal string.

##### subtotalInCurrency

> `readonly` **subtotalInCurrency**: `string` \| `null`

Localized subtotal display value.

##### tax

> `readonly` **tax**: `string`

Tax total as a decimal string.

##### taxInCurrency

> `readonly` **taxInCurrency**: `string` \| `null`

Localized tax display value.

##### token

> `readonly` **token**: `string`

URL-safe order token accepted by [getOrder](#getorder).

##### total

> `readonly` **total**: `string`

Order total as a decimal string.

##### totalInCurrency

> `readonly` **totalInCurrency**: `string` \| `null`

Localized order-total display value.

##### totalPointsCredited?

> `readonly` `optional` **totalPointsCredited?**: `number`

Loyalty points credited by this order.

##### totals?

> `readonly` `optional` **totals?**: [`PortalOrderTaxTotals`](#portalordertaxtotals)

Detailed tax totals, when supplied by the tenant.

##### trackingInformations

> `readonly` **trackingInformations**: readonly [`PortalOrderTrackingInformation`](#portalordertrackinginformation)[]

Shipment tracking records.

##### updatedAt

> `readonly` **updatedAt**: `string`

ISO 8601 last-update timestamp.

---

### PortalOrderAddress

> **PortalOrderAddress** = `object`

Address attached to an order.

#### Properties

##### address1

> `readonly` **address1**: `string` \| `null`

Primary street-address line.

##### address2

> `readonly` **address2**: `string` \| `null`

Secondary street-address line.

##### city

> `readonly` **city**: `string` \| `null`

City or locality.

##### countryCode

> `readonly` **countryCode**: `string` \| `null`

ISO 3166-1 alpha-2 country code.

##### id

> `readonly` **id**: `number`

Address identifier.

##### name

> `readonly` **name**: `string` \| `null`

Recipient name.

##### phone

> `readonly` **phone**: `string` \| `null`

Recipient phone number.

##### postalCode

> `readonly` **postalCode**: `string` \| `null`

Postal or ZIP code.

##### state

> `readonly` **state**: `string` \| `null`

State, province, or region.

---

### PortalOrderJsonValue

> **PortalOrderJsonValue** = [`PortalFunctionJsonValue`](#portalfunctionjsonvalue)

JSON value stored in an order metafield.

---

### PortalOrderLineItem

> **PortalOrderLineItem** = `object`

Line item attached to an order.

#### Properties

##### id

> `readonly` **id**: `number`

Line-item identifier.

##### imageUrl

> `readonly` **imageUrl**: `string` \| `null`

Product image URL, when available.

##### price

> `readonly` **price**: `string`

Unit price as a decimal string.

##### priceInCurrency

> `readonly` **priceInCurrency**: `string`

Localized unit-price display value.

##### productId

> `readonly` **productId**: `number`

Product identifier.

##### productName

> `readonly` **productName**: `string`

Product display name.

##### quantity

> `readonly` **quantity**: `number`

Purchased quantity.

##### sku

> `readonly` **sku**: `string` \| `null`

Stock-keeping unit, when available.

##### sourceSubscription

> `readonly` **sourceSubscription**: \{ `subscriptionToken`: `string`; \} \| `null`

Source subscription, when the item originated from one.

###### Union Members

###### Type Literal

\{ `subscriptionToken`: `string`; \}

###### subscriptionToken

> `readonly` **subscriptionToken**: `string`

URL-safe source-subscription token.

---

`null`

##### total

> `readonly` **total**: `string`

Line total as a decimal string.

##### totalInCurrency

> `readonly` **totalInCurrency**: `string`

Localized line-total display value.

##### variantId

> `readonly` **variantId**: `number` \| `null`

Product-variant identifier, when applicable.

##### variantName

> `readonly` **variantName**: `string` \| `null`

Product-variant display name, when applicable.

---

### PortalOrderListStatus

> **PortalOrderListStatus** = _typeof_ [`PORTAL_ORDER_LIST_STATUSES`](#portal_order_list_statuses)\[`number`\]

Order lifecycle status accepted by [listOrders](#listorders).

---

### PortalOrderMetafield

> **PortalOrderMetafield** = `object`

Metafield attached to an order. Returned only when explicitly requested.

#### Properties

##### key

> `readonly` **key**: `string`

Metafield key.

##### namespace

> `readonly` **namespace**: `string`

Metafield namespace.

##### value

> `readonly` **value**: [`PortalOrderJsonValue`](#portalorderjsonvalue)

JSON-compatible metafield value.

##### valueType

> `readonly` **valueType**: `string`

Backend-defined metafield value type.

---

### PortalOrderPaymentMethod

> **PortalOrderPaymentMethod** = `object`

Payment summary attached to an order.

#### Properties

##### cardNetwork

> `readonly` **cardNetwork**: `string` \| `null`

Card network, when the payment used a card.

##### id

> `readonly` **id**: `number`

Payment-method identifier.

##### last4

> `readonly` **last4**: `string` \| `null`

Last four card digits, when available.

##### logoUrl

> `readonly` **logoUrl**: `string` \| `null`

Payment-method logo URL, when available.

##### paymentType

> `readonly` **paymentType**: `string`

Backend-defined payment type.

##### source

> `readonly` **source**: `string`

Payment provider or source.

---

### PortalOrderShippingMethod

> **PortalOrderShippingMethod** = `object`

Shipping method attached to an order.

#### Properties

##### id

> `readonly` **id**: `string` \| `null`

Shipping-method identifier, when available.

##### title

> `readonly` **title**: `string`

Shipping-method display title.

---

### PortalOrderSummary

> **PortalOrderSummary** = `object`

Order returned by [listOrders](#listorders).

#### Properties

##### amount

> `readonly` **amount**: `string`

Order total as a decimal string.

##### createdAt

> `readonly` **createdAt**: `string`

ISO 8601 creation timestamp.

##### currencyCode

> `readonly` **currencyCode**: `string`

ISO 4217 currency code for monetary values.

##### email

> `readonly` **email**: `string` \| `null`

Customer email address, when available.

##### firstItem

> `readonly` **firstItem**: \{ `imageUrl`: `string`; `title`: `string`; \} \| `null`

Preview data for the first line item, when available.

###### Union Members

###### Type Literal

\{ `imageUrl`: `string`; `title`: `string`; \}

###### imageUrl

> `readonly` **imageUrl**: `string`

First line-item image URL.

###### title

> `readonly` **title**: `string`

First line-item title.

---

`null`

##### firstName

> `readonly` **firstName**: `string` \| `null`

Customer first name, when available.

##### fulfillmentStatus

> `readonly` **fulfillmentStatus**: `string`

Backend-defined fulfillment status.

##### id

> `readonly` **id**: `number`

Numeric order identifier.

##### itemsCount

> `readonly` **itemsCount**: `number`

Number of distinct line items.

##### lastName

> `readonly` **lastName**: `string` \| `null`

Customer last name, when available.

##### metafields?

> `readonly` `optional` **metafields?**: readonly [`PortalOrderMetafield`](#portalordermetafield)[]

Order metafields, when explicitly requested.

##### orderNumber

> `readonly` **orderNumber**: `string`

Merchant-facing order number.

##### quantityCount

> `readonly` **quantityCount**: `number`

Total quantity across all line items.

##### saleDate

> `readonly` **saleDate**: `string` \| `null`

ISO 8601 sale timestamp, when available.

##### status

> `readonly` **status**: `string`

Order lifecycle status, for example `draft`, `completed`, or `archived`.

##### thumbnailImageUrls?

> `readonly` `optional` **thumbnailImageUrls?**: readonly `string`[]

Image URLs for order-item thumbnails.

##### token

> `readonly` **token**: `string`

URL-safe token accepted by [getOrder](#getorder).

##### totalDisplayAmount

> `readonly` **totalDisplayAmount**: `string`

Localized display value for the order total.

##### updatedAt

> `readonly` **updatedAt**: `string`

ISO 8601 last-update timestamp.

---

### PortalOrderTaxTotals

> **PortalOrderTaxTotals** = `object`

Display-ready tax decomposition attached to an order.

#### Properties

##### grossSubtotal

> `readonly` **grossSubtotal**: `string`

Gross merchandise subtotal as a decimal string.

##### grossSubtotalInCurrency

> `readonly` **grossSubtotalInCurrency**: `string`

Localized gross-subtotal display value.

##### itemTax

> `readonly` **itemTax**: `string`

Tax charged on merchandise as a decimal string.

##### itemTaxInCurrency

> `readonly` **itemTaxInCurrency**: `string`

Localized item-tax display value.

##### netSubtotal

> `readonly` **netSubtotal**: `string`

Net merchandise subtotal as a decimal string.

##### netSubtotalInCurrency

> `readonly` **netSubtotalInCurrency**: `string`

Localized net-subtotal display value.

##### priceInclusiveOfTax

> `readonly` **priceInclusiveOfTax**: `boolean`

Whether displayed prices include tax.

##### shippingNet

> `readonly` **shippingNet**: `string`

Shipping amount before tax as a decimal string.

##### shippingNetInCurrency

> `readonly` **shippingNetInCurrency**: `string`

Localized net-shipping display value.

##### shippingTax

> `readonly` **shippingTax**: `string`

Tax charged on shipping as a decimal string.

##### shippingTaxInCurrency

> `readonly` **shippingTaxInCurrency**: `string`

Localized shipping-tax display value.

##### taxLabel

> `readonly` **taxLabel**: `string` \| `null`

Merchant-defined tax label, when available.

##### totalTax

> `readonly` **totalTax**: `string`

Total tax as a decimal string.

##### totalTaxInCurrency

> `readonly` **totalTaxInCurrency**: `string`

Localized total-tax display value.

---

### PortalOrderTrackingInformation

> **PortalOrderTrackingInformation** = `object`

Shipment tracking record attached to an order.

#### Properties

##### id

> `readonly` **id**: `number`

Tracking-record identifier.

##### shippingCarrier

> `readonly` **shippingCarrier**: `string` \| `null`

Shipping carrier name, when available.

##### trackingNumber

> `readonly` **trackingNumber**: `string`

Carrier tracking number.

##### trackingUrl

> `readonly` **trackingUrl**: `string` \| `null`

Carrier tracking URL, when available.

---

### PortalPage

> **PortalPage**\<`Item`\> = `object`

One page of Portal resources.

#### Type Parameters

##### Item

`Item`

#### Properties

##### items

> `readonly` **items**: readonly `Item`[]

Resources in this page.

##### nextCursor

> `readonly` **nextCursor**: `string` \| `null`

Opaque cursor for the next page, or `null` when this is the last page.

---

### PortalPageContent

> **PortalPageContent** = `object`

Content-page summary available to a widget.

#### Properties

##### countries

> `readonly` **countries**: readonly [`PortalCountry`](#portalcountry)[]

Countries where the page is available.

##### description

> `readonly` **description**: `string` \| `null`

Page description.

##### id

> `readonly` **id**: `number`

Page identifier.

##### imageUrl

> `readonly` **imageUrl**: `string` \| `null`

Absolute page image URL.

##### slug

> `readonly` **slug**: `string` \| `null`

URL-safe page slug.

##### source

> `readonly` **source**: `"code"` \| `"builder"` \| `null`

Whether code or the visual builder owns the page.

##### status

> `readonly` **status**: `"published"` \| `"unpublished"`

Page publication status.

##### title

> `readonly` **title**: `string` \| `null`

Page title.

---

### PortalPageDetail

> **PortalPageDetail** = `object`

Content page together with its share URL.

#### Properties

##### page

> `readonly` **page**: [`PortalPageContent`](#portalpagecontent)

Page data.

##### shareLink

> `readonly` **shareLink**: `string` \| `null`

Absolute URL for sharing the page.

---

### PortalPageInput

> **PortalPageInput** = `object`

Cursor pagination accepted by Portal list functions.

#### Properties

##### cursor?

> `readonly` `optional` **cursor?**: `string`

Opaque cursor returned as [PortalPage.nextCursor](#nextcursor) by the previous call.

##### limit?

> `readonly` `optional` **limit?**: `number`

Maximum number of items to request. The host can enforce a smaller limit.

---

### PortalPlaylist

> **PortalPlaylist** = `object`

Content playlist available to a widget.

#### Properties

##### createdAt

> `readonly` **createdAt**: `string`

ISO 8601 creation timestamp.

##### description

> `readonly` **description**: `string` \| `null`

Playlist description.

##### id

> `readonly` **id**: `number`

Playlist identifier.

##### imageUrl

> `readonly` **imageUrl**: `string` \| `null`

Absolute playlist image URL.

##### isFavorited

> `readonly` **isFavorited**: `boolean`

Whether the signed-in user has favorited the playlist.

##### itemsCount

> `readonly` **itemsCount**: `number`

Number of items in the playlist.

##### title

> `readonly` **title**: `string`

Playlist title.

##### updatedAt

> `readonly` **updatedAt**: `string`

ISO 8601 last-update timestamp.

---

### PortalPlaylistItem

> **PortalPlaylistItem** = `object`

One positioned resource in a content playlist.

#### Properties

##### content

> `readonly` **content**: [`PortalPlaylistItemContent`](#portalplaylistitemcontent-1)

Embedded resource data. Narrow the [PortalPlaylistItemContent](#portalplaylistitemcontent-1) value on its `type` field.

##### contentId

> `readonly` **contentId**: `number`

Identifier of the referenced resource.

##### contentType

> `readonly` **contentType**: `"media"` \| `"page"` \| `"product"` \| `"enrollmentPack"`

Kind of resource referenced by the item.

##### createdAt

> `readonly` **createdAt**: `string`

ISO 8601 creation timestamp.

##### id

> `readonly` **id**: `number`

Playlist-item identifier.

##### position

> `readonly` **position**: `number` \| `null`

Display position within the playlist.

---

### PortalPlaylistItemContent

> **PortalPlaylistItemContent** = \{ `description`: `string` \| `null`; `id`: `number`; `thumbnailUrl`: `string` \| `null`; `title`: `string`; `type`: `"media"`; `url`: `string` \| `null`; \} \| \{ `description`: `string` \| `null`; `id`: `number`; `imageUrl`: `string` \| `null`; `slug`: `string` \| `null`; `status`: `"published"` \| `"unpublished"`; `title`: `string` \| `null`; `type`: `"page"`; \} \| \{ `product`: [`PortalPlaylistProduct`](#portalplaylistproduct); `type`: `"product"`; \} \| \{ `description`: `string` \| `null`; `id`: `number`; `images`: readonly [`PortalImage`](#portalimage)[]; `slug`: `string` \| `null`; `title`: `string`; `type`: `"enrollmentPack"`; `url`: `string` \| `null`; \}

Content embedded in a playlist item.

Narrow on `type` before accessing fields specific to media, pages, products,
or enrollment packs.

#### Union Members

##### Type Literal

\{ `description`: `string` \| `null`; `id`: `number`; `thumbnailUrl`: `string` \| `null`; `title`: `string`; `type`: `"media"`; `url`: `string` \| `null`; \}

###### description

> `readonly` **description**: `string` \| `null`

Media description.

###### id

> `readonly` **id**: `number`

Media identifier.

###### thumbnailUrl

> `readonly` **thumbnailUrl**: `string` \| `null`

Absolute thumbnail URL.

###### title

> `readonly` **title**: `string`

Media title.

###### type

> `readonly` **type**: `"media"`

Identifies content-library media.

###### url

> `readonly` **url**: `string` \| `null`

Absolute media URL.

---

##### Type Literal

\{ `description`: `string` \| `null`; `id`: `number`; `imageUrl`: `string` \| `null`; `slug`: `string` \| `null`; `status`: `"published"` \| `"unpublished"`; `title`: `string` \| `null`; `type`: `"page"`; \}

###### description

> `readonly` **description**: `string` \| `null`

Page description.

###### id

> `readonly` **id**: `number`

Page identifier.

###### imageUrl

> `readonly` **imageUrl**: `string` \| `null`

Absolute page image URL.

###### slug

> `readonly` **slug**: `string` \| `null`

URL-safe page slug.

###### status

> `readonly` **status**: `"published"` \| `"unpublished"`

Page publication status.

###### title

> `readonly` **title**: `string` \| `null`

Page title.

###### type

> `readonly` **type**: `"page"`

Identifies a content page.

---

##### Type Literal

\{ `product`: [`PortalPlaylistProduct`](#portalplaylistproduct); `type`: `"product"`; \}

###### product

> `readonly` **product**: [`PortalPlaylistProduct`](#portalplaylistproduct)

Embedded product summary.

###### type

> `readonly` **type**: `"product"`

Identifies a product.

---

##### Type Literal

\{ `description`: `string` \| `null`; `id`: `number`; `images`: readonly [`PortalImage`](#portalimage)[]; `slug`: `string` \| `null`; `title`: `string`; `type`: `"enrollmentPack"`; `url`: `string` \| `null`; \}

###### description

> `readonly` **description**: `string` \| `null`

Enrollment-pack description.

###### id

> `readonly` **id**: `number`

Enrollment-pack identifier.

###### images

> `readonly` **images**: readonly [`PortalImage`](#portalimage)[]

Enrollment-pack images.

###### slug

> `readonly` **slug**: `string` \| `null`

URL-safe enrollment-pack slug.

###### title

> `readonly` **title**: `string`

Enrollment-pack title.

###### type

> `readonly` **type**: `"enrollmentPack"`

Identifies an enrollment pack.

###### url

> `readonly` **url**: `string` \| `null`

Absolute enrollment-pack URL.

---

### PortalPlaylistProduct

> **PortalPlaylistProduct** = `object`

Product summary embedded in a playlist item.

#### Properties

##### createdAt

> `readonly` **createdAt**: `string` \| `null`

ISO 8601 creation timestamp.

##### currency

> `readonly` **currency**: `string` \| `null`

ISO currency code for monetary fields.

##### description

> `readonly` **description**: `string` \| `null`

Product description.

##### id

> `readonly` **id**: `number`

Product identifier.

##### images

> `readonly` **images**: readonly [`PortalImage`](#portalimage)[]

Product images.

##### mediaCount

> `readonly` **mediaCount**: `number` \| `null`

Number of associated media items.

##### name

> `readonly` **name**: `string`

Product display name.

##### price

> `readonly` **price**: `string` \| `null`

Retail price serialized as a decimal string.

##### slug

> `readonly` **slug**: `string` \| `null`

URL-safe product slug.

##### status

> `readonly` **status**: `string` \| `null`

Product publication or availability status.

##### wholesalePrice

> `readonly` **wholesalePrice**: `string` \| `null`

Wholesale price serialized as a decimal string.

---

### PortalPointsLedger

> **PortalPointsLedger** = `object`

Current reward-points balance and ledger entries.

#### Properties

##### balance

> `readonly` **balance**: `number`

Current points balance.

##### entries

> `readonly` **entries**: readonly [`PortalPointsLedgerEntry`](#portalpointsledgerentry)[]

Ledger entries in host-defined order.

---

### PortalPointsLedgerEntry

> **PortalPointsLedgerEntry** = `object`

One reward-points ledger transaction.

#### Properties

##### amount

> `readonly` **amount**: `number`

Signed point amount.

##### createdAt

> `readonly` **createdAt**: `string`

ISO creation timestamp.

##### hasSource

> `readonly` **hasSource**: `boolean`

Whether the entry links to a source record.

##### id

> `readonly` **id**: `number`

Ledger entry identifier.

##### transactionType

> `readonly` **transactionType**: `string` \| `null`

Host-defined transaction category, if available.

---

### PortalProduct

> **PortalProduct** = `object`

Product data available to a widget.

#### Properties

##### createdAt

> `readonly` **createdAt**: `string` \| `null`

ISO 8601 creation timestamp.

##### currency

> `readonly` **currency**: `string` \| `null`

ISO currency code for monetary fields.

##### cv

> `readonly` **cv**: `string` \| `null`

Commission volume serialized as a decimal string.

##### description

> `readonly` **description**: `string` \| `null`

Product description.

##### hasCustomizations

> `readonly` **hasCustomizations**: `boolean` \| `null`

Whether purchasing the product requires customization choices.

##### id

> `readonly` **id**: `number` \| `null`

Product identifier, or `null` when the source has no identifier.

##### images

> `readonly` **images**: readonly [`PortalImage`](#portalimage)[]

Product images.

##### isBundle

> `readonly` **isBundle**: `boolean`

Whether the product represents a bundle.

##### mediaCount

> `readonly` **mediaCount**: `number` \| `null`

Number of associated media items.

##### name

> `readonly` **name**: `string` \| `null`

Product display name.

##### price

> `readonly` **price**: `string` \| `null`

Retail price serialized as a decimal string.

##### priceRange

> `readonly` **priceRange**: \{ `max`: `string`; `min`: `string`; \} \| `null`

Minimum and maximum one-time prices as decimal strings.

###### Union Members

###### Type Literal

\{ `max`: `string`; `min`: `string`; \}

###### max

> `readonly` **max**: `string`

Maximum one-time price.

###### min

> `readonly` **min**: `string`

Minimum one-time price.

---

`null`

##### qv

> `readonly` **qv**: `string` \| `null`

Qualifying volume serialized as a decimal string.

##### shopLink

> `readonly` **shopLink**: `string` \| `null`

Absolute URL of the product in the shop.

##### slug

> `readonly` **slug**: `string` \| `null`

URL-safe product slug.

##### status

> `readonly` **status**: `string` \| `null`

Product publication or availability status.

##### subscriptionPriceRange

> `readonly` **subscriptionPriceRange**: \{ `max`: `string`; `min`: `string`; \} \| `null`

Minimum and maximum subscription prices as decimal strings.

###### Union Members

###### Type Literal

\{ `max`: `string`; `min`: `string`; \}

###### max

> `readonly` **max**: `string`

Maximum subscription price.

###### min

> `readonly` **min**: `string`

Minimum subscription price.

---

`null`

##### variants

> `readonly` **variants**: readonly [`PortalProductVariant`](#portalproductvariant)[]

Purchasable product variants.

##### wholesalePrice

> `readonly` **wholesalePrice**: `string` \| `null`

Wholesale price serialized as a decimal string.

---

### PortalProductMedia

> **PortalProductMedia** = `object`

Media associated with a product.

#### Properties

##### id

> `readonly` **id**: `number` \| `null`

Media identifier.

##### mediaType

> `readonly` **mediaType**: `string` \| `null`

Media format or type.

##### title

> `readonly` **title**: `string` \| `null`

Media display title.

##### url

> `readonly` **url**: `string` \| `null`

Absolute media URL.

---

### PortalProductVariant

> **PortalProductVariant** = `object`

Purchasable variant of a Portal product.

#### Properties

##### available

> `readonly` **available**: `boolean` \| `null`

Whether the variant can currently be purchased.

##### currency

> `readonly` **currency**: `string` \| `null`

ISO currency code for monetary fields.

##### cv

> `readonly` **cv**: `string` \| `null`

Commission volume serialized as a decimal string.

##### id

> `readonly` **id**: `number` \| `null`

Variant identifier, or `null` when the source has no identifier.

##### images

> `readonly` **images**: readonly [`PortalImage`](#portalimage)[]

Variant images.

##### isMaster

> `readonly` **isMaster**: `boolean` \| `null`

Whether this is the product's master variant.

##### position

> `readonly` **position**: `number` \| `null`

Variant display position.

##### price

> `readonly` **price**: `string` \| `null`

Retail price serialized as a decimal string.

##### qv

> `readonly` **qv**: `string` \| `null`

Qualifying volume serialized as a decimal string.

##### sku

> `readonly` **sku**: `string` \| `null`

Stock-keeping unit.

##### title

> `readonly` **title**: `string` \| `null`

Variant display title.

##### wholesalePrice

> `readonly` **wholesalePrice**: `string` \| `null`

Wholesale price serialized as a decimal string.

---

### PortalProfileSummary

> **PortalProfileSummary** = `object`

Active profile, theme, and navigation summary for the current portal.

#### Properties

##### activeThemeId

> `readonly` **activeThemeId**: `string` \| `null`

Active theme identifier, if available.

##### definitionId

> `readonly` **definitionId**: [`PortalEntityId`](#portalentityid) \| `null`

Definition resource identifier, if available.

##### mobileNavigation

> `readonly` **mobileNavigation**: [`PortalNavigationSummary`](#portalnavigationsummary) \| `null`

Mobile navigation summary, if configured.

##### name

> `readonly` **name**: `string` \| `null`

Profile name, if available.

##### navigation

> `readonly` **navigation**: [`PortalNavigationSummary`](#portalnavigationsummary) \| `null`

Primary navigation summary, if configured.

##### themes

> `readonly` **themes**: [`PortalSummaryCollection`](#portalsummarycollection)\<[`PortalNamedEntitySummary`](#portalnamedentitysummary)\>

Themes available to the profile.

---

### PortalScreenSummary

> **PortalScreenSummary** = [`PortalNamedEntitySummary`](#portalnamedentitysummary) & `object`

Screen identity and component count returned with a portal summary.

#### Type Declaration

##### componentCount

> `readonly` **componentCount**: `number`

Number of component nodes on the screen.

---

### PortalShare

> **PortalShare** = `object`

Share record created for a Portal resource.

#### Properties

##### createdAt

> `readonly` **createdAt**: `string`

ISO 8601 creation timestamp.

##### id

> `readonly` **id**: `number`

Share identifier.

##### shareableId

> `readonly` **shareableId**: `number`

Identifier of the shared resource.

##### shareableType

> `readonly` **shareableType**: `"media"` \| `"product"` \| `"library"` \| `"page"`

Kind of shared resource.

##### url

> `readonly` **url**: `string`

Absolute share URL.

---

### PortalStore

> **PortalStore** = `object`

Store identity, branding, app links, and reward-point labels.

#### Properties

##### appStoreUrl

> `readonly` **appStoreUrl**: `string` \| `null`

Apple App Store URL, if configured.

##### bundleSubscriptionsEnabled

> `readonly` **bundleSubscriptionsEnabled**: `boolean`

Whether bundle subscriptions are enabled.

##### iconUrl

> `readonly` **iconUrl**: `string` \| `null`

Store icon URL, if configured.

##### id

> `readonly` **id**: `number`

Numeric store identifier.

##### logoUrl

> `readonly` **logoUrl**: `string` \| `null`

Store logo URL, if configured.

##### name

> `readonly` **name**: `string`

Store name.

##### playStoreUrl

> `readonly` **playStoreUrl**: `string` \| `null`

Google Play Store URL, if configured.

##### rewardPointsLabelPlural

> `readonly` **rewardPointsLabelPlural**: `string`

Plural reward-points label.

##### rewardPointsLabelSingular

> `readonly` **rewardPointsLabelSingular**: `string`

Singular reward-points label.

##### subdomain

> `readonly` **subdomain**: `string`

Store subdomain.

---

### PortalSummaryCollection

> **PortalSummaryCollection**\<`Item`\> = `object`

Counted, immutable collection used by portal summary responses.

#### Type Parameters

##### Item

`Item`

#### Properties

##### count

> `readonly` **count**: `number`

Total item count.

##### items

> `readonly` **items**: readonly `Item`[]

Summary items.

---

### PortalTodo

> **PortalTodo** = [`PortalTodoSummary`](#portaltodosummary) & `object`

Full todo record.

#### Type Declaration

##### body

> `readonly` **body**: `string`

Todo text.

---

### PortalTodoSummary

> **PortalTodoSummary** = `object`

Todo identity and lifecycle timestamps.

#### Properties

##### completedAt

> `readonly` **completedAt**: `string` \| `null`

ISO completion timestamp, if complete.

##### createdAt

> `readonly` **createdAt**: `string`

ISO creation timestamp.

##### dueAt

> `readonly` **dueAt**: `string` \| `null`

ISO due timestamp, if set.

##### id

> `readonly` **id**: `number`

Todo identifier.

---

### RemoveContentMediaProductInput

> **RemoveContentMediaProductInput** = [`AddContentMediaProductInput`](#addcontentmediaproductinput)

Identifies a media-product association to remove.

---

### RemoveContentPlaylistItemInput

> **RemoveContentPlaylistItemInput** = `object`

Identifies a playlist item to remove.

#### Properties

##### itemId

> `readonly` **itemId**: `number`

Playlist-item identifier.

##### playlistId

> `readonly` **playlistId**: `number`

Playlist identifier.

---

### ReorderContentPlaylistItemsInput

> **ReorderContentPlaylistItemsInput** = `object`

Defines playlist-item positions.

#### Properties

##### items

> `readonly` **items**: readonly `object`[]

Item identifiers paired with their desired order.

##### playlistId

> `readonly` **playlistId**: `number`

Playlist identifier.

---

### ReorderMySiteFavoritesInput

> **ReorderMySiteFavoritesInput** = `object`

Defines the complete display order for MySite favorites.

#### Properties

##### orderedIds

> `readonly` **orderedIds**: readonly `number`[]

Favorite identifiers in desired display order.

---

### ReorderMySiteLinksInput

> **ReorderMySiteLinksInput** = `object`

Defines the complete display order for MySite links.

#### Properties

##### orderedIds

> `readonly` **orderedIds**: readonly `number`[]

Link identifiers in desired display order.

---

### SearchProductsInput

> **SearchProductsInput** = [`PortalPageInput`](#portalpageinput) & `object`

Query and pagination for [searchProducts](#searchproducts).

#### Type Declaration

##### query

> `readonly` **query**: `string`

Text to match against searchable product data.

---

### ToggleContentFavoriteInput

> **ToggleContentFavoriteInput** = `object`

Identifies content whose favorite state should be toggled.

#### Properties

##### favoriteableId

> `readonly` **favoriteableId**: `number`

Favorite resource identifier.

##### favoriteableType

> `readonly` **favoriteableType**: `ContentFavoriteType`

Favorite resource category.

---

### UpdateContentMediaInput

> **UpdateContentMediaInput** = `object`

Editable fields for a content-media record.

#### Properties

##### contentFormat?

> `readonly` `optional` **contentFormat?**: `"image"` \| `"video"` \| `"pdf"` \| `"ppt"`

Replacement file format.

##### cta?

> `readonly` `optional` **cta?**: `object`

Call-to-action settings.

###### actionUrl?

> `readonly` `optional` **actionUrl?**: `string` \| `null`

Action destination URL.

###### buttonColor?

> `readonly` `optional` **buttonColor?**: `string` \| `null`

Button color value.

###### buttonDescription?

> `readonly` `optional` **buttonDescription?**: `string` \| `null`

Accessible button description.

###### buttonText?

> `readonly` `optional` **buttonText?**: `string` \| `null`

Button label.

###### enabled?

> `readonly` `optional` **enabled?**: `boolean`

Whether the call to action is enabled.

###### type?

> `readonly` `optional` **type?**: `"link"` \| `"cart"`

Link or cart action.

##### description?

> `readonly` `optional` **description?**: `string` \| `null`

Replacement description.

##### id

> `readonly` **id**: `number`

Media identifier.

##### languageIso?

> `readonly` `optional` **languageIso?**: `string`

ISO language code for localized content.

##### seo?

> `readonly` `optional` **seo?**: `object`

Search-engine metadata.

###### blockCrawler?

> `readonly` `optional` **blockCrawler?**: `boolean`

Whether crawlers should be blocked.

###### description?

> `readonly` `optional` **description?**: `string` \| `null`

Search result description.

###### imageUrl?

> `readonly` `optional` **imageUrl?**: `string` \| `null`

Search result image URL.

###### title?

> `readonly` `optional` **title?**: `string` \| `null`

Search result title.

##### status?

> `readonly` `optional` **status?**: `"active"` \| `"draft"`

Publication state.

##### thumbnailUrl?

> `readonly` `optional` **thumbnailUrl?**: `string` \| `null`

Replacement thumbnail URL.

##### title?

> `readonly` `optional` **title?**: `string`

Replacement title.

##### url?

> `readonly` `optional` **url?**: `string` \| `null`

Replacement media URL.

---

### UpdateContentPlaylistInput

> **UpdateContentPlaylistInput** = `object`

Editable fields for a content playlist.

#### Properties

##### description?

> `readonly` `optional` **description?**: `string` \| `null`

Replacement description.

##### id

> `readonly` **id**: `number`

Playlist identifier.

##### title?

> `readonly` `optional` **title?**: `string`

Replacement title.

---

### UpdateMySiteLinkInput

> **UpdateMySiteLinkInput** = `object`

Fields used to update a MySite link.

#### Properties

##### id

> `readonly` **id**: `number`

Link identifier.

##### title?

> `readonly` `optional` **title?**: `string`

Replacement title.

##### url?

> `readonly` `optional` **url?**: `string`

Replacement destination URL.

---

### UpdateMySiteProfileInput

> **UpdateMySiteProfileInput** = `object`

Editable MySite profile fields.

#### Properties

##### avatarUrl?

> `readonly` `optional` **avatarUrl?**: `string`

New avatar URL.

##### bio?

> `readonly` `optional` **bio?**: `string`

New biography.

##### displayName?

> `readonly` `optional` **displayName?**: `string`

New display name.

---

### UpdateMySiteSettingsInput

> **UpdateMySiteSettingsInput** = `object`

Editable MySite publication settings.

#### Properties

##### slug?

> `readonly` `optional` **slug?**: `string`

Public route slug.

##### themeId?

> `readonly` `optional` **themeId?**: `number`

Theme identifier to activate.

---

### UpdateUserAccountInput

> **UpdateUserAccountInput** = `object`

Editable fields for the signed-in account.

#### Properties

##### avatarUrl?

> `readonly` `optional` **avatarUrl?**: `string`

New avatar URL.

##### bio?

> `readonly` `optional` **bio?**: `string`

New biography.

##### firstName?

> `readonly` `optional` **firstName?**: `string`

New given name.

##### languageIso?

> `readonly` `optional` **languageIso?**: `string`

Preferred ISO language code.

##### lastName?

> `readonly` `optional` **lastName?**: `string`

New family name.

##### socialLinks?

> `readonly` `optional` **socialLinks?**: `Readonly`\<`Record`\<`string`, `string`\>\>

Replacement social-link map.

---

### UserAccount

> **UserAccount** = `object`

Signed-in portal account details available to a widget.

#### Properties

##### avatarUrl

> `readonly` **avatarUrl**: `string` \| `null`

Profile avatar URL, if set.

##### bio

> `readonly` **bio**: `string` \| `null`

Profile biography, if set.

##### defaultCountryIso

> `readonly` **defaultCountryIso**: `string` \| `null`

Default ISO country code, if set.

##### displayName

> `readonly` **displayName**: `string`

Name intended for display.

##### email

> `readonly` **email**: `string`

Account email address.

##### firstName

> `readonly` **firstName**: `string`

Given name.

##### id

> `readonly` **id**: `number`

Numeric account identifier.

##### lastName

> `readonly` **lastName**: `string`

Family name.

##### marketCountryIso

> `readonly` **marketCountryIso**: `string` \| `null`

Active market ISO country code, if set.

##### memberType

> `readonly` **memberType**: `"customer"` \| `"rep"`

Customer or representative account role.

##### publicId

> `readonly` **publicId**: `string`

Public account identifier.

##### slug

> `readonly` **slug**: `string`

Public account slug.

##### socialLinks

> `readonly` **socialLinks**: `Readonly`\<`Record`\<`string`, `string`\>\> \| `null`

Social network names mapped to profile URLs.

---

### WidgetSourceDefaultProps

> **WidgetSourceDefaultProps** = `Readonly`\<`Record`\<`string`, `JsonValue`\>\>

JSON-serializable default props accepted by a source widget.

---

### WidgetSourcePropertyField

> **WidgetSourcePropertyField** = [`PropertyField`](../../../core/src/registries/property-schema-types.md#propertyfield) _extends_ infer Field ? `Field` _extends_ [`ButtonGroupFieldSchema`](../../../core/src/registries/property-schema-types.md#buttongroupfieldschema) ? `Omit`\<`SerializableValue`\<`Field`\>, `"options"`\> & `object` : `SerializableValue`\<`Field`\> : `never`

A property field that can be included in published widget metadata.

The legacy `color` field is deprecated. Use `colorSelect` so the value is a
semantic color token supplied by the portal theme.

---

### WidgetSourceResizable

> **WidgetSourceResizable** = `boolean` \| `"horizontal"` \| `"vertical"` \| `"both"` \| \{ `horizontal?`: `boolean`; `minHeight?`: `number`; `minWidth?`: `number`; `vertical?`: `boolean`; \}

Builder resize behavior declared by a source widget.

#### Union Members

`boolean`

---

`"horizontal"`

---

`"vertical"`

---

`"both"`

---

##### Type Literal

\{ `horizontal?`: `boolean`; `minHeight?`: `number`; `minWidth?`: `number`; `vertical?`: `boolean`; \}

###### horizontal?

> `readonly` `optional` **horizontal?**: `boolean`

Allow horizontal resizing.

###### minHeight?

> `readonly` `optional` **minHeight?**: `number`

Minimum height in builder layout units.

###### minWidth?

> `readonly` `optional` **minWidth?**: `number`

Minimum width in builder layout units.

###### vertical?

> `readonly` `optional` **vertical?**: `boolean`

Allow vertical resizing.

## Variables

### addContentMediaProduct

> `const` **addContentMediaProduct**: [`PortalFunction`](#portalfunction-1)\<[`PortalMediaProduct`](#portalmediaproduct), [`AddContentMediaProductInput`](#addcontentmediaproductinput)\>

Associates a product with content media.

#### Param

**input**

Media and product identifiers.

#### Returns

The created [PortalMediaProduct](#portalmediaproduct) association.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `addContentMediaProduct` in `uses`. This mutates host content after mount.

#### Example

```ts
const product = await addContentMediaProduct({ mediaId: 12, productId: 42 });
```

---

### addContentPlaylistItem

> `const` **addContentPlaylistItem**: [`PortalFunction`](#portalfunction-1)\<[`PortalPlaylistItem`](#portalplaylistitem), [`AddContentPlaylistItemInput`](#addcontentplaylistiteminput)\>

Adds a content resource to a playlist.

#### Param

**input**

Playlist, resource kind, resource identifier, and optional position.

#### Returns

The created [PortalPlaylistItem](#portalplaylistitem).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `addContentPlaylistItem` in `uses`. This mutates host content after mount.

#### Example

```ts
const item = await addContentPlaylistItem({
  playlistId: 5,
  contentType: "media",
  contentId: 12,
});
```

---

### addMySiteFavorite

> `const` **addMySiteFavorite**: [`PortalFunction`](#portalfunction-1)\<[`PortalMySiteFavorite`](#portalmysitefavorite), [`AddMySiteFavoriteInput`](#addmysitefavoriteinput)\>

Adds a product to MySite favorites.

#### Param

**input**

Product identifier to add.

#### Returns

The created [PortalMySiteFavorite](#portalmysitefavorite).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `addMySiteFavorite` in `uses`. This mutates host data after mount.

#### Example

```ts
const favorite = await addMySiteFavorite({ productId: 42 });
```

---

### allowAnchorUrl

> `const` **allowAnchorUrl**: [`PortalFunction`](#portalfunction-1)\<`string`, `string`\>

Allows one exact absolute HTTP(S) URL for an anchor in the current mount.
Declare this function in `uses` and call it before rendering or changing the link.

#### Param

**url**

Exact absolute URL to allow.

#### Returns

The allowed URL for assignment to the anchor.

#### Throws

[PortalFunctionError](#portalfunctionerror) for invalid or disallowed URLs and host failures.

#### Remarks

Declare `allowAnchorUrl` in `uses`. Approval is scoped to the current mount and exact URL.

#### Example

```ts
const href = await allowAnchorUrl("https://example.com/help");
```

---

### buildPortalHref

> `const` **buildPortalHref**: [`PortalFunction`](#portalfunction-1)\<`string`, [`PortalNavigationTarget`](#portalnavigationtarget)\>

Converts a Portal navigation target to an href for the current mount.

#### Param

**target**

Screen slug, href, or shorthand string target.

#### Returns

A host-approved href.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `buildPortalHref` in `uses` and call it only after mount.

#### Example

```ts
const href = await buildPortalHref({ slug: "shop" });
```

---

### createContentMedia

> `const` **createContentMedia**: [`PortalFunction`](#portalfunction-1)\<[`PortalMedia`](#portalmedia), [`CreateContentMediaInput`](#createcontentmediainput)\>

Creates content media in the Portal host.

#### Param

**input**

Media metadata and optional source URL.

#### Returns

The created [PortalMedia](#portalmedia).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `createContentMedia` in `uses`. This mutates host content after mount.

#### Example

```ts
const media = await createContentMedia({
  title: "Guide",
  mediaType: "document",
});
```

---

### createContentPlaylist

> `const` **createContentPlaylist**: [`PortalFunction`](#portalfunction-1)\<[`PortalPlaylist`](#portalplaylist), [`CreateContentPlaylistInput`](#createcontentplaylistinput)\>

Creates a content playlist.

#### Param

**input**

Playlist title and optional description.

#### Returns

The created [PortalPlaylist](#portalplaylist).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `createContentPlaylist` in `uses`. This mutates host content after mount.

#### Example

```ts
const playlist = await createContentPlaylist({ title: "Launch" });
```

---

### createContentShare

> `const` **createContentShare**: [`PortalFunction`](#portalfunction-1)\<[`PortalShare`](#portalshare), [`CreateContentShareInput`](#createcontentshareinput)\>

Creates a share link for a content resource.

#### Param

**input**

Resource kind and identifier to share.

#### Returns

The created [PortalShare](#portalshare).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `createContentShare` in `uses`. This creates host data after mount.

#### Example

```ts
const share = await createContentShare({
  shareableType: "media",
  shareableId: 12,
});
```

---

### createDamAsset

> `const` **createDamAsset**: [`PortalFunction`](#portalfunction-1)\<[`PortalDamAsset`](#portaldamasset), [`CreateDamAssetInput`](#createdamassetinput)\>

Creates a digital-asset record.

#### Param

**input**

Asset name and optional description.

#### Returns

The created [PortalDamAsset](#portaldamasset).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `createDamAsset` in `uses`. This mutates host content after mount.

#### Example

```ts
const asset = await createDamAsset({ name: "Hero image" });
```

---

### createDamAssetPath

> `const` **createDamAssetPath**: [`PortalFunction`](#portalfunction-1)\<[`PortalDamAssetPath`](#portaldamassetpath), [`CreateDamAssetPathInput`](#createdamassetpathinput)\>

Adds a path to a digital asset.

#### Param

**input**

Stable asset code and path.

#### Returns

The created [PortalDamAssetPath](#portaldamassetpath).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `createDamAssetPath` in `uses`. This mutates host content after mount.

#### Example

```ts
const path = await createDamAssetPath({
  assetCode: "hero",
  path: "/images/hero.png",
});
```

---

### createMySiteLink

> `const` **createMySiteLink**: [`PortalFunction`](#portalfunction-1)\<[`PortalMySiteLink`](#portalmysitelink), [`CreateMySiteLinkInput`](#createmysitelinkinput)\>

Creates a link on the signed-in member's MySite.

#### Param

**input**

Destination URL and visible title.

#### Returns

The created [PortalMySiteLink](#portalmysitelink).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `createMySiteLink` in `uses`. This mutates host data after mount.

#### Example

```ts
const link = await createMySiteLink({
  title: "Shop",
  url: "https://example.com",
});
```

---

### createTodo

> `const` **createTodo**: [`PortalFunction`](#portalfunction-1)\<[`PortalTodo`](#portaltodo), [`CreateTodoInput`](#createtodoinput)\>

Creates a todo for the signed-in member.

#### Param

**input**

Todo text and optional due timestamp.

#### Returns

The created [PortalTodo](#portaltodo).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `createTodo` in `uses`. This mutates host data after mount.

#### Example

```ts
const todo = await createTodo({ body: "Follow up" });
```

---

### deleteContentMedia

> `const` **deleteContentMedia**: [`PortalFunction`](#portalfunction-1)\<`null`, [`DeleteContentMediaInput`](#deletecontentmediainput)\>

Deletes a content-media record.

#### Param

**input**

Media identifier to delete.

#### Returns

`null` after deletion.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `deleteContentMedia` in `uses`. This permanently mutates host content after mount.

#### Example

```ts
await deleteContentMedia({ id: 12 });
```

---

### deleteContentPlaylist

> `const` **deleteContentPlaylist**: [`PortalFunction`](#portalfunction-1)\<`null`, [`DeleteContentPlaylistInput`](#deletecontentplaylistinput)\>

Deletes a content playlist.

#### Param

**input**

Playlist identifier to delete.

#### Returns

`null` after deletion.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `deleteContentPlaylist` in `uses`. This permanently mutates host content after mount.

#### Example

```ts
await deleteContentPlaylist({ id: 5 });
```

---

### deleteDamAsset

> `const` **deleteDamAsset**: [`PortalFunction`](#portalfunction-1)\<`null`, [`MutateDamAssetInput`](#mutatedamassetinput)\>

Permanently deletes a digital asset.

#### Param

**input**

Stable asset code.

#### Returns

`null` after deletion.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `deleteDamAsset` in `uses`. This permanently mutates host content after mount.

#### Example

```ts
await deleteDamAsset({ assetCode: "hero" });
```

---

### deleteMySiteFavorite

> `const` **deleteMySiteFavorite**: [`PortalFunction`](#portalfunction-1)\<`null`, [`DeleteMySiteFavoriteInput`](#deletemysitefavoriteinput)\>

Deletes a MySite favorite.

#### Param

**input**

Favorite record identifier to delete.

#### Returns

`null` after deletion.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `deleteMySiteFavorite` in `uses`. This permanently mutates host data after mount.

#### Example

```ts
await deleteMySiteFavorite({ id: 9 });
```

---

### deleteMySiteLink

> `const` **deleteMySiteLink**: [`PortalFunction`](#portalfunction-1)\<`null`, [`DeleteMySiteLinkInput`](#deletemysitelinkinput)\>

Deletes a link from the signed-in member's MySite.

#### Param

**input**

Link identifier to delete.

#### Returns

`null` after deletion.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `deleteMySiteLink` in `uses`. This permanently mutates host data after mount.

#### Example

```ts
await deleteMySiteLink({ id: 7 });
```

---

### discardDamAsset

> `const` **discardDamAsset**: [`PortalFunction`](#portalfunction-1)\<[`PortalDamAsset`](#portaldamasset), [`MutateDamAssetInput`](#mutatedamassetinput)\>

Marks a digital asset as discarded.

#### Param

**input**

Stable asset code.

#### Returns

The updated [PortalDamAsset](#portaldamasset).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `discardDamAsset` in `uses`. This mutates host content after mount.

#### Example

```ts
const asset = await discardDamAsset({ assetCode: "hero" });
```

---

### exitFullscreen

> `const` **exitFullscreen**: [`PortalFunction`](#portalfunction-1)\<`void`\>

Exits fullscreen for the current widget mount.

#### Returns

A promise that resolves when the host completes the request.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unsupported, unavailable, or rejected by the host.

#### Remarks

Declare `exitFullscreen` in `uses` and call it only after mount.

#### Example

```ts
await exitFullscreen();
```

---

### getAddressFields

> `const` **getAddressFields**: [`PortalFunction`](#portalfunction-1)\<[`PortalAddressFields`](#portaladdressfields), [`GetAddressFieldsInput`](#getaddressfieldsinput)\>

Gets the localized address-field configuration for a country.

Declare `getAddressFields` in the widget's `uses` list before calling it.

#### Param

**input**

Country code and optional label language.

#### Returns

The country and its ordered address fields.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `getAddressFields` is not declared, the input is invalid, the localization capability is unavailable, or the host call or response fails.

#### Example

```ts
const address = await getAddressFields({
  countryCode: "US",
  languageIso: "en",
});
```

---

### getContentMedia

> `const` **getContentMedia**: [`PortalFunction`](#portalfunction-1)\<[`PortalMedia`](#portalmedia), [`GetContentMediaInput`](#getcontentmediainput)\>

Gets one content-library media item by identifier.

Declare `getContentMedia` in the widget's `uses` list before calling it.

#### Param

**input**

Media identifier and optional content language.

#### Returns

The requested media item.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `getContentMedia` is not declared, the input is invalid or unavailable, content access is unavailable, or the host call or response fails.

#### Example

```ts
const media = await getContentMedia({ id: 42, languageIso: "en" });
```

---

### getEnrollmentPack

> `const` **getEnrollmentPack**: [`PortalFunction`](#portalfunction-1)\<[`PortalEnrollmentPack`](#portalenrollmentpack), [`GetEnrollmentPackInput`](#getenrollmentpackinput)\>

Gets one enrollment pack by identifier.

Declare `getEnrollmentPack` in the widget's `uses` list before calling it.

#### Param

**input**

Enrollment-pack identifier.

#### Returns

The requested enrollment pack.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `getEnrollmentPack` is not declared, the identifier is invalid or unavailable, content access is unavailable, or the host call or response fails.

#### Example

```ts
const pack = await getEnrollmentPack({ id: 42 });
```

---

### getFullscreenState

> `const` **getFullscreenState**: [`PortalFunction`](#portalfunction-1)\<[`FullscreenState`](#fullscreenstate)\>

Gets fullscreen availability and state for the current widget mount.

#### Returns

The current [FullscreenState](#fullscreenstate).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unavailable, or rejected by the host.

#### Remarks

Declare `getFullscreenState` in `uses` and call it only after mount.

#### Example

```ts
const state = await getFullscreenState();
```

---

### getMemberAccess

> `const` **getMemberAccess**: [`PortalFunction`](#portalfunction-1)\<[`PortalMemberAccess`](#portalmemberaccess)\>

Gets access and permissions for the signed-in member.

#### Returns

The current [PortalMemberAccess](#portalmemberaccess).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unavailable, or rejected by the host.

#### Remarks

Declare `getMemberAccess` in `uses` and call it only after mount.

#### Example

```ts
const access = await getMemberAccess();
```

---

### getMySiteProfile

> `const` **getMySiteProfile**: [`PortalFunction`](#portalfunction-1)\<[`PortalMySiteProfile`](#portalmysiteprofile)\>

Gets the MySite profile for the signed-in member.

#### Returns

The current [PortalMySiteProfile](#portalmysiteprofile).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unavailable, or rejected by the host.

#### Remarks

Declare `getMySiteProfile` in `uses` and call it only after mount.

#### Example

```ts
const profile = await getMySiteProfile();
```

---

### getNavigationState

> `const` **getNavigationState**: [`PortalFunction`](#portalfunction-1)\<[`PortalNavigationState`](#portalnavigationstate)\>

Gets the current route and resolved navigation tree.

#### Returns

The current [PortalNavigationState](#portalnavigationstate).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unavailable, or rejected by the host.

#### Remarks

Declare `getNavigationState` in `uses` and call it only after mount.

#### Example

```ts
const navigation = await getNavigationState();
```

---

### getOrder

> `const` **getOrder**: (`input`) => `Promise`\<[`PortalOrder`](#portalorder)\>

Gets one order visible to the signed-in Portal user.

This capability exposes customer contact details, addresses, payment
summary, fulfillment details, and line items. The host requires an explicit
per-widget grant. Metafields are omitted unless `includeMetafields` is `true`.

#### Parameters

##### input

[`GetOrderInput`](#getorderinput)

Order routing token and optional metafield selection.

#### Returns

`Promise`\<[`PortalOrder`](#portalorder)\>

The complete order.

#### Throws

[PortalFunctionError](#portalfunctionerror) when the function is not declared or granted, the input is invalid, order access is unavailable, or the host call fails.

#### Example

```ts
const order = await getOrder({ token: page.items[0].token });
```

---

### getPage

> `const` **getPage**: [`PortalFunction`](#portalfunction-1)\<[`PortalPageDetail`](#portalpagedetail), [`GetPageInput`](#getpageinput)\>

Gets one content page and its share URL.

Declare `getPage` in the widget's `uses` list before calling it.

#### Param

**input**

Page identifier and optional content language.

#### Returns

The requested page and its share URL.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `getPage` is not declared, the input is invalid or unavailable, content access is unavailable, or the host call or response fails.

#### Example

```ts
const detail = await getPage({ id: 42, languageIso: "en" });
```

---

### getPlaylist

> `const` **getPlaylist**: [`PortalFunction`](#portalfunction-1)\<[`PortalPlaylist`](#portalplaylist), [`GetPlaylistInput`](#getplaylistinput)\>

Gets one content playlist by identifier.

Declare `getPlaylist` in the widget's `uses` list before calling it.

#### Param

**input**

Playlist identifier.

#### Returns

The requested playlist.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `getPlaylist` is not declared, the identifier is invalid or unavailable, content access is unavailable, or the host call or response fails.

#### Example

```ts
const playlist = await getPlaylist({ id: 42 });
```

---

### getPointsLedger

> `const` **getPointsLedger**: [`PortalFunction`](#portalfunction-1)\<[`PortalPointsLedger`](#portalpointsledger)\>

Gets the reward-points ledger for the signed-in member.

#### Returns

The current [PortalPointsLedger](#portalpointsledger).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unavailable, or rejected by the host.

#### Remarks

Declare `getPointsLedger` in `uses` and call it only after mount.

#### Example

```ts
const ledger = await getPointsLedger();
```

---

### getPortalApp

> `const` **getPortalApp**: [`PortalFunction`](#portalfunction-1)\<[`PortalAppSummary`](#portalappsummary)\>

Gets the current Portal Definition summary.

#### Returns

The current [PortalAppSummary](#portalappsummary).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unavailable, or rejected by the host.

#### Remarks

Declare `getPortalApp` in `uses` and call it only after mount.

#### Example

```ts
const app = await getPortalApp();
```

---

### getPortalProfile

> `const` **getPortalProfile**: [`PortalFunction`](#portalfunction-1)\<[`PortalProfileSummary`](#portalprofilesummary)\>

Gets the active Portal profile summary.

#### Returns

The active [PortalProfileSummary](#portalprofilesummary).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unavailable, or rejected by the host.

#### Remarks

Declare `getPortalProfile` in `uses` and call it only after mount.

#### Example

```ts
const profile = await getPortalProfile();
```

---

### getProduct

> `const` **getProduct**: [`PortalFunction`](#portalfunction-1)\<[`PortalProduct`](#portalproduct), [`GetProductInput`](#getproductinput)\>

Gets one product by identifier.

Declare `getProduct` in the widget's `uses` list before calling it.

#### Param

**input**

Product identifier.

#### Returns

The requested product.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `getProduct` is not declared, the identifier is invalid or unavailable, the products capability is unavailable, or the host call or response fails.

#### Example

```ts
const product = await getProduct({ id: 42 });
```

---

### getStore

> `const` **getStore**: [`PortalFunction`](#portalfunction-1)\<[`PortalStore`](#portalstore)\>

Gets the store that owns the mounted Portal.

#### Returns

The current [PortalStore](#portalstore).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unavailable, or rejected by the host.

#### Remarks

Declare `getStore` in `uses` and call it only after mount.

#### Example

```ts
const store = await getStore();
```

---

### getUserAccount

> `const` **getUserAccount**: [`PortalFunction`](#portalfunction-1)\<[`UserAccount`](#useraccount)\>

Gets the signed-in account from the mounted Portal host.

#### Returns

The current [UserAccount](#useraccount).

#### Throws

[PortalFunctionError](#portalfunctionerror) when the function is undeclared, unavailable, or fails in the host.

#### Remarks

Declare `getUserAccount` in the widget's `uses` list. Call it only after the widget mounts.

#### Example

```ts
const account = await getUserAccount();
```

---

### listCalendarEvents

> `const` **listCalendarEvents**: [`PortalFunction`](#portalfunction-1)\<readonly [`PortalCalendarEvent`](#portalcalendarevent)[]\>

Lists calendar events visible to the signed-in Portal user.

Declare `listCalendarEvents` in the widget's `uses` list before calling it.

#### Returns

All events supplied by the Portal calendar capability.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listCalendarEvents` is not declared, the calendar capability is unavailable, or the host call or response fails.

#### Example

```ts
const events = await listCalendarEvents();
```

---

### listContentMedia

> `const` **listContentMedia**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalMedia`](#portalmedia)\>, [`ListContentMediaInput`](#listcontentmediainput)\>

Lists media from the Portal content library.

Declare `listContentMedia` in the widget's `uses` list before calling it.

#### Param

**input**

Optional filters, localization, ordering, and cursor pagination.

#### Returns

A page of content media and a cursor for the next page.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listContentMedia` is not declared, the input is invalid, content access is unavailable, or the host call or response fails.

#### Example

```ts
const media = await listContentMedia({ contentFormat: "video", limit: 20 });
```

---

### listContentMediaProducts

> `const` **listContentMediaProducts**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalMediaProduct`](#portalmediaproduct)\>, [`ListContentMediaProductsInput`](#listcontentmediaproductsinput)\>

Lists products associated with one content-media record.

#### Param

**input**

Media identifier, pagination, and optional locale.

#### Returns

A page of associated products.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `listContentMediaProducts` in `uses` and call it only after mount.

#### Example

```ts
const products = await listContentMediaProducts({ mediaId: 12, limit: 20 });
```

---

### listContentMetrics

> `const` **listContentMetrics**: [`PortalFunction`](#portalfunction-1)\<readonly [`PortalMetric`](#portalmetric)[], [`ListContentMetricsInput`](#listcontentmetricsinput)\>

Lists visit metrics for Portal content resources.

Declare `listContentMetrics` in the widget's `uses` list before calling it.

#### Param

**input**

Resource, metric kind, and optional aggregation settings.

#### Returns

Metric totals grouped by content resource.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listContentMetrics` is not declared, the input is invalid, content metrics are unavailable, or the host call or response fails.

#### Example

```ts
const metrics = await listContentMetrics({
  resource: "media",
  kind: "shareVisits",
  period: "30d",
});
```

---

### listCountries

> `const` **listCountries**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalCountry`](#portalcountry)\>, [`ListCountriesInput`](#listcountriesinput)\>

Lists countries and their states in the requested language.

Declare `listCountries` in the widget's `uses` list before calling it.

`cursor` and `limit` remain accepted for compatibility but are ignored by the
Portal tenant adapter.

#### Param

**input**

Optional localization and legacy cursor pagination.

#### Returns

All countries with a `null` next cursor.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listCountries` is not declared, the input is invalid, the localization capability is unavailable, or the host call or response fails.

#### Example

```ts
const page = await listCountries({ languageIso: "en" });
```

---

### listDamAssetPaths

> `const` **listDamAssetPaths**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalDamAssetPath`](#portaldamassetpath)\>, [`ListDamAssetPathsInput`](#listdamassetpathsinput)\>

Lists accessible paths for one digital asset.

Declare `listDamAssetPaths` in the widget's `uses` list before calling it.

#### Param

**input**

Asset code and optional cursor pagination.

#### Returns

A page of asset paths and a cursor for the next page.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listDamAssetPaths` is not declared, the input or asset code is invalid, digital-asset access is unavailable, or the host call or response fails.

#### Example

```ts
const paths = await listDamAssetPaths({ assetCode: "hero-image", limit: 20 });
```

---

### listDamAssets

> `const` **listDamAssets**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalDamAsset`](#portaldamasset)\>, [`PortalPageInput`](#portalpageinput)\>

Lists digital assets available from the Portal content library.

Declare `listDamAssets` in the widget's `uses` list before calling it.

#### Param

**input**

Optional cursor pagination.

#### Returns

A page of digital assets and a cursor for the next page.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listDamAssets` is not declared, the input is invalid, digital-asset access is unavailable, or the host call or response fails.

#### Example

```ts
const assets = await listDamAssets({ limit: 20 });
```

---

### listEnrollmentPacks

> `const` **listEnrollmentPacks**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalEnrollmentPack`](#portalenrollmentpack)\>, [`PortalPageInput`](#portalpageinput)\>

Lists enrollment packs available in the Portal content library.

Declare `listEnrollmentPacks` in the widget's `uses` list before calling it.

#### Param

**input**

Optional cursor pagination.

#### Returns

A page of enrollment packs and a cursor for the next page.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listEnrollmentPacks` is not declared, the input is invalid, content access is unavailable, or the host call or response fails.

#### Example

```ts
const packs = await listEnrollmentPacks({ limit: 20 });
```

---

### listLanguages

> `const` **listLanguages**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalLanguage`](#portallanguage)\>, [`PortalPageInput`](#portalpageinput)\>

Lists languages available in the current Portal.

Declare `listLanguages` in the widget's `uses` list before calling it.

#### Param

**input**

Optional cursor pagination.

#### Returns

A page of available languages and a cursor for the next page.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listLanguages` is not declared, the input is invalid, the localization capability is unavailable, or the host call or response fails.

#### Example

```ts
const languages = await listLanguages({ limit: 20 });
```

---

### listMySiteFavorites

> `const` **listMySiteFavorites**: [`PortalFunction`](#portalfunction-1)\<readonly [`PortalMySiteFavorite`](#portalmysitefavorite)[]\>

Lists product favorites on the signed-in member's MySite.

#### Returns

Favorites in display order.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unavailable, or rejected by the host.

#### Remarks

Declare `listMySiteFavorites` in `uses` and call it only after mount.

#### Example

```ts
const favorites = await listMySiteFavorites();
```

---

### listMySiteLinks

> `const` **listMySiteLinks**: [`PortalFunction`](#portalfunction-1)\<readonly [`PortalMySiteLink`](#portalmysitelink)[]\>

Lists links on the signed-in member's MySite.

#### Returns

MySite links in display order.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unavailable, or rejected by the host.

#### Remarks

Declare `listMySiteLinks` in `uses` and call it only after mount.

#### Example

```ts
const links = await listMySiteLinks();
```

---

### listMySiteThemes

> `const` **listMySiteThemes**: [`PortalFunction`](#portalfunction-1)\<readonly [`PortalMySiteTheme`](#portalmysitetheme)[]\>

Lists themes available to the signed-in member's MySite.

#### Returns

Available [PortalMySiteTheme](#portalmysitetheme) records.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unavailable, or rejected by the host.

#### Remarks

Declare `listMySiteThemes` in `uses` and call it only after mount.

#### Example

```ts
const themes = await listMySiteThemes();
```

---

### listOrders

> `const` **listOrders**: (`input`) => `Promise`\<[`PortalPage`](#portalpage)\<[`PortalOrderSummary`](#portalordersummary)\>\>

Lists orders visible to the signed-in Portal user.

This capability exposes customer contact details and order history. The host
requires an explicit per-widget grant before the call can run. Metafields are
omitted unless `includeMetafields` is `true`.

#### Parameters

##### input

[`ListOrdersInput`](#listordersinput)

Optional order filters, pagination, and metafield selection.

#### Returns

`Promise`\<[`PortalPage`](#portalpage)\<[`PortalOrderSummary`](#portalordersummary)\>\>

A page of orders and a cursor for the next page.

#### Throws

[PortalFunctionError](#portalfunctionerror) when the function is not declared or granted, the input is invalid, order access is unavailable, or the host call fails.

#### Example

```ts
const page = await listOrders({ status: "completed", limit: 20 });
```

---

### listPages

> `const` **listPages**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalPageContent`](#portalpagecontent)\>, [`ListPagesInput`](#listpagesinput)\>

Lists content pages available to the signed-in Portal user.

Declare `listPages` in the widget's `uses` list before calling it.

#### Param

**input**

Optional filters, localization, ordering, and cursor pagination.

#### Returns

A page of content-page summaries and a cursor for the next page.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listPages` is not declared, the input is invalid, content access is unavailable, or the host call or response fails.

#### Example

```ts
const pages = await listPages({ sort: "title_asc", limit: 20 });
```

---

### listPlaylistItems

> `const` **listPlaylistItems**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalPlaylistItem`](#portalplaylistitem)\>, [`ListPlaylistItemsInput`](#listplaylistitemsinput)\>

Lists the ordered items in a content playlist.

Declare `listPlaylistItems` in the widget's `uses` list before calling it.

#### Param

**input**

Playlist identifier, optional language, and cursor pagination.

#### Returns

A page of playlist items and a cursor for the next page.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listPlaylistItems` is not declared, the input is invalid, the playlist is unavailable, content access is unavailable, or the host call or response fails.

#### Example

```ts
const items = await listPlaylistItems({ playlistId: 42, limit: 20 });
```

---

### listPlaylists

> `const` **listPlaylists**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalPlaylist`](#portalplaylist)\>, [`ListPlaylistsInput`](#listplaylistsinput)\>

Lists playlists from the Portal content library.

Declare `listPlaylists` in the widget's `uses` list before calling it.

#### Param

**input**

Optional filters, ordering, and cursor pagination.

#### Returns

A page of playlists and a cursor for the next page.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listPlaylists` is not declared, the input is invalid, content access is unavailable, or the host call or response fails.

#### Example

```ts
const playlists = await listPlaylists({ ownership: "company", limit: 20 });
```

---

### listProductMedia

> `const` **listProductMedia**: [`PortalFunction`](#portalfunction-1)\<readonly [`PortalProductMedia`](#portalproductmedia)[], [`ListProductMediaInput`](#listproductmediainput)\>

Lists media associated with a product.

Declare `listProductMedia` in the widget's `uses` list before calling it.

#### Param

**input**

Product identifier.

#### Returns

The product's media items.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listProductMedia` is not declared, the product identifier is invalid or unavailable, the products capability is unavailable, or the host call or response fails.

#### Example

```ts
const media = await listProductMedia({ productId: 42 });
```

---

### listProductMetrics

> `const` **listProductMetrics**: [`PortalFunction`](#portalfunction-1)\<readonly [`PortalMetric`](#portalmetric)[], [`ListProductMetricsInput`](#listproductmetricsinput)\>

Lists visit metrics for products.

Declare `listProductMetrics` in the widget's `uses` list before calling it.

#### Param

**input**

Metric kind, optional period, and optional result limit.

#### Returns

Metric totals grouped by product.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listProductMetrics` is not declared, the input is invalid, product metrics are unavailable, or the host call or response fails.

#### Example

```ts
const metrics = await listProductMetrics({ kind: "visits", period: "30d" });
```

---

### listProducts

> `const` **listProducts**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalProduct`](#portalproduct)\>, [`ListProductsInput`](#listproductsinput)\>

Lists products available in the current Portal.

Declare `listProducts` in the widget's `uses` list before calling it.

#### Param

**input**

Optional ordering and cursor pagination.

#### Returns

A page of products and a cursor for the next page.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listProducts` is not declared, the input is invalid, the products capability is unavailable, or the host call or response fails.

#### Example

```ts
const products = await listProducts({ sort: "title_asc", limit: 20 });
```

---

### listShares

> `const` **listShares**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalShare`](#portalshare)\>, [`PortalPageInput`](#portalpageinput)\>

Lists share records created by the signed-in Portal user.

Declare `listShares` in the widget's `uses` list before calling it.

#### Param

**input**

Optional cursor pagination.

#### Returns

A page of share records and a cursor for the next page.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `listShares` is not declared, the input is invalid, content access is unavailable, or the host call or response fails.

#### Example

```ts
const shares = await listShares({ limit: 20 });
```

---

### listTodos

> `const` **listTodos**: [`PortalFunction`](#portalfunction-1)\<readonly [`PortalTodoSummary`](#portaltodosummary)[], [`ListTodosInput`](#listtodosinput)\>

Lists todos for the signed-in member.

#### Param

**input**

Optional completion-state filter.

#### Returns

Todo summaries matching the filter.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `listTodos` in `uses` and call it only after mount.

#### Example

```ts
const todos = await listTodos({ state: "incomplete" });
```

---

### navigateTo

> `const` **navigateTo**: [`PortalFunction`](#portalfunction-1)\<`void`, [`PortalNavigationTarget`](#portalnavigationtarget)\>

Navigates the mounted Portal to a target.

#### Param

**target**

Screen slug, href, or shorthand string target.

#### Returns

A promise that resolves after the host accepts the navigation.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `navigateTo` in `uses`. It changes host navigation and requires a mounted widget.

#### Example

```ts
await navigateTo({ slug: "shop" });
```

---

### networkAccess

> `const` **networkAccess**: [`DeclarativeCapabilityUse`](#declarativecapabilityuse)

Declares that a widget can make direct network requests.
Add this marker to the widget's `uses` list. The portal host can require user
consent before mounting a package that declares network access. This marker
does not bypass browser CORS, Content Security Policy, or host network policy.

#### Example

```ts
const widget = defineWidget({
  name: "remote-data",
  component: RemoteData,
  uses: [networkAccess],
});
```

---

### PORTAL_ORDER_LIST_STATUSES

> `const` **PORTAL_ORDER_LIST_STATUSES**: readonly \[`"draft"`, `"pending"`, `"pending_review"`, `"processing"`, `"completed"`, `"cancelled"`, `"archived"`\]

Order statuses accepted by the Portal tenant order-list endpoint.

---

### removeContentMediaProduct

> `const` **removeContentMediaProduct**: [`PortalFunction`](#portalfunction-1)\<`null`, [`RemoveContentMediaProductInput`](#removecontentmediaproductinput)\>

Removes a product association from content media.

#### Param

**input**

Media and product identifiers.

#### Returns

`null` after removal.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `removeContentMediaProduct` in `uses`. This mutates host content after mount.

#### Example

```ts
await removeContentMediaProduct({ mediaId: 12, productId: 42 });
```

---

### removeContentPlaylistItem

> `const` **removeContentPlaylistItem**: [`PortalFunction`](#portalfunction-1)\<`null`, [`RemoveContentPlaylistItemInput`](#removecontentplaylistiteminput)\>

Removes an item from a content playlist.

#### Param

**input**

Playlist and playlist-item identifiers.

#### Returns

`null` after removal.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `removeContentPlaylistItem` in `uses`. This mutates host content after mount.

#### Example

```ts
await removeContentPlaylistItem({ playlistId: 5, itemId: 8 });
```

---

### reorderContentPlaylistItems

> `const` **reorderContentPlaylistItems**: [`PortalFunction`](#portalfunction-1)\<`null`, [`ReorderContentPlaylistItemsInput`](#reordercontentplaylistitemsinput)\>

Replaces the item order of a content playlist.

#### Param

**input**

Playlist identifier and item-order pairs.

#### Returns

`null` after reordering.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `reorderContentPlaylistItems` in `uses`. Send the complete desired order after mount.

#### Example

```ts
await reorderContentPlaylistItems({
  playlistId: 5,
  items: [{ id: 8, order: 0 }],
});
```

---

### reorderMySiteFavorites

> `const` **reorderMySiteFavorites**: [`PortalFunction`](#portalfunction-1)\<readonly [`PortalMySiteFavorite`](#portalmysitefavorite)[], [`ReorderMySiteFavoritesInput`](#reordermysitefavoritesinput)\>

Replaces the display order of all MySite favorites.

#### Param

**input**

Favorite identifiers in the desired order.

#### Returns

Updated favorites in display order.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `reorderMySiteFavorites` in `uses`. Supply the complete order after mount.

#### Example

```ts
const favorites = await reorderMySiteFavorites({ orderedIds: [9, 4] });
```

---

### reorderMySiteLinks

> `const` **reorderMySiteLinks**: [`PortalFunction`](#portalfunction-1)\<readonly [`PortalMySiteLink`](#portalmysitelink)[], [`ReorderMySiteLinksInput`](#reordermysitelinksinput)\>

Replaces the display order of all MySite links.

#### Param

**input**

Link identifiers in the desired order.

#### Returns

Updated links in display order.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `reorderMySiteLinks` in `uses`. Supply the complete order after mount.

#### Example

```ts
const links = await reorderMySiteLinks({ orderedIds: [7, 3] });
```

---

### requestFullscreen

> `const` **requestFullscreen**: [`PortalFunction`](#portalfunction-1)\<`void`\>

Requests fullscreen for the current widget mount.

#### Returns

A promise that resolves when the host completes the request.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, unsupported, unavailable, or rejected by the host.

#### Remarks

Declare `requestFullscreen` in `uses`. Browser policy can require a user gesture.

#### Example

```ts
await requestFullscreen();
```

---

### searchProducts

> `const` **searchProducts**: [`PortalFunction`](#portalfunction-1)\<[`PortalPage`](#portalpage)\<[`PortalProduct`](#portalproduct)\>, [`SearchProductsInput`](#searchproductsinput)\>

Searches products using Portal product search.

Declare `searchProducts` in the widget's `uses` list before calling it.

#### Param

**input**

Search text and optional cursor pagination.

#### Returns

A page of matching products and a cursor for the next page.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `searchProducts` is not declared, the input is invalid, product search is unavailable, or the host call or response fails.

#### Example

```ts
const matches = await searchProducts({ query: "starter kit", limit: 10 });
```

---

### toggleContentFavorite

> `const` **toggleContentFavorite**: [`PortalFunction`](#portalfunction-1)\<[`PortalContentFavoriteState`](#portalcontentfavoritestate), [`ToggleContentFavoriteInput`](#togglecontentfavoriteinput)\>

Toggles the signed-in member's favorite state for content.

#### Param

**input**

Favorite resource kind and identifier.

#### Returns

The resulting [PortalContentFavoriteState](#portalcontentfavoritestate).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `toggleContentFavorite` in `uses`. This mutates host data after mount.

#### Example

```ts
const state = await toggleContentFavorite({
  favoriteableType: "Medium",
  favoriteableId: 12,
});
```

---

### updateContentMedia

> `const` **updateContentMedia**: [`PortalFunction`](#portalfunction-1)\<[`PortalMedia`](#portalmedia), [`UpdateContentMediaInput`](#updatecontentmediainput)\>

Updates an existing content-media record.

#### Param

**input**

Media identifier and fields to replace.

#### Returns

The updated [PortalMedia](#portalmedia).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `updateContentMedia` in `uses`. This mutates host content after mount.

#### Example

```ts
const media = await updateContentMedia({ id: 12, title: "Updated guide" });
```

---

### updateContentPlaylist

> `const` **updateContentPlaylist**: [`PortalFunction`](#portalfunction-1)\<[`PortalPlaylist`](#portalplaylist), [`UpdateContentPlaylistInput`](#updatecontentplaylistinput)\>

Updates a content playlist.

#### Param

**input**

Playlist identifier and fields to replace.

#### Returns

The updated [PortalPlaylist](#portalplaylist).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `updateContentPlaylist` in `uses`. This mutates host content after mount.

#### Example

```ts
const playlist = await updateContentPlaylist({ id: 5, title: "New launch" });
```

---

### updateMySiteLink

> `const` **updateMySiteLink**: [`PortalFunction`](#portalfunction-1)\<[`PortalMySiteLink`](#portalmysitelink), [`UpdateMySiteLinkInput`](#updatemysitelinkinput)\>

Updates a link on the signed-in member's MySite.

#### Param

**input**

Link identifier and fields to replace.

#### Returns

The updated [PortalMySiteLink](#portalmysitelink).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `updateMySiteLink` in `uses`. This mutates host data after mount.

#### Example

```ts
const link = await updateMySiteLink({ id: 7, title: "New title" });
```

---

### updateMySiteProfile

> `const` **updateMySiteProfile**: [`PortalFunction`](#portalfunction-1)\<[`PortalMySiteProfile`](#portalmysiteprofile), [`UpdateMySiteProfileInput`](#updatemysiteprofileinput)\>

Updates editable MySite profile fields.

#### Param

**input**

Profile fields to update.

#### Returns

The updated [PortalMySiteProfile](#portalmysiteprofile).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `updateMySiteProfile` in `uses`. This mutates host data after mount.

#### Example

```ts
const profile = await updateMySiteProfile({ displayName: "Ari" });
```

---

### updateMySiteSettings

> `const` **updateMySiteSettings**: [`PortalFunction`](#portalfunction-1)\<`null`, [`UpdateMySiteSettingsInput`](#updatemysitesettingsinput)\>

Updates MySite publication settings.

#### Param

**input**

Theme or public slug settings to update.

#### Returns

`null` after the host applies the settings.

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `updateMySiteSettings` in `uses`. This mutates host data after mount.

#### Example

```ts
await updateMySiteSettings({ themeId: 42 });
```

---

### updateUserAccount

> `const` **updateUserAccount**: [`PortalFunction`](#portalfunction-1)\<[`UserAccount`](#useraccount), [`UpdateUserAccountInput`](#updateuseraccountinput)\>

Updates editable fields on the signed-in account.

#### Param

**input**

Account fields to update.

#### Returns

The updated [UserAccount](#useraccount).

#### Throws

[PortalFunctionError](#portalfunctionerror) when undeclared, invalid, unavailable, or rejected by the host.

#### Remarks

Declare `updateUserAccount` in `uses`. This mutates host account data after mount.

#### Example

```ts
const account = await updateUserAccount({ bio: "Hello" });
```

## Functions

### definePortalFunction()

> **definePortalFunction**\<`Output`, `Input`\>(`definition`, ...`_contractErrors`): [`PortalFunction`](#portalfunction-1)\<`Output`, `Input`\>

Defines a typed Portal function backed by a versioned host capability.
Widgets must include the returned function in `defineWidget({ uses: [...] })`
before calling it. Inputs and outputs must contain only JSON values.

#### Type Parameters

##### Output

`Output`

##### Input

`Input` = `void`

#### Parameters

##### definition

[`PortalFunctionDefinition`](#portalfunctiondefinition)

Stable capability, version, and method identity.

##### \_contractErrors

...`PortalFunctionContractErrors`\<`Output`, `Input`\>

#### Returns

[`PortalFunction`](#portalfunction-1)\<`Output`, `Input`\>

An async worker callable that rejects with [PortalFunctionError](#portalfunctionerror).

#### Throws

[PortalFunctionError](#portalfunctionerror) when a call is not mounted or declared, has invalid input, is unsupported or unavailable, fails in the host, or returns an invalid response.

#### Remarks

Define functions during module initialization. Both input and output types must contain only JSON-compatible values.

#### Example

```ts
const getGreeting = definePortalFunction<string>({
  capability: "greeting",
  version: "1",
  method: "get",
});
```

---

### defineWidget()

> **defineWidget**\<`Name`, `Props`\>(`options`): [`SourceWidget`](#sourcewidget)\<`Name`, `Props`\>

Defines one widget and derives its enforced capability declarations.

#### Type Parameters

##### Name

`Name` _extends_ `string`

##### Props

`Props` = `Readonly`\<`Record`\<`string`, `JsonValue`\>\>

#### Parameters

##### options

[`DefineWidgetOptions`](#definewidgetoptions)\<`Name`, `Props`\>

Component, builder metadata, defaults, property schema, and typed capability uses.

#### Returns

[`SourceWidget`](#sourcewidget)\<`Name`, `Props`\>

The normalized widget used by [defineWidgetPackage](#definewidgetpackage).

#### Throws

If `uses` contains an invalid entry or conflicting capability versions.

#### Remarks

Call during worker module initialization. Default props and property values must cross the worker boundary as JSON values. Every Portal function the component calls must appear in `uses`.

#### Example

```tsx
const greeting = defineWidget({
  name: "greeting",
  displayName: "Greeting",
  component: Greeting,
  defaultProps: { message: "Hello" },
  uses: [getUserAccount],
});
```

---

### defineWidgetPackage()

> **defineWidgetPackage**\<`Scope`, `StableId`\>(`options`): [`SourceWidgetPackage`](#sourcewidgetpackage)\<`Scope`, `StableId`\>

Defines a company- or droplet-owned widget package.

#### Type Parameters

##### Scope

`Scope` _extends_ `string`

##### StableId

`StableId` _extends_ `string`

#### Parameters

##### options

[`DefineWidgetPackageOptions`](#definewidgetpackageoptions)\<`Scope`, `StableId`\>

Package identity, SemVer version, widgets, and optional runtime stylesheets.

#### Returns

[`SourceWidgetPackage`](#sourcewidgetpackage)\<`Scope`, `StableId`\>

A canonical source package descriptor. Build and dev replace runtime artifact URLs.

#### Throws

If a company package omits `packageStableId`.

#### Remarks

Define one package during worker module initialization. Company packages require a stable company identifier; Droplet publication can inject its stable identifier through the CLI.

#### Example

```ts
const widgetPackage = defineWidgetPackage({
  scope: "acme",
  packageStableId: "company-public-id",
  version: "1.0.0",
  widgets: [greeting],
});
```

---

### FluidSpacerWidget()

> **FluidSpacerWidget**(`props`): `ReactElement`

Renders a Portal spacer inside a Remote DOM widget.

#### Parameters

##### props

[`FluidSpacerWidgetProps`](#fluidspacerwidgetprops)

Spacer height and preview state.

#### Returns

`ReactElement`

A worker-safe React element backed by the Portal custom element.

#### Remarks

Render this component only inside a started Remote DOM widget worker. The Portal host determines the final layout behavior.

#### Example

```tsx
<FluidSpacerWidget customHeight={24} />
```

---

### implementPortalFunction()

> **implementPortalFunction**\<`Output`, `Input`\>(`portalFunction`, `handler`): [`PortalFunctionImplementation`](#portalfunctionimplementation)

Binds a host handler to a function created by [definePortalFunction](#defineportalfunction).

#### Type Parameters

##### Output

`Output`

##### Input

`Input` = `void`

#### Parameters

##### portalFunction

[`PortalFunction`](#portalfunction-1)\<`Output`, `Input`\>

Defined function whose metadata identifies the capability.

##### handler

[`PortalFunctionHandler`](#portalfunctionhandler)\<`NoInfer`\<`Output`\>, `NoInfer`\<`Input`\>\>

Host handler with the same input and output contract.

#### Returns

[`PortalFunctionImplementation`](#portalfunctionimplementation)

The definition, callable, and handler as one implementation record.

#### Throws

[PortalFunctionError](#portalfunctionerror) when `portalFunction` was not created by `definePortalFunction`.

#### Remarks

This registration helper is for capability implementations. Widget components call the defined Portal function instead.

#### Example

```ts
const implementation = implementPortalFunction(getGreeting, () => "Hello");
```

---

### prepareRemoteDomWidgetWorker()

> **prepareRemoteDomWidgetWorker**(): `void`

#### Returns

`void`

---

### SearchSort()

> **SearchSort**(`props`): `ReactElement`

Renders the Portal-provided search and sort control in a Remote DOM widget.

#### Parameters

##### props

[`SearchSortProps`](#searchsortprops)

Search, sort, option, and change-handler configuration.

#### Returns

`ReactElement`

A worker-safe React element backed by the Portal custom element.

#### Remarks

Render this component only inside a started Remote DOM widget worker. The Portal host owns its visual implementation.

#### Example

```tsx
<SearchSort
  searchValue={query}
  placeholder="Search products"
  onSearchChange={setQuery}
/>
```

---

### startWidgetPackage()

> **startWidgetPackage**(`widgetPackage`): [`RemoteDomWidgetWorkerController`](#remotedomwidgetworkercontroller)

Starts one Remote DOM worker containing every widget in the source package.

#### Parameters

##### widgetPackage

[`SourceWidgetPackage`](#sourcewidgetpackage)\<`string`, `string`\> \| [`StartWidgetPackageOptions`](#startwidgetpackageoptions)

A source package or generated runtime widget list.

#### Returns

[`RemoteDomWidgetWorkerController`](#remotedomwidgetworkercontroller)

A controller that owns the worker connection and registered widget definitions.

#### Throws

If generated widgets cannot be matched to an unambiguous source `uses` declaration.

#### Remarks

Call once from the worker entry after all widgets and the package are defined. The returned controller owns the active Remote DOM connection.

#### Example

```ts
startWidgetPackage(widgetPackage);
```
