Как хранить сложные метаданные, используя функцию внешних данных Asana - PullRequest
0 голосов
/ 28 сентября 2018

Справочная информация

Моя организация использует платформу Asana для координации наших рабочих усилий.Я использовал API Asana для автоматизации ряда наших ежедневных операций, а также для интеграции платформы Asana с другими внешними сервисами, которые мы используем.Я взаимодействую с API Асаны, используя python и библиотеку запросов для выполнения запросов GET, POST и PUT.

Часто мне нужно ПОЛУЧИТЬ или POST для конкретной задачи в Asana, я часто могу достичь этого, используя автоматически сгенерированный идентификатор задачи Asana.

result = requests.get("https://app.asana.com/api/1.0/tasks/task_id", headers)

Однако бывают случаи, когда мне полезно идентифицировать задачу по конкретной информации, хранящейся в ней.Я смог успешно сделать это, сохранив конкретную информацию в метаданных задачи, которые Асана называет «внешними данными».

result = requests.get("https://app.asana.com/api/1.0/tasks/external_id", headers)

Оба эти метода хорошо мне помогли.Однако у меня возникают проблемы с хранением определенных данных во внешних данных задачи, которые я описал в следующем разделе.

Проблема

В настоящее время, когда я сохраняю метаданные во внешней задачеdata мой запрос PUT / POST выглядит следующим образом:

header = {
    "Authorization" : "Bearer " + AUTH_TOKEN
}

data = {
    "data" : {
        "name" : "Burgers",
        "external" : {
            "id" : "external_id",
            "data" : "data_value"
        }
    }
}

url = "https://app.asana.com/api/1.0/tasks/task_id"
result = requests.put(url, headers=header, json=data)
return result

Важно отметить, что «data_value» представляет собой одну строку.Однако согласно документации Асаны здесь «data_value» может на самом деле хранить словарь ключей и значений.Я попытался передать объект словаря, выполнив следующее:

data = {
    "data" : {
        "name" : "Burgers",
        "external" : {
            "id" : "external_id",
            "data" : {
               "data_value" : "some_data", 
               "data_value_2" : "some_data"
            }
        }
    }
}

Но я продолжаю получать сообщение об ошибке:

"{" errors ": [{"message": "external: data: Value не является строкой: [объект объекта]", "help": "Для получения дополнительной информации о кодах состояния API и о том, как с ними обращаться, ознакомьтесь с документацией об ошибках: https://asana.com/developers/documentation/getting-started/errors"}]}"

Есть идеи, где я ошибаюсь?Кто-нибудь имел успех с этим?

...