Мне нужно массово создавать группы через API

Всем привет,

Мне нужно массово создавать группы через API, но JSON не принимает массив из нескольких значений — работает только создание одной группы за один вызов API.

В идеале я хочу отправить один вызов создания и передать имена в виде JSON-массива, но это вызывает ошибку:
500 (Внутренняя ошибка сервера)

Я ожидал, что приведённый ниже пример сработает, но он не работает — помогите! Речь идёт о 200+ группах. Я использую POST-запрос по адресу https://{defaultHost}/admin/groups.json, точно так, как указано в документации.

{
  "group": [
    {
      "name": "X"
    },
    {
      "name": "Y"
    },
    {
      "name": "Z"
    }
  ]
}

Мне кажется, что метод называется createGroup, а не createGroups. В документации указано, что он «создаёт группу», а не «создаёт столько групп, сколько вы захотите».

Вам нужно самостоятельно перебрать значения и вызвать этот метод для каждой группы, которую вы хотите добавить. Скорее всего, вам стоит либо добавить задержку, либо реализовать код для повторных попыток при достижении лимитов скорости.

@pfaffman Круто, спасибо, логично!

~B

@pfaffman Всё работало как ожидалось при написании небольшого скрипта, но теперь я столкнулся с другой проблемой. API разрешает использовать только «name», а не «full name», поэтому у меня нет способа заполнить поле «full name» с помощью метода создания. Единственное разрешённое поле «name» также не допускает пробелов, поэтому в итоге у меня множество групп с пустым полем «full name», а в поле «name» приходится использовать «_».

В идеале я хотел бы иметь возможность указывать «full name» в дополнение к «name» при создании групп через API.

Спасибо,
Boyan

Это не имеет смысла, так как API используется фронтендом для создания групп. Поскольку в UX можно создавать полные имена, их можно создавать и через API.

Именно так работают имена групп.

Пожалуйста, подскажите, где я могу указать полное имя? Я не согласен с утверждением, что API используется фронтендом, поскольку очевидно, что я могу редактировать полное имя через фронтенд, но здесь я не вижу поля для полного имени?

Извините. Я думал, что уже дал вам ссылку на Реверс-инжиниринг API Discourse. Я рекомендую либо использовать метод реверс-инжиниринга, либо изучить исходный код напрямую. Я не думаю, что кто-либо из активно разрабатывающих Discourse действительно использует эту документацию, поэтому я не уверен, что она полна или актуальна.