Skip to main content

State

Overview

Provides key-value storage for apps so that app developers can persist and get small chunks of state in the context of their app.

States can either be stored in the context of an app (= app states) or in the context of an app and user (= user app states).

  • States stored per app can be read by every user of the app.
  • States stored per app and user can only be read and updated by the user who originally set that state. Please visit the Dynatrace Developer to learn more about app states and user app states.
npm install @dynatrace-sdk/client-state

stateClient

import { stateClient } from "@dynatrace-sdk/client-state";

deleteAppState

stateClient.deleteAppState(config): Promise<void>

Deletes app state

Required scope: state:app-states:delete

Parameters

NameTypeDescription
config.key*requiredstringSpecify the key of the state

{/ no returns /}

Code example
import { stateClient } from "@dynatrace-sdk/client-state";

const data = await stateClient.deleteAppState({
key: "some-key",
});

deleteAppStates

stateClient.deleteAppStates(abortSignal?): Promise<void>

Delete all app states

Required scope: state:app-states:delete

Deletes all app states for an app to reset the app into a clean state.

{/ no parameters /}

{/ no returns /}

Code example
import { stateClient } from "@dynatrace-sdk/client-state";

const data = await stateClient.deleteAppStates();

deleteUserAppState

stateClient.deleteUserAppState(config): Promise<void>

Delete user app state

Required scope: state:user-app-states:delete

Parameters

NameTypeDescription
config.key*requiredstringSpecify the key of the state

{/ no returns /}

Code example
import { stateClient } from "@dynatrace-sdk/client-state";

const data = await stateClient.deleteUserAppState({
key: "some-key",
});

deleteUserAppStates

stateClient.deleteUserAppStates(abortSignal?): Promise<void>

Delete all user app states

Required scope: state:user-app-states:delete

Deletes all user app states for the calling user and app.

{/ no parameters /}

{/ no returns /}

Code example
import { stateClient } from "@dynatrace-sdk/client-state";

const data = await stateClient.deleteUserAppStates();

getAppState

stateClient.getAppState(config): Promise<AppState>

Gets app state

Required scope: state:app-states:read

Parameters

NameTypeDescription
config.key*requiredstringSpecify the key of the state

Returns

The app state

Code example
import { stateClient } from "@dynatrace-sdk/client-state";

const data = await stateClient.getAppState({
key: "some-key",
});

getAppStates

stateClient.getAppStates(config): Promise<AppStates>

List app states

Required scope: state:app-states:read

Lists app states. By default, only provides property key per state. Use add-fields parameter to include more fields and the filter parameter to narrow down the returned states.

Parameters

NameTypeDescription
config.addFieldsstringProvide a comma separated list of additional properties to be included in the response.
config.filterstring

The filter parameter for filtering the set of returned resources If this parameter is omitted, no filtering is applied and all states will be returned.

Filtering by string type parameters key, modificationInfo.lastModifiedBy when using one of the operators contains, starts-with and ends-with is case insensitive.

When using the operators =and !=, filtering is case sensitive.

The following fields are legal filtering parameters - any other field names will result in a HTTP 400 response:

  • key, supported operators: =, !=, contains, starts-with, ends-with:

  • modificationInfo.lastModifiedTime, supported operators: =, !=, <, <=, >, >=

  • modificationInfo.lastModifiedBy, supported operators: =, !=, contains, starts-with, ends-with

  • validUntilTime, supported operators: =, !=, <, <=, >, >=

The following constraints apply:

  • Field names are case-sensitive.

  • Conditions can be connected via operators and and or. A single condition can be negated by not.

  • Strings must be enclosed in single quotes. e.g. key contains 'my-string'

  • Single quotes within a string must be escaped with a backslash: e.g. key starts-with 'it\'s a string'

  • Maximum nesting depth (via brackets) is 2.

  • Maximum length is 256 characters.

Examples:

  • key starts-with 'game-'

  • modificationInfo.lastModifiedTime >= '2022-07-01T00:10:05.000Z' and not (key contains 'new')

Returns

The list of app states

Code example
import { stateClient } from "@dynatrace-sdk/client-state";

const data = await stateClient.getAppStates();

getUserAppState

stateClient.getUserAppState(config): Promise<UserAppState>

Get user app state

Required scope: state:user-app-states:read

Parameters

NameTypeDescription
config.key*requiredstringSpecify the key of the state

Returns

The user app state

Code example
import { stateClient } from "@dynatrace-sdk/client-state";

const data = await stateClient.getUserAppState({
key: "some-key",
});

getUserAppStates

stateClient.getUserAppStates(config): Promise<UserAppStates>

List user app states

Required scope: state:user-app-states:read

Lists user app states. By default, only provides property key per state. Use add-fields parameter to include more fields and the filter parameter to narrow down the returned states

Parameters

NameTypeDescription
config.addFieldsstringProvide a comma separated list of additional properties to be included in the response.
config.filterstring

The filter parameter for filtering the set of returned resources If this parameter is omitted, no filtering is applied and all states will be returned.

Filtering by string type parameters key, modificationInfo.lastModifiedBy when using one of the operators contains, starts-with and ends-with is case insensitive.

When using the operators =and !=, filtering is case sensitive.

The following fields are legal filtering parameters - any other field names will result in a HTTP 400 response:

  • key, supported operators: =, !=, contains, starts-with, ends-with:

  • modificationInfo.lastModifiedTime, supported operators: =, !=, <, <=, >, >=

  • modificationInfo.lastModifiedBy, supported operators: =, !=, contains, starts-with, ends-with

  • validUntilTime, supported operators: =, !=, <, <=, >, >=

The following constraints apply:

  • Field names are case-sensitive.

  • Conditions can be connected via operators and and or. A single condition can be negated by not.

  • Strings must be enclosed in single quotes. e.g. key contains 'my-string'

  • Single quotes within a string must be escaped with a backslash: e.g. key starts-with 'it\'s a string'

  • Maximum nesting depth (via brackets) is 2.

  • Maximum length is 256 characters.

Examples:

  • key starts-with 'game-'

  • modificationInfo.lastModifiedTime >= '2022-07-01T00:10:05.000Z' and not (key contains 'new')

Returns

The list of user app states

Code example
import { stateClient } from "@dynatrace-sdk/client-state";

const data = await stateClient.getUserAppStates();

setAppState

stateClient.setAppState(config): Promise<void>

Updates app state

Required scope: state:app-states:write

Updates the cross-user app state for the given key. Be aware that other users will be able to read the value. Use the user-scoped user-app-state to only store values for the authenticated user.

Certain limits apply when updating app states.

Parameters

NameTypeDescription
config.body*requiredAppState
config.key*requiredstringSpecify the key of the state

{/ no returns /}

Code example
import { stateClient } from "@dynatrace-sdk/client-state";

const data = await stateClient.setAppState({
key: "some-key",
body: { value: "some-state", validUntilTime: "now+2d" },
});

setUserAppState

stateClient.setUserAppState(config): Promise<void>

Updates user app state

Required scope: state:user-app-states:write

Updates the user specific app state for the given key and calling user.

Certain limits apply when updating user app states.

Parameters

NameTypeDescription
config.body*requiredUserAppState
config.key*requiredstringSpecify the key of the state

{/ no returns /}

Code example
import { stateClient } from "@dynatrace-sdk/client-state";

const data = await stateClient.setUserAppState({
key: "some-key",
body: { value: "some-state", validUntilTime: "now+2d" },
});

Types

AppState

NameTypeDescription
modificationInfoModificationInfo
validUntilTimenull | stringSpecify the date until the state is persisted. Allowed are values from now+1m to now+90d! Returned validUntilTimes are always a string formatted in ISO 8601
value*requiredstring

AppStates

extends Array<ListAppState>

NameTypeDescription
length*requirednumberGets or sets the length of the array. This is a number one higher than the highest index in the array.

Error

NameType
code*requirednumber
message*requiredstring

ErrorResponse

NameType
error*requiredError

ListAppState

NameTypeDescription
key*requiredstring
modificationInfoModificationInfo
validUntilTimenull | stringSpecify the date until the state is persisted. Allowed are values from now+1m to now+90d! Returned validUntilTimes are always a string formatted in ISO 8601
valuestring

ListUserAppState

NameTypeDescription
key*requiredstring
modificationInfoModificationInfo
validUntilTimenull | stringSpecify the date until the state is persisted. Allowed are values from now+1m to now+90d! Returned validUntilTimes are always a string formatted in ISO 8601
valuestring

ModificationInfo

NameType
lastModifiedBy*requiredstring
lastModifiedTime*requiredDate

PersistenceState

NameTypeDescription
modificationInfoModificationInfo
validUntilTimenull | stringSpecify the date until the state is persisted. Allowed are values from now+1m to now+90d! Returned validUntilTimes are always a string formatted in ISO 8601
valuestring

UserAppState

NameTypeDescription
modificationInfoModificationInfo
validUntilTimenull | stringSpecify the date until the state is persisted. Allowed are values from now+1m to now+90d! Returned validUntilTimes are always a string formatted in ISO 8601
value*requiredstring

UserAppStates

extends Array<ListUserAppState>

NameTypeDescription
length*requirednumberGets or sets the length of the array. This is a number one higher than the highest index in the array.
Still have questions?
Find answers in the Dynatrace Community