<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Skurudo Blog(post): заметки с тегом api</title>
<link>https://skurudo.ru/tags/api/</link>
<description>Интерфейс программирования приложений (иногда интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай]</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.2 (v4116)</generator>

<itunes:subtitle>Интерфейс программирования приложений (иногда интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай]</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Импорт пользователей в Яндекс.Коннект через API</title>
<guid isPermaLink="false">227</guid>
<link>https://skurudo.ru/all/import-users-to-yandex-connect/</link>
<pubDate>Thu, 04 Mar 2021 15:00:15 +0300</pubDate>
<author></author>
<comments>https://skurudo.ru/all/import-users-to-yandex-connect/</comments>
<description>
&lt;p&gt;Возникла задача добавить несколько десятков пользователей в Яндекс.Коннект и сразу же начались поиски пути решения, чтобы избавиться от ручного труда и в дальнейшем облегчить жизнь. Решил попробовать вариант от &lt;a href="https://habr.com/ru/users/Energys/"&gt;Energys&lt;/a&gt; — статья на &lt;a href="https://habr.com/ru/post/448036/"&gt;habr’e&lt;/a&gt;. Почему попробовать? За пару лет что-то могло перестать работать, как говорится — «За время пути собака могла подрасти!»&lt;/p&gt;
&lt;p&gt;С первого взгляда не понравилось то, что пароли у сотрудников будущих одинаковые — это обязательно нужно было поменять, плюс не указана должность — потребовалось добавить. Однако для общего понимания статья подходит как нельзя лучше. К тому же изменения сравнительно не сложные — готовимся и применяем.&lt;/p&gt;
&lt;p&gt;Самое не простое в этой истории — возня с токеном от Яндекса. В статье она описана, пройдем по шагам для истории и чтобы ничего не забыть:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;* зайти в аккаунт яндекса под администратором домена;&lt;/li&gt;
&lt;li&gt;* в &lt;a href="https://oauth.yandex.ru/"&gt;Я.OAuth&lt;/a&gt; первым делом нужно создать приложение;&lt;/li&gt;
&lt;li&gt;* приложению даем права, в нашем случае — Яндекс.Коннект Directory API;&lt;/li&gt;
&lt;li&gt;* выбираем платформу «веб-сервисы» и нажимаем «подставить url для разработки»;&lt;/li&gt;
&lt;li&gt;* сохраняемся и получим ID приложения — именно оно понадобится для получения токене;&lt;/li&gt;
&lt;li&gt;* вставляем ID приложения и получаем токен:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;https://oauth.yandex.ru/authorize?response_type=token&amp;amp;client_id=&amp;lt;ID приложения&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;* именно этот токен и будет использоваться в скрипте;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Идея сравнительно не сложная:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;готовим файл определенного образца;&lt;/li&gt;
&lt;li&gt;добавляем переменных;&lt;/li&gt;
&lt;li&gt;читаем список из файла;&lt;/li&gt;
&lt;li&gt;в запросе в цикле добавляем переменные;&lt;/li&gt;
&lt;li&gt;в каждой итерации ждем пару секунд.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Сам скрипт выглядит следующим образом — он же на &lt;a href="https://github.com/skurudo/usefulbash/blob/main/yandex-connect-mass-user-add.sh"&gt;GitHub&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash
# path to users list - путь к списку пользователей
employees=&amp;#039;./usrlist&amp;#039;
# line example from users list - пример строки файла 
# usrlist: email_lastname_firstname_middlename_password_position
# for example: petrova_Петрова_Авдотья_Федоровна_eeKrutoiparol23_Менеджер

# OAuth_Token
# link to material about token - ссылка на формирование отладочного токена
# https://tech.yandex.ru/oauth/doc/dg/tasks/get-oauth-token-docpage/
# link about our apps - список ваших приложений
# https://oauth.yandex.ru/
# get token from apps id - получить токен из ID приложения
# https://oauth.yandex.ru/verification_code#access_token=435843755894374389
TOKEN=&amp;quot;token-here-and-there&amp;quot;

# read and trim user file - читаем и перебираем файл со списком пользователей
for i in $( cat $employees ); do
value=($(echo $i | tr &amp;quot;_&amp;quot; &amp;quot; &amp;quot;))

# make variables for api request from file - заводим переменные для запроса из файла
email=&amp;quot;${value[0]}&amp;quot;
lastname=&amp;quot;${value[1]}&amp;quot;
firstname=&amp;quot;${value[2]}&amp;quot;
middlename=&amp;quot;${value[3]}&amp;quot;
password=&amp;quot;${value[4]}&amp;quot;
position=&amp;quot;${value[5]}&amp;quot;

# Make user for good - создаем сотрудника ради добра
# department = 1 for default - департамент 1 умолчанию
#only http answers, not full - только http ответы, не полный лог
curl -i -X POST -H &amp;#039;Content-type: application/json&amp;#039; -d &amp;#039;{&amp;quot;department_id&amp;quot;: 1, &amp;quot;position&amp;quot;: &amp;quot;&amp;#039;$position&amp;#039;&amp;quot;, &amp;quot;password&amp;quot;: &amp;quot;&amp;#039;$password&amp;#039;&amp;quot;, &amp;quot;nickname&amp;quot;: &amp;quot;&amp;#039;$email&amp;#039;&amp;quot;, &amp;quot;name&amp;quot;: {&amp;quot;first&amp;quot;: &amp;quot;&amp;#039;$firstname&amp;#039;&amp;quot;, &amp;quot;last&amp;quot;: &amp;quot;&amp;#039;$lastname&amp;#039;&amp;quot;, &amp;quot;middle&amp;quot;: &amp;quot;&amp;#039;$middlename&amp;#039;&amp;quot;}}&amp;#039; -H &amp;quot;Authorization: OAuth $TOKEN&amp;quot; &amp;#039;https://api.directory.yandex.net/v6/users/&amp;#039; | grep HTTP
#full answers - полные ответы
#curl -i -X POST -H &amp;#039;Content-type: application/json&amp;#039; -d &amp;#039;{&amp;quot;department_id&amp;quot;: 1, &amp;quot;position&amp;quot;: &amp;quot;&amp;#039;$position&amp;#039;&amp;quot;, &amp;quot;password&amp;quot;: &amp;quot;&amp;#039;$password&amp;#039;&amp;quot;, &amp;quot;nickname&amp;quot;: &amp;quot;&amp;#039;$email&amp;#039;&amp;quot;, &amp;quot;name&amp;quot;: {&amp;quot;first&amp;quot;: &amp;quot;&amp;#039;$firstname&amp;#039;&amp;quot;, &amp;quot;last&amp;quot;: &amp;quot;&amp;#039;$lastname&amp;#039;&amp;quot;, &amp;quot;middle&amp;quot;: &amp;quot;&amp;#039;$middlename&amp;#039;&amp;quot;}}&amp;#039; -H &amp;quot;Authorization: OAuth $TOKEN&amp;quot; &amp;#039;https://api.directory.yandex.net/v6/users/&amp;#039; 
# wait for 2 sec - ждем пару секунд
wait 2
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;C чем удалось столкнуться при отладке и работе скрипта? Буквально несколько моментов:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;* если посылать запросы слишком часто, часть может не сработать — нужно подбирать тайминги между запросами.. пауза в 1-2 секунды работает;&lt;/li&gt;
&lt;li&gt;* обязательно нужно смотреть на входные данные — аккуратность с символами в названиях важна;&lt;/li&gt;
&lt;li&gt;* моя частая ошибка — 422 Unprocessable Entity — при разборе оказалось, что пароль был слишком простой;&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>

<item>
<title>Пришло время закрывать Skype Desktop API</title>
<guid isPermaLink="false">19</guid>
<link>https://skurudo.ru/all/microsoft-closes-skype-desktop-api/</link>
<pubDate>Sun, 01 Dec 2013 22:52:12 +0300</pubDate>
<author></author>
<comments>https://skurudo.ru/all/microsoft-closes-skype-desktop-api/</comments>
<description>
&lt;p&gt;Ноябрьскую новость о намерениях Skype закрыть Desktop API как-то пропустил или пролистал, сейчас уже даже не помню точно. После декабрьского обновления программы появилось сообщение с информацией о том, что API более работать не будет и да пусть вас, вместе с вашей гарнитурой спасет ваш бог. Новость меня немного расстроила, поскольку гарнитура не сертифицированная, работает через BlueSoleil, соединяясь со скайпом через Desktop API. Будет ли работать связка хоть как-то или не будет вовсе — неизвестно. Есть опасения, что проблемы могут возникнуть и c сертифицированными устройствами. Хотя по утверждениям Microsoft работать перестанут только механические кнопки, ответить на звонок можно будет на экране в самом приложении. Как будет на деле — большой вопрос.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://skurudo.ru/pictures/skype-desktop-api-message.jpg" width="466" height="122" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;Desktop API&lt;/b&gt; (старое название — Skype Public API) позволяет сторонним продуктам взаимодействовать со Skype. Эти продукты могут быть программными или аппаратными, но для их разработки в любом случае применяется Desktop API, текстовый протокол взаимодействия с программным обеспечением Skype. Интерфейс Desktop API создан, чтобы помочь разработчикам управлять внешними вызовами в приложение Skype.&lt;/i&gt; (с) &lt;a href="https://sku.su/lVDVm"&gt;FAQ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Мне понятно желание Microsoft прекратить тащить на себе поддержку старого кода, поддерживать множество устройств: skype-телефоны, плагины, телевизоры и камеры с поддержкой. Грубо говоря, сломать все старое и зажить по-новому: красиво, единообразно и с хорошей документацией, возможно новым API. Подход для смелых духом разработчиков и менеджеров со стальными яйцами. Учитываются ли при таком подходе пользователи? Сомнительно. В последние время редмондская компания работает непривычно быстро. Реакция на резкие изменения неоднозначная, местами скорее негативная. При большом количестве пользователей период «привыкания» и «перехода» хотелось бы видеть солиднее. Получилось: раз-раз и в дамках за два месяца.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Для самостоятельного чтения:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sku.su/lVDVm"&gt;Что такое Desktop API?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sku.su/BXkPE"&gt;Skype заявляет, что мои приложения перестанут работать со Skype в декабре 2013 г. Почему?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sku.su/dAGou"&gt;Что произойдет с гарнитурой, отмеченной логотипом Skype Certified, после прекращения поддержки Desktop API?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>


</channel>
</rss>