cURLでkintone REST APIを叩く

## kintone REST API

「あっ！」と言う間にシステム（データベース、ワークフロー、メールの代わり）が作れるkintoneにはAPIがあるので、cURLコマンドで操作してみます。 どのようなAPIがあるかは[kintone REST API Document](https://developer.cybozu.io/hc/ja/articles/201941754) へアクセスしてみてください！！
<img width="909" alt="スクリーンショット 2017-08-22 15.21.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/100494/035808b2-0297-7341-e723-12ceae033d56.png">

## kintoneアプリを作ってみる
### フィールド
フォームに配置するフィールド種類とフィールドコード。
このフィールドコードをキーに処理していきます。

| フィールド種類       | フィールドコード       |
|:-----------------|:------------------|
| 文字列（一行）       | Title             |
| 数字              | Number            |
| 日付              | Date             |
| 添付ファイル        | File              |

### APIトークン
アプリの設定画面から、APIトークンを生成しておきましょう。cURLコマンドでAPIを操作するときの認証で必要です。APIトークンの設定画面で、レコード閲覧、レコード追加、レコード編集、レコード削除の権限にチェックしましょう。

## cURL コマンド

- "app" の数字は、アプリID
- レコードをPUTする際の"id"は、レコードID
- レコードのコメントをPOSTする際の"record"は、レコードID

### レコードの取得（1件）

```GET.Record.sh
curl -X GET 'https://{subdomain}.cybozu.com/k/v1/record.json?app=139&id=1' \
  -H 'X-Cybozu-API-Token: {APIToken}'
```

### レコードの取得（一括）
- 一度に取得できるレコードは500件まで
- クエリー、取得したいフィールド指定も可能

URLパラメータ指定

```GET.Records.sh
curl -X GET 'https://{subdomain}.cybozu.com/k/v1/records.json?app=139' \
  -H 'X-Cybozu-API-Token: {APIToken}'
```

JSON指定

```GET.Records.sh
curl -X GET 'https://{subdomain}.cybozu.com/k/v1/records.json?app=139' \
  -H 'X-Cybozu-API-Token: {APIToken}' \
  -H 'Content-Type: application/json' \
  -d '{"app": 139,"query": "Number > 50"}'
```

### レコードの登録（1件）
  
```POST.Record.sh
curl -X POST 'https://{subdomain}.cybozu.com/k/v1/record.json' \
  -H 'X-Cybozu-API-Token: {APIToken}' \
  -H 'Content-Type: application/json' \
  -d '{"app": 139,"record": {"Title":{"value":"Apple"},"Number":{"value":10},"Date":{"value":"2017-10-01"}}}'
```

### レコードの更新（1件）

```PUT.Record.sh
curl -X PUT 'https://{subdomain}.cybozu.com/k/v1/record.json' \
  -H 'X-Cybozu-API-Token: {APIToken}' \
  -H 'Content-Type: application/json' \
  -d '{"app": 139, "id":60, "record": {"Number":{"value":10}}}'
```

### レコードの削除（複数件）
- 一度に処理できるのは100件まで

```DELETE.Record.sh
curl -X DELETE 'https://{subdomain}.cybozu.com/k/v1/records.json' \
  -H 'X-Cybozu-API-Token: {APIToken}' \
  -H 'Content-Type: application/json' \
  -d '{"app": 139,"ids": [57,59]}'
```

### レコードのファイル取得

```GET.File.sh
curl -X GET 'https://{subdomain}.cybozu.com/k/v1/file.json?fileKey={FileKey}' \
  -H 'X-Cybozu-API-Token: {APIToken}' \
  -o ./orange.jpg
```

### レコードにファイルとデータを登録（1件）

```POST.File.sh
curl -X POST 'https://{subdomain}.cybozu.com/k/v1/file.json' \
  -H 'X-Cybozu-API-Token: {APIToken}' \
  -F 'file=@orange.jpg'
```
Response sample

```
{"fileKey":"cd2580d5-c428-4888-aa1a-8219b3521685"}
```

fileKeyの値をJSON文字列に指定してPOST

```POST.File.sh
curl -X POST 'https://{subdomain}.cybozu.com/k/v1/record.json' \
  -H 'X-Cybozu-API-Token: {APIToken}' \
  -H 'Content-Type: application/json' \
  -d '{"app": 139,"record": {"File":{"value":[{"fileKey":"{fileKey}"}]},"Title":{"value":"Apple"},"Number":{"value":10},"Date":{"value":"2017-10-01"}}}'
```

### レコードのコメント取得（一括）
- 一度に取得できるコメントは 10件まで

```GET.Record.Comment.sh
curl -X GET 'https://{subdomain}.cybozu.com/k/v1/record/comments.json?app=139&record=1' \
  -H 'X-Cybozu-API-Token: {APIToken}'
```

### レコードのコメント投稿（1件）

```POST.Record.Comment.sh
curl -X POST 'https://{subdomain}.cybozu.com/k/v1/record/comment.json' \
  -H 'X-Cybozu-API-Token: {APIToken}' \
  -H 'Content-Type: application/json' \
  -d '{"app": 139,"record": 1,"comment": {"text":"Test OK!!"}}'
```