「カレンダー作成」サーバーAPIについて
任意のユーザーのカレンダーの予定を、APIを利用して管理者権限(対象ユーザーでログインするのではなく)で追加したいと考えています。
APIドキュメントには
▼ カレンダー
▼ カレンダー Server API
▼ カレンダー作成
というAPIが存在するのですが、このAPIを実行しようとすると以下のようなレスポンスが戻ってきてAPI実行が失敗します。
}
~略~
"domain": "calendar",
"code": "SERVICE_UNAVAILABLE",
"message": "Service fail"
}
当方、ライトプランを利用しているのですが、このAPIを実行するための何らかの設定や権限等が必要なのでしょうか。
ご存知の方がいらっしゃるようでしたら、教えていただけると助かります。
よろしくお願いします。
APIドキュメントには
▼ カレンダー
▼ カレンダー Server API
▼ カレンダー作成
というAPIが存在するのですが、このAPIを実行しようとすると以下のようなレスポンスが戻ってきてAPI実行が失敗します。
}
~略~
"domain": "calendar",
"code": "SERVICE_UNAVAILABLE",
"message": "Service fail"
}
当方、ライトプランを利用しているのですが、このAPIを実行するための何らかの設定や権限等が必要なのでしょうか。
ご存知の方がいらっしゃるようでしたら、教えていただけると助かります。
よろしくお願いします。
投稿に新しいコメントが追加されましたら通知を送信します。
コメント5
업데이트 된 답글입니다.
LINE WORKS 公式アカウント
Content-Type を設定の上、お試しください。
また、DeveloperConsole にて Server API Consumer Key の利用範囲でカレンダーが許可されているかどうかも、合わせてお確かめください。
2019.12.17
업데이트 된 답글입니다.
ken 投稿者
リクエストヘッダには Content-Type: application/json; charset=UTF-8 を指定しており、Server API Consumer Key の利用範囲にカレンダーの追加は許可されています。
(利用しようとしているのは、カレンダーの「ServerAPI」なので、Server API のConsumerKeyを指定しています)
以下、実際のAPI呼び出しやリクエスト内容等について記載しますので、ご回答いただけると助かります。
■API呼び出し
https://apis.worksmobile.com/r/{API_ID}/calendar/v1/{AccountID}/calendars/defaultCalendarId/events
■リクエストボディ
{
"ical":"BEGIN:VCALENDAR
PRODID:Works Mobile Calendar
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Asia/Tokyo
BEGIN:STANDARD
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
TZNAME:JST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
SEQUENCE:0
CLASS:PUBLIC
SUMMARY:テストの予定
DTSTART;TZID=Asia/Tokyo:20191204T130000
DTEND;TZID=Asia/Tokyo:20191204T140000
DESCRIPTION:予定の説明欄です
LOCATION:場所はここです
CREATED:20191204T034301Z
LAST-MODIFIED:20191204T034301Z
DTSTAMP:20191204T034301Z
END:VEVENT
END:VCALENDAR"
}
■レスポンス
{
"requestTime": "2019-12-17 13:41:17",
"hostName": "jvcapi001",
"remoteIp": "10.132.50.173",
"requestUrl": "http://jp1-api.calendar.worksmobile.com:5001/v1/{AccountID}/calendars/defaultCalendarId/events",
"response": "IllegalArgumentException",
"requestUid": "vcz8frza",
"requestMethod": "POST",
"responseStatus": "0",
"requestContentType": "application/json; charset=UTF-8",
"elapseTime": "18",
"requestParamMap": "{ical=BEGIN:VCALENDARPRODID:Works Mobile CalendarVERSION:2.0BEGIN:VTIMEZONETZID:Asia/TokyoBEGIN:STANDARDTZOFFSETFROM:+0900TZOFFSETTO:+0900TZNAME:JSTDTSTART:19700101T000000END:STANDARDEND:VTIMEZONEBEGIN:VEVENTSEQUENCE:0CLASS:PUBLICSUMMARY:テストの予定DTSTART;TZID=Asia/Tokyo:20191204T130000DTEND;TZID=Asia/Tokyo:20191204T140000DESCRIPTION:予定の説明欄ですLOCATION:場所はここですCREATED:20191204T034301ZLAST-MODIFIED:20191204T034301ZDTSTAMP:20191204T034301ZEND:VEVENTEND:VCALENDAR}",
"domain": "calendar",
"code": "SERVICE_UNAVAILABLE",
"message": "Service fail"
}
--
"response": "IllegalArgumentException",
の部分については、AccountID をドメイン名なしで指定すると、NotExistException になり、AccountID で別のドメイン名を指定すると AuthorizationException になりますので、API自身は正しく判断して処理しようとしているが、なんらかのArgumentが正しくないのではないかとは思うのですが、何が悪いのかがわかりません。
お手数おかけしますが、よろしくお願いします。
2019.12.17
업데이트 된 답글입니다.
ken 投稿者
リクエストボディを以下のように変更したところ、登録できました。
APIの説明内容(例)を変更しておいた方がよいような気がします。
{
ical:"BEGIN:VCALENDAR\r\n
PRODID:Works Mobile Calendar\r\n
VERSION:2.0\r\n
BEGIN:VTIMEZONE\r\n
TZID:Asia/Tokyo\r\n
BEGIN:STANDARD\r\n
TZOFFSETFROM:+0900\r\n
TZOFFSETTO:+0900\r\n
TZNAME:JST\r\n
DTSTART:19700101T000000\r\n
END:STANDARD\r\n
END:VTIMEZONE\r\n
BEGIN:VEVENT\r\n
SEQUENCE:0\r\n
CLASS:PUBLIC\r\n
SUMMARY:テストの予定\r\n
DTSTART;TZID=Asia/Tokyo:20191220T130000\r\n
DTEND;TZID=Asia/Tokyo:20191220T140000\r\n
DESCRIPTION:予定の説明欄です\r\n
LOCATION:場所はここです\r\n
CREATED:20191220T034301Z\r\n
LAST-MODIFIED:20191220T034301Z\r\n
DTSTAMP:20191220T034301Z\r\n
END:VEVENT\r\n
END:VCALENDAR"
}
ありがとうございました。
2019.12.17
업데이트 된 답글입니다.
LINE WORKS 公式アカウント
ご認識の通り、予定作成 API の body には ical 形式のデータを記載します。
言語によって記載方法は異なりますが、今回のように改行コードを記載する必要がある場合もございます。
ドキュメントの記述に関しては検討させていただきます。
貴重なご意見、ありがとうございます。
2019.12.19
업데이트 된 답글입니다.
ken 投稿者
ご回答ありがとうございます。
2019.12.19
まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。