コミュニティ

LINE WORKSのテクニカルエキスパート及び開発者と
コードのサンプル、リソース、Tip等を共有し問題解決への相談が可能です。

??dev_메인_타이틀_모바일_ja_JP??

カレンダー

「カレンダー作成」サーバーAPIについて

ken

2019.12.16既読 702

任意のユーザーのカレンダーの予定を、APIを利用して管理者権限(対象ユーザーでログインするのではなく)で追加したいと考えています。

APIドキュメントには
▼ カレンダー
 ▼ カレンダー Server API
  ▼ カレンダー作成
というAPIが存在するのですが、このAPIを実行しようとすると以下のようなレスポンスが戻ってきてAPI実行が失敗します。
}
~略~
"domain": "calendar",
"code": "SERVICE_UNAVAILABLE",
"message": "Service fail"
}
当方、ライトプランを利用しているのですが、このAPIを実行するための何らかの設定や権限等が必要なのでしょうか。

ご存知の方がいらっしゃるようでしたら、教えていただけると助かります。

よろしくお願いします。

コメント5

  • LINE WORKS 公式アカウント

    カレンダー作成 API では Content-Type: application/json; charset=UTF-8 を設定する必要があります。https://developers.worksmobile.com/jp/document/100702701?lang=ja

    Content-Type を設定の上、お試しください。

    また、DeveloperConsole にて Server API Consumer Key の利用範囲でカレンダーが許可されているかどうかも、合わせてお確かめください。

    2019.12.17

    0
  • 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

    0
  • 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

    0
  • LINE WORKS 公式アカウント

    ご質問内容は、カレンダー Server API のカレンダー作成 API ではなく、予定作成 API の内容ですね。

    ご認識の通り、予定作成 API の body には ical 形式のデータを記載します。
    言語によって記載方法は異なりますが、今回のように改行コードを記載する必要がある場合もございます。
    ドキュメントの記述に関しては検討させていただきます。
    貴重なご意見、ありがとうございます。

    2019.12.19

    0
  • ken 投稿者

    失礼しました。「予定作成」APIでした。
    ご回答ありがとうございます。

    2019.12.19

    0
前の投稿 組織/グループカレンダーの予定閲覧
次の投稿メール作成ウィンドウのAPIにおけるURLエンコードについて