Office365 REST API - создание события календаря с вложениями

Я не могу создать событие календаря с вложениями с помощью API отдыха Office365. Создание событий без вложений не является проблемой. Попытка создания событий с вложениями создает событие, но отправляемые файлы не добавляются. Сервер отвечает кодом ответа 201.

Я отправляю запрос POST по адресу:

https://graph.microsoft.com/v1.0/me/calendars/$(calendarID)/events

Я использую следующий заголовок авторизации:

Authorization: Bearer $(tokenString)

Запросить полезную нагрузку:

{
  "start": {
    "dateTime": "2017-09-27T20:00:00.000",
    "timeZone": "UTC"
  },
  "end": {
    "dateTime": "2017-09-27T21:00:00.000",
    "timeZone": "UTC"
  },
  "attendees": [
    {
      "emailAddress": {
        "address": "person@example.com"
      },
      "type": "Required"
    }
  ],
  "subject": "Example subject",
  "body": {
    "content": "Example content",
    "contentType": "Text"
  },
  "hasAttachments": true,
  "sensitivity": "Normal",
  "attachments": [
    {
      "@odata.type": "#microsoft.graph.fileAttachment",
      "name": "$(fileName)",
      "contentBytes": "$(base64EncodedString)"
    }
  ]
}

Я следую за документацией по адресу https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/calendar_post_events. Мое событие следует схеме событий, а вложения - схеме fileAttachment.

Я пробовал разные значения для @odata.type, удаляя hasAttachments из запроса, а также добавляя поля name, size и contentType во вложение. Все они дают одинаковый результат - ответ 201 и событие, созданное без вложений.

Любая помощь будет высоко ценится, спасибо!

1 ответ

Решение

Я тоже это вижу! Я могу опубликовать вложение к событию после его создания, но не могу добавить его в исходную полезную нагрузку create.

В качестве обходного пути, вы можете создать событие, а затем сделать

POST /me/events/{eventid}/attachments

{
  "@odata.type": "#microsoft.graph.fileAttachment",
  "name": "$(fileName)",
  "contentBytes": "$(base64EncodedString)"
}

Я проверю с календарями об этом, чтобы понять, почему он не работает во время первоначального POST.

Другие вопросы по тегам