Toggl сменил API с V8 на V9
27 марта попробовал загрузить данные из Toggl в ППМ, но получил ошибку:
Ошибка аутентификации: "The V8 API was shutdown on 23/05/2024. Please find the migration guide for V8 -\u003e V9 at https://engineering.toggl.com/changes/2022/10/01/api-v8-deprecation/index.html"
Внезапно сменилось API у Toggl.
Вот код чтения данных о рабочем времени. Изменения отмечены комментариями.
ТекСервер = "api.track.toggl.com"; //https: ТекПорт = 443; Соединение = Новый HTTPСоединение( ТекСервер, // сервер (хост) ТекПорт, //порт, по умолчанию для http используется 80, для https 443 Объект.Логин, //пользователь для доступа к серверу (если он есть) Объект.Пароль, //пароль для доступа к серверу (если он есть) , // здесь указывается прокси, если он есть , // таймаут в секундах, 0 или пусто - не устанавливать Новый ЗащищенноеСоединениеOpenSSL() // защищенное соединение, если используется https ); //Про авторизацию смотреть тут: https://github.com/toggl/toggl_api_docs/blob/master/chapters/authentication.md ТекКоманда = "api/v9/me"; Запрос = Новый HTTPЗапрос(ТекКоманда); РезультатЗапроса = Соединение.Получить(Запрос); Ответ = РезультатЗапроса.ПолучитьТелоКакСтроку(); Если РезультатЗапроса.КодСостояния <> 200 Тогда Сообщить("Ошибка аутентификации: " + Ответ); Возврат; КонецЕсли; //Создаем то же соединение, но уже с другим логином и паролем, получеными из API СтруктураJSON = json.ПолучитьСтруктуруИзJSON(Ответ); //V8 //api_token = СтруктураJSON.data.api_token; //workspace_id = XMLСтрока(СтруктураJSON.data.workspaces[0].id); //V9 api_token = СтруктураJSON.api_token; workspace_id = XMLСтрока(СтруктураJSON.default_workspace_id); Соединение = Новый HTTPСоединение( ТекСервер, // сервер (хост) ТекПорт, //порт, по умолчанию для http используется 80, для https 443 api_token, //пользователь для доступа к серверу (если он есть) "api_token", //пароль для доступа к серверу (если он есть) , // здесь указывается прокси, если он есть , // таймаут в секундах, 0 или пусто - не устанавливать Новый ЗащищенноеСоединениеOpenSSL() // защищенное соединение, если используется https ); ТекДата1 = Объект.Дата1; ТекДата2 = Объект.Дата2; Если Не ЗначениеЗаполнено(ТекДата2) Тогда ТекДата2 = ТекущаяДата(); КонецЕсли; //Информация по запросам тут: //Максимальный период - год //https://github.com/toggl/toggl_api_docs/blob/master/reports/detailed.md //https://github.com/toggl/toggl_api_docs/blob/master/reports/summary.md //by defalut - grouping:projects and subgrouping:time_entries Страница = 1; ВсеСтроки = Новый Массив(); Пока (Истина) Цикл //По страницам ТекКоманда = "reports/api/v2/details?user_agent=api_test"; ТекКоманда = ТекКоманда + "&workspace_id=" + workspace_id; ТекКоманда = ТекКоманда + "&since=" + Формат(ТекДата1, "ДФ=yyyy-MM-dd"); //since=2013-05-19 ТекКоманда = ТекКоманда + "&until=" + Формат(ТекДата2, "ДФ=yyyy-MM-dd"); ТекКоманда = ТекКоманда + "&workspace_id=" + workspace_id; ТекКоманда = ТекКоманда + "&page=" + XMLСтрока(Страница); Запрос = Новый HTTPЗапрос(ТекКоманда); РезультатЗапроса = Соединение.Получить(Запрос); Ответ = РезультатЗапроса.ПолучитьТелоКакСтроку(); Если РезультатЗапроса.КодСостояния <> 200 Тогда Сообщить("Ошибка получения данных: " + Ответ); Возврат; КонецЕсли; СтруктураJSON = json.ПолучитьСтруктуруИзJSON(Ответ); Для Каждого Структура ИЗ СтруктураJSON.data Цикл ВсеСтроки.Добавить(Структура); КонецЦикла; Если СтруктураJSON.data.Количество() = 0 Тогда Прервать; КонецЕсли; //json.ПолучитьСтруктуруИзJSON(Ответ).data[0].title.project - проект Страница = Страница + 1; КонецЦикла;
На выходе таблица значений с колонками:
Свежие комментарии