

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Neptune 串流 API 回應格式
<a name="streams-using-api-reponse"></a>

Neptune 串流 REST API 請求的回應具有下列欄位：
+ `lastEventId` – 串流回應中上次變更的序列識別符。事件 ID 由兩個欄位組成：`commitNum` 識別已變更圖形的交易，以及 `opNum` 識別該交易內的特定操作。如以下範例所示。

  ```
    "eventId": {
      "commitNum": 12,
      "opNum": 1
    }
  ```
+ `lastTrxTimestamp` – 已請求遞交交易的時間，以毫秒為單位，從 Unix epoch 開始。
+ `format` – 要傳回之變更記錄的序列化格式。Gremlin 或 openCypher 變更記錄的可能值是 `PG_JSON`，而 SPARQL 變更記錄的可能值是 `NQUADS`。
+ `records` – 回應中包含之序列化變更日誌串流記錄的陣列。`records` 陣列中的每筆記錄都包含下列欄位：
  + `commitTimestamp` – 已請求遞交交易的時間，以毫秒為單位，從 Unix epoch 開始。
  + `eventId` – 串流變更記錄的序列識別符。
  + `data` – 序列化的 Gremlin、SPARQL 或 openCypher 變更記錄。下節 ([Neptune 串流中的序列化格式](streams-change-formats.md)) 會詳細描述每筆記錄的序列化格式。
  + `op` – 已建立變更的操作。
  + `isLastOp` – 僅當此操作是其交易中的最後一個操作時才存在。存在時，其會設定為 `true`。有助於確保取用整個交易。
+ `totalRecords` – 回應中的記錄總數。

例如，下列回應會針對包含多項操作的交易傳回 Gremlin 變更資料：

```
{
  "lastEventId": {
    "commitNum": 12,
    "opNum": 1
  },
  "lastTrxTimestamp": 1560011610678,
  "format": "PG_JSON",
  "records": [
    {
      "commitTimestamp": 1560011610678,
      "eventId": {
        "commitNum": 1,
        "opNum": 1
      },
      "data": {
        "id": "d2b59bf8-0d0f-218b-f68b-2aa7b0b1904a",
        "type": "vl",
        "key": "label",
        "value": {
          "value": "vertex",
          "dataType": "String"
        }
      },
      "op": "ADD"
    }
  ],
  "totalRecords": 1
}
```

下列回應會傳回交易中最後一個操作的 SPARQL 變更資料 (交易編號 97 中 `EventId(97, 1)` 所識別的操作)。

```
{
  "lastEventId": {
    "commitNum": 97,
    "opNum": 1
  },
  "lastTrxTimestamp": 1561489355102,
  "format": "NQUADS",
  "records": [
    {
      "commitTimestamp": 1561489355102,
      "eventId": {
        "commitNum": 97,
        "opNum": 1
      },
      "data": {
        "stmt": "<https://test.com/s> <https://test.com/p> <https://test.com/o> .\n"
      },
      "op": "ADD",
      "isLastOp": true
    }
  ],
  "totalRecords": 1
}
```