Сбой "Создание календаря в группе календарей" Outlook API конечной точки с ошибкой "ErrorInvalidIdMalformed"
Конечная точка Outlook API "Создать календарь в группе календарей" перестала работать недавно (в течение последних нескольких недель) в мультитенантном приложении, над которым я сейчас работаю.
Вот воспроизведение проблемы с использованием оболочки Python:
import api
>>> url = "https://outlook.office.com/api/v2.0/users/auser@adomain.com/calendargroups"
>>> response = api.get(url)
>>> response
[{
u'ClassId': u'bf22395d-e505-4f58-8504-6e6e8ef8c3c7',
u'Name': u'My Calendar Group',
u'ChangeKey': u'g4QAQQ9PZUGX1I2OsM9/LgAAA0km+g==',
u'@odata.id': u"https://outlook.office.com/api/v2.0/Users('46560569-3535-441e-9bcf-eb093a992360@767316c0-7a9b-4a7c-95e9-5490466be3f0')/CalendarGroups('AAMkAGVmNzJkNGNiLWE4YmYtNDQ2NC1iOGJiLWI5ZmFlYzgyNzVmYgBGAAAAAAC3biJFdLv_S7D_aGLbIKWwBwCDhABBD09lQZfUjU6wz38uAAAAAAEGAACDhABBD09lQZfUjU6wz38uAAADSL12AAA=')",
u'Id': u'AAMkAGVmNzJkNGNiLWE4YmYtNDQ2NC1iOGJiLWI5ZmFlYzgyNzVmYgBGAAAAAAC3biJFdLv_S7D_aGLbIKWwBwCDhABBD09lQZfUjU6wz38uAAAAAAEGAACDhABBD09lQZfUjU6wz38uAAADSL12AAA='
}]
>>> calendargroup_id = response[0]['Id']
>>> url += "/%s/calendars" % calendargroup_id
>>> url
"https://outlook.office.com/api/v2.0/users/auser@adomain.com/calendargroups/AAMkAGVmNzJkNGNiLWE4YmYtNDQ2NC1iOGJiLWI5ZmFlYzgyNzVmYgBGAAAAAAC3biJFdLv_S7D_aGLbIKWwBwCDhABBD09lQZfUjU6wz38uAAAAAAEGAACDhABBD09lQZfUjU6wz38uAAADSL12AAA=/calendars"
>>> api.get(url) // This API call succeeds. It successfully tells us that this calendargroup contains no calendars. In other words it is able to identify the calendargroup using the calendargroup_id we send it.
[]
>>> api.post(url, data={'Name': 'New Calendar'}) // This is the failing API call. If we try to do a POST request in order to create a new calendar, the API can no longer parse our id, and complains:
{u'error': {u'message': u'Id is malformed.', u'code': u'ErrorInvalidIdMalformed'}}
Я подтвердил, что эта ошибка возникает как на конечных точках Microsoft Graph, так и на Outlook API.
Я думаю, что это может быть связано с типом декодирования base64, который выполняется на конечной точке API, потому что я смог заставить работать API, заменив все экземпляры '_' на '+' в одном из идентификаторов. Этот обходной путь не работает, если идентификатор содержит символ "-", и в этом случае я не нашел способа обойти ошибку.
Мы используем много других конечных точек для создания событий, календарных групп и подписок, и все они работают правильно. Только эта конечная точка создает нам проблемы.
Есть идеи как обойти эту ошибку?