get_user_data_names()

Lists the names of all user-bound data records of a given type for the currently logged-in user via dms.GetUserDataNames.

1. Signature

  • Sync

  • Async

ecm.system.get_user_data_names(
    data_type: ECMUserDataType | int,
) -> list[str]
await ecm.system.get_user_data_names(
    data_type: ECMUserDataType | int,
) -> list[str]

2. Parameters

Parameter Type Default Description

data_type

ECMUserDataType | int

Type identifier. ECMUserDataType lists the documented standard types (e.g. STORED_QUERIES, EXTERNAL_PROGRAMS, AS_INI, ADDITIONAL_APP_CONFIG_80…85). Custom registered types can be passed as plain int.

3. Return value

list[str] — the record names in the order the server returned them (Name1, Name2, …). An empty list when the user holds no record of that type.

4. Important: the server upper-cases the names

The names come back upper-cased, no matter which spelling they were stored with. A record written as my_app_config is listed as MY_APP_CONFIG:

from ecmind_blue_client.ecm import ECMUserDataType

SLOT = ECMUserDataType.ADDITIONAL_APP_CONFIG_80

ecm.system.set_user_data("My_App_Config", SLOT, b"x")
assert ecm.system.get_user_data_names(SLOT) == ["MY_APP_CONFIG"]

Compare case-insensitively when matching against a name you know:

if "my_app_config".upper() in ecm.system.get_user_data_names(SLOT):
    ...

Reading and deleting are case-insensitive, so a returned name can be passed straight back into get_user_data() or delete_user_data().

5. Important: records with an empty value are listed too

A record stored with an empty value is a record like any other and appears in the list. Only delete_user_data() removes a name from it.

6. Examples

6.1. List and read every record of one type

  • Sync

  • Async

from ecmind_blue_client.ecm import ECMUserDataType

SLOT = ECMUserDataType.ADDITIONAL_APP_CONFIG_80

for name in ecm.system.get_user_data_names(SLOT):
    print(name, ecm.system.get_user_data(name, SLOT))
from ecmind_blue_client.ecm import ECMUserDataType

SLOT = ECMUserDataType.ADDITIONAL_APP_CONFIG_80

for name in await ecm.system.get_user_data_names(SLOT):
    print(name, await ecm.system.get_user_data(name, SLOT))

6.2. Clean up records with a shared prefix

from ecmind_blue_client.ecm import ECMUserDataType

SLOT = ECMUserDataType.ADDITIONAL_APP_CONFIG_80

for name in ecm.system.get_user_data_names(SLOT):
    if name.startswith("MY_APP_"):
        ecm.system.delete_user_data(name, SLOT)

7. See also