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

    Throws

    Error TypeError Message
    UnauthorizedUnauthorized
    ForbiddenForbidden
    NotFoundNot found
    InternalServerErrorInternal server error
    GeneralErrorUnexpected error

    Code example

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

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

    deleteAppStates

    stateClient.deleteAppStates(config): 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.

    Throws

    Error TypeError Message
    GeneralErrorUnexpected error

    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

    Throws

    Error TypeError Message
    UnauthorizedUnauthorized
    ForbiddenForbidden
    NotFoundNot found
    InternalServerErrorInternal server error
    GeneralErrorUnexpected error

    Code example

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

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

    deleteUserAppStates

    stateClient.deleteUserAppStates(config): 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.

    Throws

    Error TypeError Message
    GeneralErrorUnexpected error

    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

    Return typeStatus codeDescription
    AppState200The app state

    Throws

    Error TypeError Message
    UnauthorizedUnauthorized
    ForbiddenForbidden
    NotFoundNot found
    InternalServerErrorInternal server error
    GeneralErrorUnexpected error

    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

    Return typeStatus codeDescription
    AppStates200The list of app states

    Throws

    Error TypeError Message
    UnauthorizedUnauthorized
    ForbiddenForbidden
    InternalServerErrorInternal server error
    GeneralErrorUnexpected error

    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

    Return typeStatus codeDescription
    UserAppState200The user app state

    Throws

    Error TypeError Message
    UnauthorizedUnauthorized
    ForbiddenForbidden
    NotFoundNot found
    InternalServerErrorInternal server error
    GeneralErrorUnexpected error

    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

    Return typeStatus codeDescription
    UserAppStates200The list of user app states

    Throws

    Error TypeError Message
    UnauthorizedUnauthorized
    ForbiddenForbidden
    InternalServerErrorInternal server error
    GeneralErrorUnexpected error

    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

    Returns

    Return typeStatus codeDescription
    void200OK

    Throws

    Error TypeError Message
    AppStateLimitsExceededExceeded size limit for combined size of app states of this app
    UnauthorizedUnauthorized
    ForbiddenForbidden
    InternalServerErrorInternal server error
    GeneralErrorUnexpected error

    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

    Returns

    Return typeStatus codeDescription
    void200OK

    Throws

    Error TypeError Message
    UserAppStateLimitsExceededExceeded limit for number of user app states to be stored for this user and app
    UnauthorizedUnauthorized
    ForbiddenForbidden
    InternalServerErrorInternal server error
    GeneralErrorUnexpected error

    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

    type: Array<ListAppState>

    Error

    NameType
    code*requirednumber
    detailsErrorDetails
    message*requiredstring

    ErrorDetails

    NameTypeDescription
    errorCode"AppStateOverallSizeLimitExceeded" | "AppStateSizeLimitExceeded" | "UserAppStateSizeLimitExceeded" | "UserAppStateCountLimitExceeded"

    Error code indicating the reason why the request failed

    • AppStateOverallSizeLimitExceeded - The overall size limit for the combined size of app states of this app was exceeded
    • AppStateSizeLimitExceeded - The app state value exceeded the size limit for a single app state
    • UserAppStateSizeLimitExceeded - The user app state content exceeded the size limit for a single user app state
    • UserAppStateCountLimitExceeded - The maximum number of user app states for this user and app was exceeded

    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

    type: Array<ListUserAppState>

    Enums

    ErrorDetailsErrorCode

    Error code indicating the reason why the request failed

    • AppStateOverallSizeLimitExceeded - The overall size limit for the combined size of app states of this app was exceeded
    • AppStateSizeLimitExceeded - The app state value exceeded the size limit for a single app state
    • UserAppStateSizeLimitExceeded - The user app state content exceeded the size limit for a single user app state
    • UserAppStateCountLimitExceeded - The maximum number of user app states for this user and app was exceeded

    Enum keys

    AppStateOverallSizeLimitExceeded | AppStateSizeLimitExceeded | UserAppStateCountLimitExceeded | UserAppStateSizeLimitExceeded

    Still have questions?
    Find answers in the Dynatrace Community