Servis uygulamaları
Bu seçenek Gelişmiş ve Optimal tarifelerde mevcuttur. Temel tarifesine geçtiğinizde uygulamalarınızı yönetemeyeceksiniz. Sadece, ay boyunca listelerini temizleyebileceksiniz. Bu ay bittiğinde uygulamalar kurumunuzdan silinir.
Servis uygulamaları, kurumdaki kullanıcı kaynaklarını API aracılığıyla yönetmek için kullanılır. Bu uygulamaların yardımıyla e-postaların yedek kopyalarını oluşturabilir, Kullanıcı Takvimi'ndeki etkinlikleri yönetebilir veya birçok diğer işlem yapabilirsiniz. En fazla 20 servis uygulaması oluşturulabilir.
Dikkat
3.7 teklifler maddesine göre, erişim etkinleştirildikten sonra yönetici tüm kullanıcıları bilgilendirmek ve gerekirse yazılı onay almak zorundadır (daha önce yapılmamışsa).
Servis uygulamalarının etkinleştirilmesi
-
Kurum sahibinin kullanıcı hesabına giriş yapın.
-
Kurumunuzda servis uygulamalarının listesini yönetecek olan uygulamayı kaydedin.
-
OAuth uygulaması oluşturma sayfasına gidin.
-
Servisin adını girin ve gerekirse simge ekleyin.
-
Uygulama platformları bölümünde Web servisleri’ni seçin. Redirect URI alanında, Hata Ayıklama için URL’yi yaz bağlantısına tıklayın.
-
Veri erişimi bölümünde, kurumda servis uygulamalarını yönetmek için gerekli olan erişim izinlerini belirtin:
-
ya360_security:service_applications_read
: Servis uygulaması listesini okuma, -
ya360_security:service_applications_write
: Servis uygulaması listesini yönetme (okuma ve kayıt).
-
-
İletişim için e-posta adresi belirtin. Sayfanın alt kısmında, Uygulama Oluştur’a tıklayın. Uygulamanın açıklaması ekranınızda görüntülenir.
-
ClientID alanındaki uygulama kimlik belirleyicisini (ID'sini) kopyalayın: Bu ID, OAuth token'ı almanız için gereklidir. Uygulamalarınızın tam listesini oauth.yandex.ru/ adresinde bulabilirsiniz.
-
-
İlgili olan herhangi bir yöntemle OAuth tokeni isteyin. Bu token, daha sonra kurumunuzda tüm servis uygulamalarını kaydetmeniz için gerekli olur.
Hata ayıklama OAuth token'ı manuel olarak alınabilir:
-
Bağlantıdan geçiş yapın
https://oauth.yandex.ru/authorize?response_type=token&client_id=<main_app_client_id>
<main_app_client_id>
yerine 2.6 maddesindeki ClientID değerini kullanın. -
OAuth token'ı uygulamanıza ilk kez veriliyorsa kullanıcı girişi ekranı açılır. Giriş yapıldıktan sonra Yandex OAuth sizi token'ı içeren sayfaya yönlendirir. Hata ayıklama tokenleri hakında daha fazla bilgi.
-
-
Kullanıcıları bilgilendirin ve daha önce onay vermemişlerse Ticari teklifin 3.7 maddesine uygun olarak kaynaklarını yönetmek üzere yönetici erişimi için onaylarını alın.
-
Şu sorguyu kullanarak servis uygulama özelliğini etkinleştirin:
POST https://api360.yandex.net/security/v1/org/<org_id>/service_applications/activate
<org_id>
yerine kurum ID'nizi girin. -
Servis uygulamasının kaydını yapın. Servis uygulaması yardımıyla geçici kullanıcı OAuth token'ları alabilirsiniz. Geçici token'ın geçerlilik süresi 1 saattir.
-
Ana uygulamayı oluştururken yaptığınız gibi ayrı bir OAuth uygulaması oluşturun (madde 2). Bu uygulamanın erişim izinleri olarak API isteklerinde kullanılacak olan erişim izinlerini kullanın.
-
Bir önceki adımdaki uygulamayı kurumunuz için servis uygulaması yapın.
Örnek
curl --location \ --request POST 'https://api360.yandex.net/security/v1/org/<org_id>/service_applications' \ --header 'Authorization: OAuth <owner_token_to_manage_service_app>' \ --header 'Content-Type: application/json' \ --data-raw '{ \ "applications": [ \ { \ "id": "<OAuth_service_app_client_id>", \ "scopes": [ \ "cloud_api:disk.app_folder", \ "cloud_api:disk.read", \ "cloud_api:disk.write", \ "cloud_api:disk.info" \ ] \ } \ ] \ }'
Kodda şu değerleri kullanın:
-
<org_id>
: Kurum ID'niz, -
<owner_token_to_manage_service_app>
: Madde 3'teki OAuth token'ı, -
<OAuth_service_app_client_id>
: Madde 6.1'deki servis uygulaması ClientID'si,
-
-
Uygulamanın, bir servis uygulaması olarak doğru eklendiğinden emin olun.
Örnek
curl --location \ --request GET 'https://api360.yandex.net/security/v1/org/<org_id>/service_applications' \ --header 'Authorization: OAuth <owner_token_to_manage_service_app>'
Diğer servis uygulamalarını bağlamak için Madde 6'daki adımları tekrarlayın.
-
-
Geçici kullanıcı token'ını alın. Bunu şu API sorgusu ile yapabilirsiniz:
POST /token HTTP/1.1 Host: http://oauth.yandex.ru Content-type: application/x-www-form-urlencoded
Örnek
curl --location \ --request POST 'https://oauth.yandex.ru/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' \ --data-urlencode 'client_id=<OAuth_service_app_client_id>' \ --data-urlencode 'client_secret=<OAuth_service_app_client_secret>' \ --data-urlencode 'subject_token=<user_id>' \ --data-urlencode 'subject_token_type=urn:yandex:params:oauth:token-type:uid'
veya
curl --location --request POST 'https://oauth.yandex.ru/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' \ --data-urlencode 'client_id=<OAuth_service_app_client_id>' \ --data-urlencode 'client_secret=<OAuth_service_app_client_secret>' \ --data-urlencode 'subject_token=<user_email>' \ --data-urlencode 'subject_token_type=urn:yandex:params:oauth:token-type:email'
Kodda şu değerleri kullanın:
-
<OAuth_service_app_client_id>
: Madde 6.1'deki servis uygulaması ClientID'si,Kopyalandı -
<OAuth_service_app_client_secret>
: Servis uygulamasının Client secret'i, -
<user_id>
: Token almak istediğiniz kullanıcının kimlik belirleyicisi (ID'si), -
<user_email>
– belirtecin alınacağı kullanıcının elektronik posta adresi şu şekilde olmalıdırusername@domain.ru
.
Yanıtı, Yandex 360 servislerinin API'lerine yönelik olan sorgularda kullanılması gereken token'ı içerecek.
-
Servis uygulamalarıyla programlar aracılığıyla çalışma ayrıntıları API 360 Rehberi'nde açıklanır.
Kullanıcı kaynaklarıyla çalışmak için sorgu örnekleri
Servis uygulamaları aracılığıyla elde edilen geçici token'lar örneğin veri yedekleme, denetim veya bilgi arama amacıyla API üzerinden kurumdaki belirli kullanıcı kaynaklarına erişmeyi sağlar.
Yandex Disk
-
Yandex Disk API'si dosyalarla çalışmak ve bunlara erişimi yönetmek için kullanılır. Yandex Disk API'sine sorgu göndermek için Polygon servisini kullanabilirsiniz.
Örnek
Çalışanın Disk'i hakkında meta bilgi isteme:
curl --request GET 'https://cloud-api.yandex.net/v1/disk' \ --header 'Accept: application/json' \ --header 'Authorization: OAuth <oauth_token>'
<oauth_token>
yerine geçici kullanıcı token'ının Madde 7'deki değerini kullanın.
Yandex Mail
-
Uygulamalar, OAuth protokolünü kullanarak Yandex Mail e-posta kutularına erişebilir. Yandex Mail IMAP ve SMTP sunucuları OAuth kullanıcı kimlik doğrulamasını destekler.
Örnek
Kullanıcı e-postalarının IMAP protokolü aracılığıyla sayılması için Python komut dosyası:
import imaplib def generate_oauth2_string(username, access_token): auth_string = 'user=%s\1auth=Bearer %s\1\1' % (username, access_token) return auth_string def get_imap_connector(username="<user_email>", token="<oauth_token>"): auth_string = generate_oauth2_string(username, token) imap_connector = imaplib.IMAP4_SSL("imap.yandex.com", 993) imap_connector.authenticate('XOAUTH2', lambda x: auth_string) return imap_connector def get_total_emails(imap_connector): mailboxes = [] ttl_emails = 0 for mailbox in imap_connector.list()[1]: mailboxes.append(mailbox.decode("utf-8").split()[-1].replace('"', '')) for mailbox in mailboxes: try: imap_connector.select(mailbox) resp_code, mail_count = imap_connector.select(mailbox=mailbox, readonly=True) ttl_emails += int(mail_count[0].decode("utf-8")) except imaplib.IMAP4.error: print(f"Folder: {folder} Error reading emails") except ValueError: print(f"Folder: {folder} Error reading emails") user_logout(imap_connector) return ttl_emails get_total_emails(get_imap_connector())
Kodda şu değerleri kullanın:
<user_email>
– verilerin alınacağı, kullanıcınınusername@domain.ru
biçimindeki e-posta adresi;<oauth_token>
: Madde 7'deki geçici kullanıcı token'ı.
E-posta protokollerinin nasıl çalıştığına ilişkin ayrıntılar için IMAP açıklaması ve SMTP özellikleri bölümlerine bakın.
Yandex Takvim
-
OAuth belirteçlerini kullanarak CalDAV protokolü aracılığıyla Yandex Calendar kullanıcılarıyla etkileşim kurmak mümkündür.
Örnek 1
Seçilen kullanıcı takvimini silmeyi sağlayan Python komut dosyası:
import caldav def get_principal(username, leg_token): client = caldav.DAVClient(url="https://caldav.yandex.ru/", username=username, password=leg_token) principal = client.principal() return principal my_principal = get_principal("<user_email>", "<oauth_token>") def find_delete_calendar(my_principal, calendar_name="Benim Takvimim"): try: calendar = my_principal.calendar(name=calendar_name) assert calendar print(f"We found an existing calendar with name {calendar_name}, now deleting it") calendar.delete() except caldav.error.NotFoundError: print("Calendar was not found") find_delete_calendar(my_principal)
Kodda şu değerleri kullanın:
-
<user_email>
: Veri almak istediğiniz kullanıcınınusername@domain.ru
şeklindeki e-posta adresi, -
<oauth_token>
: Madde 7'deki geçici kullanıcı token'ı.
KopyalandıNot
Yönetici tarafından silinmiş olan kullanıcı takvimini daha sonra ne yönetici ne de kullanıcı geri yükleyebilir.
Örnek 2
Yandex Takvim'de, Yandex Telemost'taki bir görüntülü toplantıya bağlantı içeren bir toplantı oluşturma istekleri:
-
Tek bir etkinlik için konferans.
OluşturmaAlımcurl -v "https://caldav.yandex.ru/calendars/<user_email>/events-default/<event_uid>.ics" \ -H "Authorization: OAuth <oauth_token>" \ -H "Content-type: text/ics" \ -X PUT \ --data-binary " BEGIN:VCALENDAR BEGIN:VEVENT X-TELEMOST-REQUIRED:TRUE DESCRIPTION:Single event UID:<event_uid> DTSTART:20230417T120000Z END:VEVENT END:VCALENDAR"
Kodda şu değerleri kullanın:
<user_email>
– verilerin alınacağı, kullanıcınınusername@domain.ru
biçimindeki e-posta adresi;<event_uid>
: Toplantının ve dosya adının ID'si (örneğin:a5e3e7b0-dd11-11ed
);<oauth_token>
: Madde 7'deki geçici kullanıcı token'ı.
Başarılı bir yanıtın örneği:
HTTP/1.1 201 Created
curl -v "https://caldav.yandex.ru/calendars/<user_email>/events-default/<event_uid>.ics" \ -H "Authorization: OAuth <oauth_token>"
Kodda şu değerleri kullanın:
-
<user_email>
: Veri almak istediğiniz kullanıcınınusername@domain.ru
şeklindeki e-posta adresi, -
<event_uid>
: Toplantının ve dosya adının ID'si (örneğin:a5e3e7b0-dd11-11ed
); -
<oauth_token>
: Madde 7'deki geçici kullanıcı token'ı.
KopyalandıBaşarılı bir yanıtın örneği:
HTTP/1.1 200 OK BEGIN:VCALENDAR ... BEGIN:VEVENT DTSTART:20230417T120000Z DTEND:20230417T120000Z SUMMARY:İsimsiz UID:a5e3e7b0-dd11-11ed DESCRIPTION:Link to video conference: https://telemost.yandex.ru/j/78566269088286\n\nSingle event X-TELEMOST-CONFERENCE:https://telemost.yandex.ru/j/78566269088286 ... END:VEVENT END:VCALENDAR
-
Tekrarlanan bir etkinlik için konferans.
OluşturmaAlımcurl -v "https://caldav.yandex.ru/calendars/<user_email>/events-default/<event_uid>.ics" \ -H "Authorization: OAuth <oauth_token>" \ -H "Content-type: text/ics" \ -X PUT \ --data-binary " BEGIN:VCALENDAR BEGIN:VEVENT X-TELEMOST-REQUIRED:TRUE DESCRIPTION:Weekly event UID:<event_uid> DTSTART:20230411T200000Z RRULE:FREQ=WEEKLY END:VEVENT END:VCALENDAR"
Kodda şu değerleri kullanın:
-
<user_email>
: Veri almak istediğiniz kullanıcınınusername@domain.ru
şeklindeki e-posta adresi, -
<event_uid>
: Toplantının ve dosya adının ID'si (örneğin:a5e3e7b0-dd11-11ed
); -
<oauth_token>
: Madde 7'deki geçici kullanıcı token'ı.
KopyalandıBaşarılı bir yanıtın örneği:
HTTP/1.1 201 Created
curl -v "https://caldav.yandex.ru/calendars/<user_email>/events-default/<event_uid>.ics" \ -H "Authorization: OAuth <oauth_token>"
Kodda şu değerleri kullanın:
-
<user_email>
: Veri almak istediğiniz kullanıcınınusername@domain.ru
şeklindeki e-posta adresi, -
<event_uid>
: Toplantının ve dosya adının ID'si (örneğin:a5e3e7b0-dd11-11ed
); -
<oauth_token>
: Madde 7'deki geçici kullanıcı token'ı.
KopyalandıBaşarılı bir yanıtın örneği:
BEGIN:VCALENDAR ... BEGIN:VEVENT RECURRENCE-ID:20230411T200000Z X-TELEMOST-CONFERENCE:https://telemost.yandex.ru/j/39864310386563 DESCRIPTION:Görüntülü toplantı bağlantısı: https://telemost.yandex.ru/j/39864310386563\n\nWeekly event ... END:VEVENT BEGIN:VEVENT RRULE:FREQ=WEEKLY;BYDAY=TU;INTERVAL=1 DESCRIPTION:Görüntülü toplantı bağlantısı: https://telemost.yandex.ru/j/39864310386563\n\nWeekly event ... END:VEVENT
-
Takvim etkinliği oluşturmak veya düzenlemek için bir
PUT
sorgusu gönderilirken istemci,VEVENT
öğelerinin içine standart olmayan birX-TELEMOST-REQUIRED
özelliği ekler. Böyle bir sorgu alan sunucu, Yandex Telemost'taki görüntülü toplantıya yönlendiren bir bağlantı oluşturur ve bunu metin biçiminde toplantı açıklamasına ekler.İstemci randevuları okurken sunucu
X-TELEMOST-REQUIRED
özelliğini belirtmez. Ancak Yandex Telemost'taki görüntülü toplantıya yönlendiren bağlantı oluşturulduysa, sunucu bu bağlantıyı standart olmayanX-TELEMOST-CONFERENCE
özelliğinin içinde geri gönderir.CalDAV protokolü ile çalışma ayrıntıları için bu protokolün spesifikasyonunu inceleyin.
-
Belirli bir kullanıcı adına verilere erişime izin veren özel kod.
E-posta sunucusu ile istemci arasında takvim ve adres kaydı verilerini senkronize etmeye yönelik protokol.