Microsoft Graph API, создающий повторяющееся событие, возвращает 500

Я пишу приложение, которое синхронизируется с событиями Office365, используя Microsoft Graph API v1.0.

При создании одного события событие создается, как ожидалось:

Response Status Code: 201 Created
Request URL: https://graph.microsoft.com/v1.0/me/calendars/<myCalendarId>/events
Request Method: POST
Request Payload:
{
    "subject": "single event",
    "start": {
        "dateTime": "2020-02-15T09:00:00",
        "timeZone": "Europe/Berlin"
    },
    "end": {
        "dateTime": "2020-02-15T10:00:00",
        "timeZone": "Europe/Berlin"
    },
    "attendees": [],
    "type": "singleInstance",
    "location": {
        "displayName": null
    },
    "recurrence": null
}

Однако, если я отправляю запрос на создание повторяющегося события, я получаю ответ об ошибке.

Response Status Code: 500 Internal Server Error
Request URL: https://graph.microsoft.com/v1.0/me/calendars/<myCalendarId>/events
Request Method: POST
Request Payload:
{
    "subject": "test recurring event",
    "start": {
        "dateTime": "2020-02-14T09:00:00",
        "timeZone": "Europe/Berlin"
    },
    "end": {
        "dateTime": "2020-02-14T10:00:00",
        "timeZone": "Europe/Berlin"
    },
    "attendees": [],
    "location": {
        "displayName": null
    },
    "recurrence": {
        "pattern": {
            "daysOfWeek": [],
            "type": "daily"
        },
        "range": {
            "numberOfOccurrences": "2",
            "recurrenceTimeZone": "Europe/Berlin",
            "startDate": "2020-02-14",
            "type": "numbered"
        }
    }
}
Response Body:
{
  "error": {
    "code": "ErrorInternalServerError",
    "message": "An internal server error occurred. The operation failed.",
    "innerError": {
      "request-id": "2d97931c-e08c-45a8-8167-5849df53a694",
      "date": "2020-02-14T14:38:28"
    }
  }
}

Мне кажется странным, что добавление настроек повторения вызывает Internal Server Error. Что я могу сделать, чтобы создать повторяющееся событие с помощью API?


person Eduard    schedule 14.02.2020    source источник
comment
Что содержит ответ body? Часто вы обнаруживаете удобочитаемое сообщение об ошибке или что-то в этом роде.   -  person misorude    schedule 14.02.2020
comment
Я отредактировал вопрос и добавил текст ответа.   -  person Eduard    schedule 14.02.2020
comment
Хорошо, если они действительно не дают вам большего, вам действительно нужно спросить MS. Иногда такие API-интерфейсы отвечают кодом ошибки 500 в тех местах, где более уместным будет 400 Bad Request или аналогичный. Затем вы обычно получаете сообщение, в котором говорится, что, в частности, было не так в запросе. Но если это «настоящий» 500, то, вероятно, только MS может сказать вам, что пошло не так. Иногда это просто временные проблемы, поэтому попробуйте еще раз через пару часов или около того. В противном случае вам, возможно, придется найти место для отправки отчета об ошибке.   -  person misorude    schedule 14.02.2020


Ответы (1)


Если вы хотите создать повторяющееся событие, которое происходит ежедневно, вместо настройки шаблона следующим образом:

    "pattern": {
        "daysOfWeek": [],
        "type": "daily"
    },

Пожалуйста, установите шаблон следующим образом:

"pattern": {
  "type": "daily",
  "interval": 1
},

Создание ежедневного шаблона повторения описано здесь в концептуальных документах. В течение следующего дня также будет пример REST в справочной документации.

person Angelgolfer-ms    schedule 19.02.2020
comment
Спасибо, что решили мою проблему. Я вижу в документах, что interval required. Должно ли это не вернуть 400 Bad Request вместо 500 Internal Server Error? - person Eduard; 27.02.2020
comment
Была аналогичная проблема с шаблоном absoluteYearly, в запросе отсутствовал индекс, и API вернул ошибку 500, что не круто - person Monish Sen; 02.03.2020