Почему я не могу получить роль «Администратор Marketing Cloud» с помощью WSProxy или SOAP? Пробовали из родительских BU в нескольких экземплярах SFMC. Таинственно отсутствует.

Если я отброшу фильтр и получу все роли, его также не будет в этом результате.

Я также пробовал это с помощью SSJS RetrieveRequest, но безрезультатно.

Вот мой код:

<script runat="server">
Platform.Load("Core", "1");
try {

    var prox = new Script.Util.WSProxy();
    var roleProps = ["Name","Description","CustomerKey","IsSystemDefined"];
    Write("<hr>roleProps: " + Stringify(roleProps));

    var roleObjsFilter0 = {Property: "IsSystemDefined", SimpleOperator: "equals", Value: true};
    var roleObjs0 = prox.retrieve("Role", roleProps, roleObjsFilter0);

    Write("<hr>roleObjs0.Results.length: " + roleObjs0.Results.length);

    var roles = roleObjs0.Results;

    for (k in roles) {
      Write("<hr>roles.Name:" +  roles[k].Name);
      Write("<br>roles.Description:" +  roles[k].Description);
      Write("<br>roles.CustomerKey:" +  roles[k].CustomerKey);
      Write("<br>roles.IsSystemDefined:" +  roles[k].IsSystemDefined);
    }

} catch(e) {

    Write("<br>e: " + Stringify(e));

}
</script>

Роли из установки:

Roles from Setup

Вот что я получаю на выходе:

Retrieve Output

1
Adam Spriggs 4 Янв 2022 в 21:44
Похоже, что «более новые» роли не возвращаются. Вы можете получить идентификаторы объектов ролей с помощью инструментов разработчика при входе в систему, если это полезно.
 – 
EazyE
4 Янв 2022 в 22:17
Вы можете получить ответ от конечной точки REST https://{{et_subdomain}}.rest.marketingcloudapis.com/platform/v1/setup/quickflow/data, включая роль администратора Marketing Cloud и идентификатор роли. (Эта конечная точка возвращает роли, языки и часовые пояса, связанные с токеном)
 – 
Gortonington
4 Янв 2022 в 22:23
Я пытаюсь проверить роли и разрешения для всех объектов AccountUser. Даже если бы у меня были все ObjectID, я не думаю, что смог бы получить все связанные объекты Role.
 – 
Adam Spriggs
4 Янв 2022 в 22:27

1 ответ

Хотя это не SOAP API или WSProxy, вы можете получить идентификатор роли (идентификатор объекта) каждой роли через конечную точку REST API:

GET /platform/v1/setup/quickflow/data
Host: {{et_subdomain}}.rest.marketingcloudapis.com
Authorization: Bearer {{token}}
Content-Type: application/json

Эта конечная точка будет возвращать часовые пояса, роли и языки, связанные с контекстом токена.

Роли включают в себя:

  • roleID (идентификатор объекта)
  • roleName (имя, отображаемое в пользовательском интерфейсе)
  • описание (описание роли, как показано в пользовательском интерфейсе)

Это возвращает объект массивов из 3 перечисленных выше. Ниже приведен пример возврата (отредактированный для облегчения чтения)

{
    "languages": [
        {
            "Key": "en-US",
            "Value": "English (United States)"
        },
        {
            "Key": "fr-CA",
            "Value": "French (Canada)"
        },
        {
            "Key": "fr-FR",
            "Value": "French (France)"
        },
        {
            "Key": "de-DE",
            "Value": "German (Germany)"
        }, 
    ...
    ],
    "roles": [
        {
            "roleID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
            "roleName": "Administrator",
            "description": "Administrator"
        },
        {
            "roleID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
            "roleName": "Analyst",
            "description": "Analyst"
        },
        {
            "roleID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
            "roleName": "Content Creator",
            "description": "Content Creator"
        },
    ...
    ],
    "timeZones": [
        {
            "id": "2",
            "description": "(GMT) Casablanca *"
        },
        {
            "id": "3",
            "description": "(GMT) Dublin, Edinburgh, Lisbon, London *"
        }, 
    ...
    ],
    "defaultUserData": {
        "defaultTimeZone": "79",
        "defaultLanguage": "en-US"
    }
}
0
Gortonington 4 Янв 2022 в 22:30