2014-10-29 4 views
1

Я независимый веб-разработчик, и я работаю с большим количеством клиентов на многих разных рабочих площадках в Асане. Невозможность получить консолидированное представление делает это утомительным и трудным делом для управления, поэтому я собираю свою небольшую полезность, чтобы помочь мне получить «контроль» заданий, назначенных мне в установленный срок. Чтобы сделать это проще для сканирования, мне нужно иметь имя проекта рядом с деталями задачи.Как консолидировать вызовы API для API ASANA

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

API, похоже, не разрешает этот консолидированный тип запроса, однако вместо этого рабочий процесс выглядит примерно так:

  1. API вызова, чтобы получить все мои рабочие пространства
  2. Loop через рабочие области, что делает вызов API для каждого, чтобы получить все задачи
  3. Использование PHP для сортировки этих задач соответственно
  4. Loop через эти задачи, сделав API вызова для первого экземпляра каждого проекта для того, чтобы получить имя проекта (я кэшировать данные, как я идти, так что я только сделать звонок один раз в проекте)

вопрос Я ПОЛУЧИТЬ ting - это ошибка 500, когда я запускаю вызовы API для получения сведений о проекте. Я сомневаюсь, что я нажимаю 100 минут в минуту, но я все равно получаю ошибки. В свете этого я ищу способ сделать консолидированный вызов, который содержит все данные, которые мне нужны, но я не могу понять это.

У кого-нибудь есть рекомендации?

ответ

0

Хорошие новости! Мы действительно поддерживаем Input/Output options, которые позволяют вам указать, какие поля вы хотите, включая вложенные поля. Таким образом, в то время как вы все еще должны сделать отдельные вызовы для каждого рабочего пространства, вы можете сделать что-то вроде этого:

workspaces = GET /workspaces 
for id in workspaces 
    tasks = GET /workspaces/:id/tasks?assignee=me&opt_fields=name,due_on,projects.name 

(Если вы заинтересованы только в неполных задачах, вы можете добавить &completed_since=now - или если вы хотите неполными и недавно завершенные задачи, &completed_since=... с меткой времени, которую вы хотите исключить, любые задачи, которые были выполнены до этого)

Кроме того, 500 не является кодом, который мы отправляем для ограничения скорости - это, скорее всего, проблема с самим запросом. Как вы запрашиваете детали проекта?

+0

Спасибо @agnoster. Быть способным ориентироваться на вложенные поля очень полезно - нотация точек полностью ускользнула от меня. Я на самом деле прибегал к поддержке словарей JSON, которые могут быть обновлены отдельно и действовать как ссылки на рабочие области и проекты. FYI, все мои вызовы API используют [API-класс API Asana] (github.com/ajimix/asana-api-php-class/), поэтому запросы должны быть правильно структурированы - 500 произошел только тогда, когда я звонил выше определенное количество задач. – Phil

Смежные вопросы