Index
レコードの登録(1件)
1件のレコードを登録できます。
- 必須項目が設定されている場合には、その値をリクエストに含めてください。
HTTP メソッド
POST
URI
https://(サブドメイン名).cybozu.com/k/v1/record.json
ゲストスペース内のアプリの場合
https://(サブドメイン名).cybozu.com/k/guest/(スペースのID)/v1/record.json
必要なアクセス権
- アプリのレコード追加権限
- 値を登録するレコードの編集権限
- 値を登録するフィールドの編集権限
次のフィールドに値を登録する場合、アプリ管理権限が必要です。
- 作成者
- 更新者
- 作成日時
- 更新日時
リクエストプロパティ
パラメータ名 | 指定する値 | 必須 | 説明 |
---|---|---|---|
app | 数値又は文字列 | 必須 | アプリの ID を指定します。 |
record | Object | 省略可 | レコードの情報(フィールドコードとフィールドの値)をオブジェクトで指定します。
|
リクエストボディの構造
リクエストの例
リクエストヘッダ
POST /k/v1/record.json HTTP/1.1 Host: example.cybozu.com:443 X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU= Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU= Content-Type: application/json
- Content-Type に application/json を指定して下さい。 指定しない場合は JSON が解釈できないため、実行時エラーとなります。
ボディ
アプリ番号「1972」のアプリに以下のレコード追加する場合
フィールドの形式 | フィールドコード | 値 |
---|---|---|
文字列(1行) | 文字列__1行 | テスト |
文字列(複数行) | 文字列__複数行 | テスト\nテスト2 |
数値 | 数値 | 20 |
日時 | 日時 | 2014-02-16T08:57:00Z |
チェックボックス | チェックボックス | sample1、sample2 |
ユーザー選択 | ユーザー選択 | sato ※ログイン名を指定 |
ドロップダウン | ドロップダウン | Sample1 |
リンク | リンク_ウェブ | https://www.cybozu.com |
テーブル | Table | |
テーブル内の 文字列1行 | テーブル文字列 | テスト |
レスポンスの例
登録したレコードのレコードIDとリビジョンが返されます。
JavaScriptサンプル
XMLHttpRequest
レコードの一括登録
複数のレコードを一括で登録できます。
- 一度に登録できるレコードは 100 件までです。
- 必須項目が設定されている場合には、その値をリクエストに含めてください。
- リクエストの records パラメータで指定した順番でレコードを登録します。またレスポンスのレコードIDの順序もその順番に対応します。
- 一括登録に失敗すると、リクエストに含まれるレコードの処理はすべてキャンセルされます。
HTTP メソッド
POST
URI
https://(サブドメイン名).cybozu.com/k/v1/records.json
ゲストスペース内のアプリの場合
https://(サブドメイン名).cybozu.com/k/guest/(スペースのID)/v1/records.json
必要なアクセス権
- アプリのレコード追加権限
- 値を登録するレコードの編集権限
- 値を登録するフィールドの編集権限
次のフィールドに値を登録する場合、アプリ管理権限が必要です。
- 作成者
- 更新者
- 作成日時
- 更新日時
リクエストプロパティ
パラメータ名 | 指定する値 | 必須 | 説明 |
---|---|---|---|
app | 数値又は文字列 | 必須 | アプリのIDを指定します。 |
records | 配列 (Object) |
必須 | 登録するレコードの情報を指定します。 本パラメータの値には、recordオブジェクトの配列を記述します。 配列の中にレコードの情報(フィールドコードとフィールドの値)をオブジェクトで指定します。
|
リクエストボディの構造(※n件のレコードを登録する場合)
リクエストの例
ボディ
アプリID「1972」のアプリに以下の2件のレコード追加する場合
1件目
フィールドの形式 | フィールドコード | 値 |
---|---|---|
リッチエディタ | rich_editor | test1 |
ユーザー選択 | user_select | ログイン名:sato |
2件目
フィールドの形式 | フィールドコード | 値 |
---|---|---|
リッチエディタ | rich_editor | test2 |
ユーザー選択 | user_select | ログイン名:kato |
レスポンスの例
登録したレコードのレコードIDとリビジョンが返されます。
レコードIDの順序はリクエストに指定したレコードの順序と対応します。
JavaScriptサンプル
XMLHttpRequest
制限事項
- 次のフィールドは、値を登録できません。
- ルックアップフィールドによって値が入力されるフィールド
- ステータス
- カテゴリー
- 計算
- 作業者
その他につきましては、共通仕様の制限事項 をご確認ください。
関連Tips
些細な指摘で恐縮ですが、サンプルのJSONがフォーマットエラーのようです
Sugawara Genkiさん
cybozu.com developer network事務局です。
JSONフォーマットエラーになる箇所の修正を致しております。
ご確認ください。
サンプルのJSONでCB_IJ01が返ってくる部分がありましたので報告します。
//エラー
"ユーザー選択": {
"value":
{
"code": "sato"
}
},
//成功
"ユーザー選択": {
"value":
[
{
"code": "sato"
}
]
},
ユーザー選択の箇所は陳腐化していて、
下記のリンクが正しいようなので、ご参考ください。
■フィールド形式 – cybozu.com developer network
https://cybozudev.zendesk.com/hc/ja/articles/202166330
XMLHttpRequestを使ったPOSTの場合、プリフライトがOPTIONSで飛ぶので、そのタイミングで405が返ってきてしまいます。
回避策はありませんか?
いの 様
お世話になっております。cybozu developer network 事務局でございます。
var url = 'https://{subdomain}.cybozu.com/k/v1/records.json';
の{subdomain}をご自身の環境に合わせて書き換えられましたか?
ご確認の程宜しくお願い致します。
事務局ご担当者様
お世話になります。
以下情報です。
ご確認お願いいたします。
ターゲットアプリのURL→ https://hoge.cybozu.com/k/59/
----
function form_onsubmit()
{
var DOMAIN = "hoge.cybozu.com";
var BASE_URL = "https://" + DOMAIN + '/k/v1/record.json';
var APP_ID = 59;
var APITOKEN = "dkajfsdjfakdjkasljdfkajdkasldjkajfadklja";
var body = {
"app": APP_ID,
"record": {
"companyname": {
"value": $('#companyname').val()
},
"busho": {
"value": $('#busho').val()
},
"name": {
"value": $('#name').val()
},
"mail": {
"value": $('#mail').val()
},
"naiyo": {
"value": $('#naiyo').val()
}
}
};
var xhr = new XMLHttpRequest();
xhr.open('POST', BASE_URL);
xhr.setRequestHeader('X-Cybozu-API-Token', APITOKEN);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); // <-このへんは付けても付けなくても変化なし
xhr.setRequestHeader('X-HTTP-Method-Override', 'POST'); // <-このへんは付けても付けなくても変化なし
xhr.onload = function() {
if (xhr.status === 200) {
// success
console.log(JSON.parse(xhr.responseText));
} else {
// error
console.log('status: '+xhr.status); // <-このログは吐かれません
}
};
xhr.send(JSON.stringify(body));
}
----
(コンソールのログ)
OPTIONS https://hoge.cybozu.com/k/v1/record.json 405 (JSPs only permit GET POST or HEAD)
XMLHttpRequest cannot load https://hoge.cybozu.com/k/v1/record.json. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://myserver' is therefore not allowed access. The response had HTTP status code 405.
----
※Fiddler と Postman を使って、ローカルから同じ情報をPOSTして200が返りkintoneアプリにレコードが追加されることは確認できています。
いの 様
お世話になっております。cybozu developer network 事務局でございます。
同じソースコード(bodyだけシンプルにした)で試してみたところ、正常に登録されました。
※同じドメイン内でリクエストを投げています。
エラーからすると、サーバー側に拒否されたようです。
異なるドメイン間でリクエストしていたのでしょうか?
異なるドメインですと、kintone.proxyを使うことになります。
詳細は次のページをご参考ください。
外部APIの実行:
https://developer.cybozu.io/hc/ja/articles/202166320
コミュニティ上の同じような質問:
https://developer.cybozu.io/hc/ja/community/posts/202863444-Kintone%E3%81%AE%E7%95%B0%E3%81%AA%E3%82%8B%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E9%96%93%E3%81%A7%E3%81%AEFile%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89-%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89
また、こちらは本記事に対するフィードバックのみ受け付けております。
直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。
有志達から色々アドバスを頂けると思います。
どうぞよろしくお願いいたします。
お世話になります。
おっしゃる通り、外部ドメインからの更新・登録を目的としています。
#「kintone.proxy」って、cybozeドメインから外部ドメインへリクエストを投げる時に使うものではなかったでしたっけ?
やりたいことは以下でご紹介されていることと同じなので、node.jsからPOSTすることで当初の目的は実現できました。
https://developer.cybozu.io/hc/ja/articles/207898723-Slack%E3%81%8B%E3%82%89%E6%89%8B%E8%BB%BD%E3%81%ABkintone%E3%81%B8%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
ただ、XMLHttpRequestを使った例を掲載されていたので、これでいけるかもと思った次第です。
『同じドメイン』限定なら、前提条件として示していただきたいと思いました。←これは『本記事に対するフィードバック』にならないでしょうか?
文脈から察するに、『サーバー側』にOPTIONSヘッダーを受け付けるようにしていただくのは難しそうですし、「"Access-Control-Allow-Origin" : "*"」を返していただくことも難しいのでしょうね。
やはり最初の質問の回答としては「回避策はない」ということになりますかね。
これ以上の進展が無ければ本コメントへの返信は不要です。ページを汚して申し訳ございませんでした。
いの 様
お世話になっております。cybozu developer network 事務局でございます。
外部サービスからkintoneへのPOSTですね。
ドメインの異なるサイボウズ製品だと勘違いしてしまいまして、大変失礼しました。
結論から言うと、「"Access-Control-Allow-Origin" : "*"」を返してくることはできないです。
ご期待に沿えず申し訳ございません。
ブラウザー経由ではなく、ご自身でサーバーを用意してそこにプログラムを置くか、
MS Flow等CORSを許可する他社製品を経由するなどのやり方が一般的です。
また、フィードバックいただきありがとうございました。
真摯に受け止め改善を検討いたします。
今後ともよろしくお願いいたします。
Cybozu Development team様
ichiro uozuです。初めての投稿になります。よろしくお願いします。
このページに記載してございます、ゲストスペースのエンドポイントでのレコードの登録である下記のAPIを実行しているのですが、
"message": "権限がありません。"
と表示され、レコードの登録が出来ません。
https://(サブドメイン名).cybozu.com/k/guest/(スペースのID)/v1/records.json
ただし下記の通常のAPIのエンドポイントを使用するとレコードの登録が可能です。
https://(サブドメイン名).cybozu.com/k/v1/record.json
開発環境は下記になっております。
・同じTOKENを使用している
・同じアプリにレコードをPOSTしている
・everyoneに対してレコードの登録権限を付加済み
ゲストスペースのエンドポイントを使用してレコードの登録を行うには他にも何か条件が必要なのでしょうか?
ichiro uozu様
お世話になっております。cybozu developer network 事務局でございます。
ゲストスペース上のアプリに対してレコード登録を行う場合、
エンドポイントを「guest/(スペースのID)/v1/xxx.json 」とすることで実行可能です。
権限については、通常のアプリ(ゲストスペース以外にあるアプリ)に対して実行する際と同じ動作になります。
他に必要な条件はありません。
下記をご確認ください。
・レコード登録対象のアプリが、ゲストスペース上にあるか
(アプリを開いたときのURLがhttps://subdomain.cybozu.com/k/guest/xx/xx/ となっているか)
・APIトークンを利用している場合、トークンのアクセス権で「レコード追加」が有効になっているか
また、こちらは記事のフィードバック欄です。
技術的なご質問についてはぜひコミュニティをご活用ください。