Вызовите список субъектов, применяя фильтр:
Изучите ключевые понятия и основные принципы, чтобы подготовиться к работе с API-интерфейсами веб-службы Adobe Connect.
Чтобы начать работу с веб-службой Adobe Connect, необходимо понимать следующие три ключевых понятия:
- Субъекты, которые являются пользователями и группами 
- Объекты содержимого (SCO), которые представляют собрания, курсы и практически все содержимое, которое можно создать в Adobe Connect. Объекты SCO совместимы с отраслевым стандартом спецификации эталонной модели объекта с коллективно используемой информацией (SCORM), и их можно использовать в системе управления обучением (LMS). 
- Разрешения, которые определяют, как субъекты могут действовать в отношении объектов 
В этой главе описываются основные задачи, которые можно выполнять с помощью веб-служб независимо от того, для каких приложений Adobe Connect вы приобрели лицензию. Описание многих задач предполагает, что вы выполняете их в браузере. Чтобы выполнить вызов из приложения, преобразуйте запрос XML в язык, с которым вы работаете (пример такого преобразования в Java™ см. в разделе Отправка запросов XML).
Поиск идентификатора principal-id
Субъект представляет собой пользователя или группу, для которой определены разрешения на взаимодействие с SCO на сервере. Можно создать пользователей и группы для своей организации и изменить разрешения для них.
В Adobe Connect также есть встроенные группы: «Администраторы», «Администраторы с ограниченным набором прав», «Авторы», «Менеджеры по обучению», «Менеджеры мероприятий», «Учащиеся», «Организаторы собрания» и «Организаторы семинаров». Можно добавлять пользователей и группы во встроенные группы, однако нельзя изменять разрешения встроенных групп.
Доступные встроенные группы зависят от характеристик вашей учетной записи.
Каждый пользователь и группа Adobe Connect имеет идентификатор principal-id. В некоторых вызовах API идентификатор principal-id называется group-id или user-id, чтобы отличить его от других значений. Значение идентификатора, который идентифицирует пользователя или группу, всегда одинаково и не зависит от имени.
Получение principal-id для пользователя или группы
- 
    
https://example.com/api/xml?action=principal-list&filter-name=jazz doe Рекомендуется использовать filter-name, filter-login или filter-email для точного совпадения. Используйте значение filter-like-name с осторожностью, так как оно может влиять на производительность сервера. 
- 
    
Анализ элементов субъекта в ответе для principal-id: <principal principal-id="2006282569" account-id="624520" type="user" has-children="false" is-primary="false" is-hidden="false"> <name>jazz doe</name> <login>jazzdoe@example.com</login> <email>jazzdoe@newcompany.com</email> </principal> 
Получение principal-id текущего пользователя
- 
    
Вызов common-info после входа пользователя в систему: https://example.com/api/xml?action=common-info 
- 
    
Анализ элементов пользователя в ответе для user-id: <user user-id="2007124930" type="user"> <name>jazz doe</name> <login>jazz@doe.com</login> </user> Здесь principal-id называется user-id, поскольку этот идентификатор всегда представляет пользователя , который прошел проверку подлинности в Adobe Connect. Группа не может выполнить вход на сервер. В других операциях можно передать значение user-id как principal-id . 
Создание списка субъектов или гостей
Субъект с типом user является зарегистрированным пользователем Adobe Connect, а пользователь с типом guest подключился к комнате собрания как гость. Сервер получает информацию о госте и предоставляет ему principal-id.
Создание списка всех субъектов на сервере
- 
    
Вызов principal-list без параметров: https://example.com/api/xml?action=principal-list Этот вызов возвращает всех пользователей Adobe Connect, поэтому следует ожидать ответа большого размера. 
- 
    
Проанализируйте элементы субъекта в ответе для выбранных значений: <principal principal-id="2006282569" account-id="624520" type="user" has-children="false" is-primary="false" is-hidden="false"> <name>jazz doe</name> <login>jazzdoe@example.com</login> <email>jazzdoe@newcompany.com</email> </principal> 
Создание списка всех гостей на сервере
- 
    
Вызовите report-bulk-users, применив фильтрацию по типу гостя: https://example.com/api/xml?action=report-bulk-users&filter-type=guest 
- 
    
Выполните анализ элементовстроки в ответе: <row principal-id="51157227"> <login>joy@acme.com</login> <name>joy@acme.com</name> <email>joy@acme.com</email> <type>guest</type> </row> 
Создание списка всех пользователей, которые подчинены конкретному менеджеру
При вызове principal-info со значением principal-id в ответе фигурирует субъект. Если субъект является пользователем, у которого есть менеджер, назначенный в Adobe Connect, в ответе также отображаются данные о менеджере субъекта в элементе manager:
<manager account-id="624520" disabled="" has-children="false" is-hidden="false" is-primary="false" principal-id="2006282569" type="user"> <ext-login>jazzdoe@example.com</ext-login> <login>jazzdoe@example.com</login> <name>jazz doe</name> <email>joy@example.com</email> <first-name>jazz</first-name> <last-name>doe</last-name> <x-2006293620>23456</x-2006293620> <x-2007017651>chicago</x-2007017651> </manager>
Можно использовать идентификатор principal-id менеджера с principal-list для создания списка всех пользователей, назначенных менеджеру.
- 
    
Выполните вызов principal-list, применив фильтрацию по manager-id: https://example.com/api/xml?action=principal-list &filter-manager-id=2006282569 
- 
    
Выполните анализ ответа для элементов субъекта: <principal principal-id="2006258745" account-id="624520" type="user" has-children="false" is-primary="false" is-hidden="false" manager-id="2006282569"> <name>Pat Lee</name> <login>plee@mycompany.com</login> <email>plee@mycompany.com</email> </principal> 
Создание пользователей
Чтобы создать нового пользователя, требуются разрешения уровня администратора. Adobe рекомендует создать пользователя, который принадлежит к группе admins для вашего приложения, чтобы использовать вызовы API, для которых требуются разрешения уровня администратора.
Создание нового пользователя и отправка приветственного сообщения по электронной почте
- 
    
Выполните вход в приложение с правами администратора. См. раздел Вход в систему из приложения, где описываются различные способы входа. 
- 
    
Выполните вызов principal-update, используя как минимум следующие параметры: https://example.com/api/xml?action=principal-update &first-name=jazz&last-name=doe&login=jazz99@doe.com&password=hello &type=user&send-email=true&has-children=0&email=jazz99@doe.com Тип должен иметь значение user, параметр has-children должен быть равен 0 или false, параметр send-email должен иметь значение true, а поле email должно содержать допустимый адрес электронной почты. Сервер отправляет на электронный адрес пользователя приветственное сообщение, где приведены данные для входа. 
- 
    
Выполните анализ элемента субъекта в ответе для principal-id пользователя: <principal type="user" principal-id="2007184341" has-children="0" account-id="624520"> <login>jammdoe@example.com</login> <ext-login>jammdoe@example.com</ext-login> <name>jamm doe</name> </principal> 
Создание нового пользователя без использования адреса электронной почты в качестве идентификатора для входа
- 
    
На портале Adobe Connect Central перейдите в раздел «Администрирование» > «Пользователи и группы» > «Редактирование политик, регулирующих учетные данные». Убедитесь в том, что для параметра «Использовать электронный адрес в качестве имени для входа» установлено значение «Нет». 
- 
    
Выполните вход в приложении, используя учетные данные администратора. 
- 
    
Выполните вызов principal-update, чтобы создать нового пользователя, передавая параметры login и email: https://example.com/api/xml?action=principal-update&first-name=jazz &last-name=doe&login=jazz&email=jazzdoe@company.com &password=nothing&type=user&has-children=0 
- 
    
Выполните анализ principal-id нового пользователя: <principal type="user" principal-id="2007184341" has-children="0" account-id="624520"> <login>jazzdoe@example.com</login> <ext-login>jazzdoe@example.com</ext-login> <name>jazz doe</name> </principal> В ответе значение ext-login содержит то же значение, что и параметр login по умолчанию, до тех пор пока пользователь не выполнит успешный вход, используя внешнюю проверку подлинности (см. раздел Вход с использованием проверки подлинности заголовка HTTP). 
Обновление пользователей
После создания пользователей зачастую требуется обновить их данные. Можно обновить стандартные поля, которые Adobe Connect определяет для пользователей путем вызова principal-update с principal-id пользователя. К стандартным полям относятся email, login, first-name и last-name.
Если вы определили пользовательские поля для субъекта, используйте act-field-update, чтобы обновить их.
Вам нужны разрешения администратора для обновления пользователей, поэтому ваше приложение должно сначала выполнить вход с учетными данными пользователя в группу admins. Вы не можете выполнить вход с учетными данными пользователя, а затем разрешить пользователю обновить его профиль.
Обновление стандартных данных пользователя
- 
    
Выполните вход с правами администратора. 
- 
    
Вызовитеprincipal-list, применяя фильтр , чтобы получить principal-id пользователя (см. Поиск значения principal-id). 
- 
    
Вызовите principal-update, чтобы обновить пользователя: https://example.com/api/xml?action=principal-update &principal-id=2006282569&email=jazzdoe@newcompany.com 
- 
    
Выполните анализ ответа для кода статуса ok. 
Обновите значения пользовательских полей для пользователя.
- 
    
Выполните вход с правами администратора. 
- 
    
Вызовите custom-fields, чтобы получить значение field-id для пользовательского поля: https://example.com/api/xml?action=custom-fields 
- 
    
Получите значения principal-id, sco-id или account-id, которые требуется обновить. Это значение является идентификатором acl-id, который вы передаете в acl-field-update. 
- 
    
Вызовите acl-field-update, чтобы обновить значение пользовательского поля: https://example.com/api/xml?action=acl-field-update&field-id=x-2007396975&acl-id=2006258745&value=44444 
Создание пользовательских полей
Пользовательские поля представляют собой дополнительные поля данных, которые вы определяете. Можно определить до восьми пользовательских полей в субъекте или SCO, используя метод custom-field-update.
После определения пользовательского поля можно по умолчанию задать его значение путем редактирования на портале Adobe Connect Central или путем вызова custom-field-update.
Чтобы указать, что значение можно обновить только посредством API, вызовитеcustom-field-update с параметром object-type=object-type-read-only.
Определите пользовательское поле и задайте его для пользователя.
- 
    
Для начала создайте поле, используя custom-field-update: https://example.com/api/xml?action=custom-field-update &object-type=object-type-principal&permission-id=manage &account-id=624520&name=Location&comments=adobe%20location &field-type=text&is-required=true&is-primary=false&display-seq=9 Поле name определяет, как имя поля будет отображаться в приложении, поэтому следует использовать соответствующее написание и капитализацию. Пользовательское поле в этом примере определяется для всех субъектов Adobe Connect. 
- 
    
Выполните анализ элемента field в ответе для field-id: <field field-id="2007184366" object-type="object-type-principal" display-seq="9" account-id="624520" is-primary="false" permission-id="manage" is-required="true" field-type="text"> <comments>test</comments> <name>Country</name> </field> 
- 
    
Получите principal-id пользователя (см. раздел Поиск значения principal-id). 
- 
    
Вызовите acl-field-update, чтобы задать значение поля, передав field-id, principal-id пользователя как acl-id, а также значение: https://example.com/api/xml?action=acl-field-update &acl-id=2006258745&field-id=2007017474&value=San%20Francisco 
- 
    
Выполните анализ ответа для кода статуса ok. 
Создание групп
Чтобы добавить пользователей в группы, необходимо вызватьprincipal-update с правами администратора приложения.
Добавление пользователя в группу
- 
    
Выполните вход в систему с правами администратора приложения. 
- 
    
(Необязательно) Если пользователь еще не существует, создайте его с помощью principal-update. https://example.com/api/xml?action=principal-update &first-name=jazzwayjazz&last-name=doe&login=jazz@doe.com &password=nothing&type=user&has-children=0 
- 
    
(Необязательно) Выполните анализ ответа для нового principal-id пользователя. 
- 
    
Если пользователь уже существует, вызовите principal-list, чтобы получить principal-id пользователя: https://example.com/api/xml?action=principal-list&filter-type=user 
- 
    
Выполните анализ ответа для principal-id: <principal principal-id="5611980" account-id="624520" type="user" has-children="false" is-primary="false" is-hidden="false"> <name>Joy Black</name> <login>joy@acme.com</login> <email>joy@acme.com</email> </principal> 
- 
    
Вызовите principal-list еще раз, чтобы получить principal-id группы: https://example.com/api/xml?action=principal-list&filter-type=group 
- 
    
Вызовите group-membership-update со значениемis-member=true, чтобы добавить пользователя в группу: https://example.com/api/xml?action=group-membership-update &group-id=4930296&principal-id=2006258745&is-member=true - principal-id является значением principal-id пользователя. 
- group-id является значением principal-id группы. 
- Параметр is-member должен иметь значение true. 
 
Проверка включения конкретного пользователя в группу
- 
    
Вызовите principal-list со значением group-id, filter-is-member и фильтром, идентифицирующим субъект: https://example.com/api/xml?action=principal-list&group-id=624523 &filter-is-member=true&filter-like-name=bob 
- 
    
Выполните анализ элемента субъекта в ответе. Успешный ответ имеет следующий вид: <principal-list> <principal principal-id="624660" account-id="624520" type="user" has-children="false" is-primary="false" is-hidden="false"> <name>Bill Jones</name> <login>bjones@acme.com</login> <email>bjones@acme.com</email> <is-member>true</is-member> </principal> </principal-list> Если пользователь не является участником группы, элементprincipal-list будет пустым: <?xml version="1.0" encoding="utf-8" ?> <results> <status code="ok" /> <principal-list /> </results> 
Проверка пользователей, включенных в группу
- 
    
Чтобы получить значение principal-id группы, вызовите principal-list с фильтрами: https://example.com/api/xml?action=principal-list&filter-type=group &filter-name=developers При использовании значений filter-type и filter-name principal-list будет возвращать уникальное совпадение. 
- 
    
Выполните анализ ответа для principal-id: <principal principal-id="2007105030" account-id="624520" type="group" has-children="true" is-primary="false" is-hidden="false"> <name>developers</name> <login>developers</login> <is-member>false</is-member> </principal> 
- 
    
Вызовите principal-list еще раз, используя principal-id как group-id и filter-is-member=true: https://example.com/api/xml?action=principal-list&group-id=2007105030 &filter-is-member=true 
- 
    
Выполните анализ ответа для элементов субъекта: <principal principal-id="5698354" account-id="624520" type="group" has-children="true" is-primary="false" is-hidden="false"> <name>Bob Jones</name> <login>bobjones@acme.com</login> <is-member>true</is-member> </principal> 
Создание списка всех групп, к которым принадлежит пользователь
- 
    
Вызовите principal-list со значением principal-id пользователя и filter-is-member=true: https://example.com/api/xml?action=principal-list &principal-id=2006258745&filter-is-member=true 
- 
    
Выполните анализ ответа для элементов субъекта: <principal principal-id="5698354" account-id="624520" type="group" has-children="true" is-primary="false" is-hidden="false"> <name>Bob Jones</name> <login>bobjones@acme.com</login> <is-member>true</is-member> </principal> 
Поиск объектов SCO
Все объекты в Adobe Connect являются объектами общего содержимого (SCO). Термин общий пришло из систем управления обучением , где содержимое объединено в курсы или учебные программы и совместно используется ими.
Объект SCO на сервере может быть любым объектом содержимого, который объединен вместе с другими объектами содержимого в курс или учебную программу. Курсы, учебные программы, презентации и другие типы содержимого относятся к объектам SCO. Собрания, мероприятия, папки, деревья, ссылки, графические файлы и другие объекты также являются объектами SCO.
Каждый объект SCO имеет уникальный целочисленный идентификатор, так называемый sco-id. sco-id является уникальным в пределах всего сервера. В учетной записи, размещенной в Adobe Connect, значениеsco-id является уникальных во всех учетных записях.
Каждый объект SCO также имеет тип, например, content, course, meeting и т. д. Можно просмотреть значения sco-id и type в ответе от операции sco-info и других операций:
<sco account-id="624520" disabled="" display-seq="0" folder-id="2006258747" icon="producer" lang="en" max-retries="" sco-id="2006334909" source-sco-id="" type="content" version="1">
Характеристики объектов SCO
При изучении ответов XML в рамках различных вызовов вы отмечаете дополнительные характеристики объектов SCO:
- Идентификатор SCO называется sco-id в некоторых операциях, однако он также может называться folder-id, acl-id или иметь другое имя в других операциях. Это все равно тот же самый уникальный идентификатор. 
- Различные субъекты (пользователи или группы) могут иметь доступ к каждому из объектов SCO. Конкретные субъекты, которые могут иметь доступ к объекту SCO, определяются в списках контроля доступа (ACL). 
- Каждый объект SCO имеет уникальный URL-адрес из двух частей: доменное имя (например, http://example.com) и URL-путь (например, /f2006123456/). Можно выполнить конкатенацию, чтобы образовать полный URL-адрес, который осуществляет доступ к объекту SCO. 
- Каждый объект SCO имеет путь навигации, который описывает его расположение в иерархии папки. 
- Каждый объект SCO имеет разрешение, определяемое для каждого субъекта, который может иметь к нему доступ. 
- Некоторые объекты SCO имеют поля описания, которые представляют собой текстовые строки , где указывается информация об объекте SCO. 
Чаще всего вам требуется найти идентификатор объекта SCO или какие-либо данные о нем. Объекты SCO упорядочены в конкретной иерархической структуре папок, где папки имеют имена, указывающие, относятся ли они к верхнему уровню, содержат ли они общее содержимое или шаблоны или пользовательское содержимое и шаблоны.
При вызове sco-shortcuts возвращается список папок. Обратите внимание, что папки относятся к разным типам:
<?xml version="1.0" encoding="utf-8" ?> <results> <status code="ok" /> <shortcuts> <sco tree-id="624530" sco-id="2006258751" type="my-meeting-templates"> <domain-name>http://example.com</domain-name> </sco> <sco tree-id="624530" sco-id="2006258750" type="my-meetings"> <domain-name>http://example.com</domain-name> </sco> <sco tree-id="624529" sco-id="624529" type="meetings"> <domain-name>http://example.com</domain-name> </sco> <sco tree-id="624530" sco-id="624530" type="user-meetings"> <domain-name>http://example.com</domain-name> </sco> ... </shortcuts> </results>
Папки, показанные в этом примере, относятся к собраниям, однако папки для остальных типов SCO следуют тому же шаблону. В каждой папке хранятся определенные типы объектов с конкретными разрешениями для доступа, например:
содержимое, курсы, собрания, мероприятия, семинары
Это общие папки, например «Общие собрания», «Общее обучение» и т. д. Администратор Adobe Connect имеет доступ к этой папке. Администратор может назначать разрешения для управления любым пользователям, однако только участники встроенной группы, связанные с папкой, могут создавать в ней новое содержимое или собрания.
user-content, user-meetings, user-courses, user-events
Каждая из этих папок содержит папку для каждого пользователя, который имеет разрешения для создания содержимого в ней (например, одна папка для каждого организатора собрания или разработчика обучения).
my-courses, my-events, my-meetings, my-meeting-templates, my-content
Пользователи создают собственное содержимое в этих папках и имеют разрешения для управления содержимым. Например, организаторы собрания создают собрания в папке my-meetings и имеют разрешения для управления этими собраниями.
shared-meeting-templates
Эта папка находится в папке «Общие собрания», в ней содержатся шаблоны собраний, и она наследует разрешения от папки «Общие собрания».
Можно создать список содержимого любой папки, чтобы получить информацию о конкретном объекте SCO. Если требуется выполнить поиск объекта SCO, но у вас нет sco-id, можно использовать sco-shortcuts и sco-expanded-contents для перехода между папками. Не используйте sco-search, поскольку этот метод возвращает только определенные типы объектов SCO.
Поиск объекта SCO, если неизвестен sco-id
- 
    
Вызовите sco-shortcuts, чтобы получить список корневых папок в Adobe Connect: https://example.com/api/xml?action=sco-shortcuts 
- 
    
Выполните анализ ответа для типа корневой папки, которая логически должна содержать объект SCO, напримерmy-courses, если речь о курсе, созданном пользователем. 
- 
    
Выполните анализ результирующего элемента sco для sco-id: <sco tree-id="4930295" sco-id="2006258748" type="my-courses"> <domain-name>http://example.com</domain-name> </sco> 
- 
    
Создайте вызов в адрес sco-expanded-contents, чтобы создать список содержимого папки, по возможности добавив фильтр по точному совпадению: https://example.com/api/xml?action=sco-expanded-contents &sco-id=2006258748&filter-name=All About Web Communities Доступно несколько фильтров: - Фильтр по точному совпадению по значению name или url-path (например, filter-name или filter-url-path), если известно имя или URL-адрес объекта SCO. 
- Фильтр по дате с условием greater-than или less-than (filter-gt-date или filter-lt-date) по значениям date-begin, date-created или date-modified, если известна одна из этих дат. 
- Фильтр по части имени (например, filter-like-name), если неизвестно точное имя объекта SCO. Однако использование этого фильтра может повлиять на производительность системы. 
 
- 
    
Выполните анализ ответа для sco-id: <sco depth="1" sco-id="2006745671" folder-id="2006258748" type="folder" icon="folder" lang="en" source-sco-id="2006745669" display-seq="0" source-sco-type="14"> <name>A Day in the Life Resources</name> <url-path>/f28435879/</url-path> <date-created>2006-06-12T14:47:59.903-07:00</date-created> <date-modified>2006-06-12T14:47:59.903-07:00</date-modified> </sco> 
Получение информации об объекте SCO
- 
    
Выполните вызов sco-info со значением sco-id: https://example.com/api/xml?action=sco-info&sco-id=2006745669 
- 
    
Выполните анализ для значения name, url-path или любого другого значения: <sco account-id="624520" disabled="" display-seq="0" folder-id="2006258748" icon="curriculum" lang="en" max-retries="" sco-id="2006745669" source-sco-id="" type="curriculum" version="0"> <date-begin>2006-06-12T14:45:00.000-07:00</date-begin> <date-created>2006-06-12T14:47:59.903-07:00</date-created> <date-modified>2006-06-12T14:47:59.903-07:00</date-modified> <name>A Day in the Life</name> <url-path>/day/</url-path> </sco> 
Формирование URL-адреса для SCO
- 
    
Вызов sco-shortcuts: https://example.com/api/xml?action=sco-shortcuts 
- 
    
Выполните анализ ответа для значения domain-name в любом элементе sco: <sco tree-id="624530" sco-id="2006258750" type="my-meetings"> <domain-name>http://example.com</domain-name> </sco> 
- 
    
Вызовите sco-info со значением sco-id: https://example.com/api/xml?action=sco-info&sco-id=2006334909 
- 
    
Выполните анализ ответа для url-path: <sco account-id="624520" disabled="" display-seq="0" folder-id="2006258747" icon="producer" lang="en" max-retries="" sco-id="2006334909" source-sco-id="" type="content" version="1"> <date-created>2006-05-11T12:00:02.000-07:00</date-created> <date-modified>2006-05-16T15:22:25.703-07:00</date-modified> <name>Test Quiz</name> <url-path>/quiz/</url-path> <passing-score>10</passing-score> <duration>15100.0</duration> <section-count>6</section-count> </sco> url-path содержит косую черту и в начале, и в конце. Можно взять значениеurl-path из report-my-meetings, report-my-training или из любого вызова, который это значение возвращает. 
- 
    
Выполните конкатенацию url-path с domain-name: http://example.com/f2006258748/ 
Загрузка файлов
Можно загрузить ZIP-файлы из Adobe Connect на локальный компьютер пользователя. ZIP-файл является объектом SCO. Чтобы загрузить его, необходимо сформировать URL-адрес загрузки для ZIP-файла, который имеет следующий вид:
http://server-domain/url-path/output/url-path.zip?download=zip
Возможно, вам уже известно доменное имя сервера (например, example.com). Если нет, его можно получить путем вызова sco-shortcuts.
Загрузка ZIP-файла с сервера
- 
    
Вызов sco-shortcuts: https://example.com/api/xml?action=sco-shortcuts 
- 
    
Извлеките значение domain-name из ответа: http://example.com 
- 
    
Вызовите sco-info со значением sco-id ZIP-файла: https://example.com/api/xml?action=sco-info&sco-id=2006258747 Объектом SCO является весь ZIP-файл. 
- 
    
Выполните анализ ответа для элемента url-path: <sco account-id="624520" disabled="" display-seq="0" folder-id="624522" icon="folder" lang="en" max-retries="" sco-id="2006258747" source-sco-id="" type="folder" version="1"> <date-created>2006-04-18T10:21:47.020-07:00</date-created> <date-modified>2006-04-18T10:21:47.020-07:00</date-modified> <name>joy@acme.com</name> <url-path>/f124567890/</url-path> </sco> 
- 
    
Сформируйте URL-адрес загрузки, например: https://example.com/quiz/output/quiz.zip?download=zip Обязательно удалите косую черту в конце из значения url-path, прежде чем добавить к нему расширение .zip (чтобы получилось значение следующего вида: /quiz.zip, а не /quiz/.zip). 
Проверка разрешений
Разрешения определяют способ взаимодействия субъекта с объектом SCO.
Сопоставление разрешений, указывающее разрешения, которые есть у субъекта в отношении конкретного SCO, называется списком контроля доступа или ACL. ACL состоит из трех блоков информации:
- Идентификатор субъекта (principal-id). 
- Идентификатор SCO, учетной записи или субъекта, в отношении которого выполняется действие. В вызовах разрешений он называется acl-id. В других вызовах идентификатор может называться sco-id, account-id или principal-id. 
- Ключевое слово, которое указывает уровень разрешений для субъекта, который представляет собой одно из допустимый значений в permission-id. 
Проверка разрешений, которые есть у субъекта в отношении объекта SCO
- 
    
Вызовите permissions-info со значениями acl-id и principal-id: https://example.com/api/xml?action=permissions-info&acl-id=2006334909 &principal-id=2006258745 Чтобы проверить разрешения в отношении SCO, в качестве acl-id используется sco-id. В качестве acl-id также может использоваться principal-id или account-id. 
- 
    
Выполните анализ ответа для permission-id: <?xml version="1.0" encoding="utf-8" ?> <results> <status code="ok" /> <permission acl-id="2007035246" permission-id="view" principal-id="2006258745" /> </results> Если у субъекта нет явных разрешений в отношении объекта SCO (иными словами, если permission-id=""), применяются разрешения субъекта для родительского объекта SCO. 
Проверка всех разрешений субъекта в отношении объекта SCO
- 
    
Вызовите permissions-info со значением acl-id, но не со значением principal-id: https://example.com/api/xml?action=permissions-info&acl-id=2006293572 
- 
    
Выполните итерацию по элементам principal и выполните их анализ для значений permission-id: <principal principal-id="2596608" is-primary="false" type="user" has-children="false" permission-id="view"> <name>Jay Arnold</name> <login>jay@example.com</login> </principal> Допустимые значения перечислены в permission-id.