カテゴリー内の他の記事

予定の登録(POST)

フォローする

Index

予定の登録(1件)

予定の追加権限のあるユーザーが、1件の予定を登録できます。

  • 通常予定、期間予定を登録できます。繰り返し予定、仮予定は登録できません。

HTTP メソッド

POST

URI

クラウド版

https://(サブドメイン名).cybozu.com/g/api/v1/schedule/events

パッケージ版(Windows環境)

http://(サーバーのIPアドレスまたはホスト名)/scripts/(インストール識別子)/grn.exe/api/v1/schedule/events

パッケージ版(Linux環境)

http://(サーバーのIPアドレスまたはホスト名)/cgi-bin/(インストール識別子)/grn.cgi/api/v1/schedule/events

使用可能なガルーンのバージョン

  • クラウド版 Garoon
  • パッケージ版 Garoon バージョン 4.10.0以降

リクエストの例

POST /g/api/v1/schedule/events HTTP/1.1
Host: {subdomain}.cybozu.com:443
X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=
Content-Type: application/json
  • Content-Type に application/json を指定して下さい。 指定しない場合は JSON が解釈できないため、実行時エラーとなります。

リクエストボディ

リクエストボディには、次のパラメータが必須です。
  1. eventType
    REGULAR、ALL_DAYのみ指定可能です。
  2. start
  3. attendees、またはfacilities
    少なくとも1人の参加者、または1つの施設が必須です。
    それぞれ ①type ②codeまたはid が必須です。
  4. end、または isStartOnly を true
    endは次にあてはまる場合、必須です。
    • isStartOnlyがfalse(または指定されていない)の場合
    • facilitiesが指定されている場合
    • eventTypeがALL_DAYの場合

 また、次のパラメータには条件があります。

  • watchers
    visibilityTypeがSET_PRIVATE_WATCHERSの場合、必須です。
    それぞれ ①type ②codeまたはid が必須です。
  • facilityUsingPurpose
    「施設の利用申請」を有効にした場合、必須です。

※各フィールドの形式については スケジュールのeventオブジェクトをご確認ください。

レスポンスの例

処理が成功すると、予定の内容がJSON形式で返されます。 ※各フィールドの形式については スケジュールのeventオブジェクトをご確認ください。

制限事項

共通仕様の制限事項 をご確認ください。

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

Avatar
SHIMADA

クラウド版にて、非公開のスケジュールエントリーを、別システムからインポートする為に、
HTMLポートレット上に作成したJavaScriptから、REST APIでスケジュール
のPOSTを行おうとしています。
すでにGaroonにログインした状態からの実行になりますので、
RequestHeaderにX-Requested-With:XMLHttpRequestを設定し、セッション認証で実行しようとしているのですが
「HTTP Status:520 Error:FW00043 ページを表示できません。不正なリクエストが行われた可能性があります。」
となり、登録を行うことができません。
代わりにパスワード認証でPOSTすると正常に登録が行われます。

また、GETについてはセッション認証で正常に取得できることも確認しています。

下記の様なJavaScriptプログラムでPOSTの処理を行っていますが、どこか問題はありますでしょうか?


//"開始日","開始時刻","終了日","終了時刻","予定","予定詳細","メモ"
var eventInfo = {
   "eventType":"REGULAR",
   "eventMenu":ary[4],        //打合わせとか
   "subject":ary[5],            //件名
   "notes":ary[6],            //メモ
   "visibilityType":"PRIVATE",    //公開,非公開,メンバー指定
   "start":{
       "dateTime": "2018-10-16T00:00:00+09:00",
       "timeZone":"Asia/Tokyo"
   },
   "end":{
       "dateTime": "2018-10-16T23:59:59+09:00",
       "timeZone":"Asia/Tokyo"
   },
   "isAllDay": true,
   "isStartOnly": false,
   "attendees":[{
       "code":"xxxxx",
       "type":"USER"
   }]
};
//
var uri = location.protocol + "//" + location.hostname;
uri += "/g/api/v1/schedule/events"

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
    switch(xhr.readyState){
    case 0: //UNSENT
    case 1: //OPEND
    case 2: //HEADERS_RECIEVED
    case 3: //LOADING
       break;
    case 4: //DONE
       if( xhr.status ){
          console.log( xhr.responsesText );
          resolve(cno+1);
       }else{
          console.log( xhr.responsesText );
          reject(xhr.responsesText);
       }
    }
}
xhr.open("POST",uri);
//xhr.setRequestHeader("Host",location.hostname+":443");
//xhr.setRequestHeader("X-Cybozu-Authorization",window.btoa("xxxxx:xxxxx"));
xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");
xhr.setRequestHeader("Content-Type","application/json");
xhr.send( JSON.stringify(eventInfo) );

Avatar
cybozu Development team

SHIMADA様

REST APIのPOST、PATCH、DELETEでは、セッション認証の場合は、RequestTokenが必要ですが、それがなさそうです。

RequestTokenについては以下の記事をご確認ください。

https://developer.cybozu.io/hc/ja/articles/360001197206

記事の記述がわかりにくく、お手数をおかけしました。

今後は、目に止まりやすい場所に記述するように改善いたします。

Avatar
SHIMADA

cybozu Development team 様

早々のご回答ありがとうございました。

早速、再試行したところ、正常に動作することを確認できました。

SOAP APIを使った時には共通仕様の項目に記載があり、使った記憶があるのですが、REST APIには記載がなかったので忘れていました。

ログインしてコメントを残してください。