• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "version":"2.0",
3  "metadata":{
4    "apiVersion":"2020-07-01",
5    "endpointPrefix":"featurestore-runtime.sagemaker",
6    "jsonVersion":"1.1",
7    "protocol":"rest-json",
8    "serviceFullName":"Amazon SageMaker Feature Store Runtime",
9    "serviceId":"SageMaker FeatureStore Runtime",
10    "signatureVersion":"v4",
11    "signingName":"sagemaker",
12    "uid":"sagemaker-featurestore-runtime-2020-07-01"
13  },
14  "operations":{
15    "BatchGetRecord":{
16      "name":"BatchGetRecord",
17      "http":{
18        "method":"POST",
19        "requestUri":"/BatchGetRecord"
20      },
21      "input":{"shape":"BatchGetRecordRequest"},
22      "output":{"shape":"BatchGetRecordResponse"},
23      "errors":[
24        {"shape":"ValidationError"},
25        {"shape":"InternalFailure"},
26        {"shape":"ServiceUnavailable"},
27        {"shape":"AccessForbidden"}
28      ],
29      "documentation":"<p>Retrieves a batch of <code>Records</code> from a <code>FeatureGroup</code>.</p>"
30    },
31    "DeleteRecord":{
32      "name":"DeleteRecord",
33      "http":{
34        "method":"DELETE",
35        "requestUri":"/FeatureGroup/{FeatureGroupName}"
36      },
37      "input":{"shape":"DeleteRecordRequest"},
38      "errors":[
39        {"shape":"ValidationError"},
40        {"shape":"InternalFailure"},
41        {"shape":"ServiceUnavailable"},
42        {"shape":"AccessForbidden"}
43      ],
44      "documentation":"<p>Deletes a <code>Record</code> from a <code>FeatureGroup</code> in the <code>OnlineStore</code>. Feature Store supports both <code>SoftDelete</code> and <code>HardDelete</code>. For <code>SoftDelete</code> (default), feature columns are set to <code>null</code> and the record is no longer retrievable by <code>GetRecord</code> or <code>BatchGetRecord</code>. For <code>HardDelete</code>, the complete <code>Record</code> is removed from the <code>OnlineStore</code>. In both cases, Feature Store appends the deleted record marker to the <code>OfflineStore</code>. The deleted record marker is a record with the same <code>RecordIdentifer</code> as the original, but with <code>is_deleted</code> value set to <code>True</code>, <code>EventTime</code> set to the delete input <code>EventTime</code>, and other feature values set to <code>null</code>.</p> <p>Note that the <code>EventTime</code> specified in <code>DeleteRecord</code> should be set later than the <code>EventTime</code> of the existing record in the <code>OnlineStore</code> for that <code>RecordIdentifer</code>. If it is not, the deletion does not occur:</p> <ul> <li> <p>For <code>SoftDelete</code>, the existing (not deleted) record remains in the <code>OnlineStore</code>, though the delete record marker is still written to the <code>OfflineStore</code>.</p> </li> <li> <p> <code>HardDelete</code> returns <code>EventTime</code>: <code>400 ValidationException</code> to indicate that the delete operation failed. No delete record marker is written to the <code>OfflineStore</code>.</p> </li> </ul> <p>When a record is deleted from the <code>OnlineStore</code>, the deleted record marker is appended to the <code>OfflineStore</code>. If you have the Iceberg table format enabled for your <code>OfflineStore</code>, you can remove all history of a record from the <code>OfflineStore</code> using Amazon Athena or Apache Spark. For information on how to hard delete a record from the <code>OfflineStore</code> with the Iceberg table format enabled, see <a href=\"https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store-delete-records-offline-store.html#feature-store-delete-records-offline-store\">Delete records from the offline store</a>.</p>"
45    },
46    "GetRecord":{
47      "name":"GetRecord",
48      "http":{
49        "method":"GET",
50        "requestUri":"/FeatureGroup/{FeatureGroupName}"
51      },
52      "input":{"shape":"GetRecordRequest"},
53      "output":{"shape":"GetRecordResponse"},
54      "errors":[
55        {"shape":"ValidationError"},
56        {"shape":"ResourceNotFound"},
57        {"shape":"InternalFailure"},
58        {"shape":"ServiceUnavailable"},
59        {"shape":"AccessForbidden"}
60      ],
61      "documentation":"<p>Use for <code>OnlineStore</code> serving from a <code>FeatureStore</code>. Only the latest records stored in the <code>OnlineStore</code> can be retrieved. If no Record with <code>RecordIdentifierValue</code> is found, then an empty result is returned. </p>"
62    },
63    "PutRecord":{
64      "name":"PutRecord",
65      "http":{
66        "method":"PUT",
67        "requestUri":"/FeatureGroup/{FeatureGroupName}"
68      },
69      "input":{"shape":"PutRecordRequest"},
70      "errors":[
71        {"shape":"ValidationError"},
72        {"shape":"InternalFailure"},
73        {"shape":"ServiceUnavailable"},
74        {"shape":"AccessForbidden"}
75      ],
76      "documentation":"<p>The <code>PutRecord</code> API is used to ingest a list of <code>Records</code> into your feature group. </p> <p>If a new record’s <code>EventTime</code> is greater, the new record is written to both the <code>OnlineStore</code> and <code>OfflineStore</code>. Otherwise, the record is a historic record and it is written only to the <code>OfflineStore</code>. </p> <p>You can specify the ingestion to be applied to the <code>OnlineStore</code>, <code>OfflineStore</code>, or both by using the <code>TargetStores</code> request parameter. </p> <p>You can set the ingested record to expire at a given time to live (TTL) duration after the record’s event time, <code>ExpiresAt</code> = <code>EventTime</code> + <code>TtlDuration</code>, by specifying the <code>TtlDuration</code> parameter. A record level <code>TtlDuration</code> is set when specifying the <code>TtlDuration</code> parameter using the <code>PutRecord</code> API call. If the input <code>TtlDuration</code> is <code>null</code> or unspecified, <code>TtlDuration</code> is set to the default feature group level <code>TtlDuration</code>. A record level <code>TtlDuration</code> supersedes the group level <code>TtlDuration</code>.</p>"
77    }
78  },
79  "shapes":{
80    "AccessForbidden":{
81      "type":"structure",
82      "members":{
83        "Message":{"shape":"Message"}
84      },
85      "documentation":"<p>You do not have permission to perform an action.</p>",
86      "error":{"httpStatusCode":403},
87      "exception":true,
88      "synthetic":true
89    },
90    "BatchGetRecordError":{
91      "type":"structure",
92      "required":[
93        "FeatureGroupName",
94        "RecordIdentifierValueAsString",
95        "ErrorCode",
96        "ErrorMessage"
97      ],
98      "members":{
99        "FeatureGroupName":{
100          "shape":"ValueAsString",
101          "documentation":"<p>The name of the feature group that the record belongs to.</p>"
102        },
103        "RecordIdentifierValueAsString":{
104          "shape":"ValueAsString",
105          "documentation":"<p>The value for the <code>RecordIdentifier</code> in string format of a Record from a <code>FeatureGroup</code> that is causing an error when attempting to be retrieved.</p>"
106        },
107        "ErrorCode":{
108          "shape":"ValueAsString",
109          "documentation":"<p>The error code of an error that has occurred when attempting to retrieve a batch of Records. For more information on errors, see <a href=\"https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_feature_store_GetRecord.html#API_feature_store_GetRecord_Errors\">Errors</a>.</p>"
110        },
111        "ErrorMessage":{
112          "shape":"Message",
113          "documentation":"<p>The error message of an error that has occurred when attempting to retrieve a record in the batch.</p>"
114        }
115      },
116      "documentation":"<p>The error that has occurred when attempting to retrieve a batch of Records.</p>"
117    },
118    "BatchGetRecordErrors":{
119      "type":"list",
120      "member":{"shape":"BatchGetRecordError"},
121      "min":0
122    },
123    "BatchGetRecordIdentifier":{
124      "type":"structure",
125      "required":[
126        "FeatureGroupName",
127        "RecordIdentifiersValueAsString"
128      ],
129      "members":{
130        "FeatureGroupName":{
131          "shape":"FeatureGroupNameOrArn",
132          "documentation":"<p>The name or Amazon Resource Name (ARN) of the <code>FeatureGroup</code> containing the records you are retrieving in a batch.</p>"
133        },
134        "RecordIdentifiersValueAsString":{
135          "shape":"RecordIdentifiers",
136          "documentation":"<p>The value for a list of record identifiers in string format.</p>"
137        },
138        "FeatureNames":{
139          "shape":"FeatureNames",
140          "documentation":"<p>List of names of Features to be retrieved. If not specified, the latest value for all the Features are returned.</p>"
141        }
142      },
143      "documentation":"<p>The identifier that identifies the batch of Records you are retrieving in a batch.</p>"
144    },
145    "BatchGetRecordIdentifiers":{
146      "type":"list",
147      "member":{"shape":"BatchGetRecordIdentifier"},
148      "max":100,
149      "min":1
150    },
151    "BatchGetRecordRequest":{
152      "type":"structure",
153      "required":["Identifiers"],
154      "members":{
155        "Identifiers":{
156          "shape":"BatchGetRecordIdentifiers",
157          "documentation":"<p>A list containing the name or Amazon Resource Name (ARN) of the <code>FeatureGroup</code>, the list of names of <code>Feature</code>s to be retrieved, and the corresponding <code>RecordIdentifier</code> values as strings.</p>"
158        },
159        "ExpirationTimeResponse":{
160          "shape":"ExpirationTimeResponse",
161          "documentation":"<p>Parameter to request <code>ExpiresAt</code> in response. If <code>Enabled</code>, <code>BatchGetRecord</code> will return the value of <code>ExpiresAt</code>, if it is not null. If <code>Disabled</code> and null, <code>BatchGetRecord</code> will return null.</p>"
162        }
163      }
164    },
165    "BatchGetRecordResponse":{
166      "type":"structure",
167      "required":[
168        "Records",
169        "Errors",
170        "UnprocessedIdentifiers"
171      ],
172      "members":{
173        "Records":{
174          "shape":"BatchGetRecordResultDetails",
175          "documentation":"<p>A list of Records you requested to be retrieved in batch.</p>"
176        },
177        "Errors":{
178          "shape":"BatchGetRecordErrors",
179          "documentation":"<p>A list of errors that have occurred when retrieving a batch of Records.</p>"
180        },
181        "UnprocessedIdentifiers":{
182          "shape":"UnprocessedIdentifiers",
183          "documentation":"<p>A unprocessed list of <code>FeatureGroup</code> names, with their corresponding <code>RecordIdentifier</code> value, and Feature name.</p>"
184        }
185      }
186    },
187    "BatchGetRecordResultDetail":{
188      "type":"structure",
189      "required":[
190        "FeatureGroupName",
191        "RecordIdentifierValueAsString",
192        "Record"
193      ],
194      "members":{
195        "FeatureGroupName":{
196          "shape":"ValueAsString",
197          "documentation":"<p>The <code>FeatureGroupName</code> containing Records you retrieved in a batch.</p>"
198        },
199        "RecordIdentifierValueAsString":{
200          "shape":"ValueAsString",
201          "documentation":"<p>The value of the record identifier in string format.</p>"
202        },
203        "Record":{
204          "shape":"Record",
205          "documentation":"<p>The <code>Record</code> retrieved.</p>"
206        },
207        "ExpiresAt":{
208          "shape":"ExpiresAt",
209          "documentation":"<p>The <code>ExpiresAt</code> ISO string of the requested record.</p>"
210        }
211      },
212      "documentation":"<p>The output of records that have been retrieved in a batch.</p>"
213    },
214    "BatchGetRecordResultDetails":{
215      "type":"list",
216      "member":{"shape":"BatchGetRecordResultDetail"},
217      "min":0
218    },
219    "DeleteRecordRequest":{
220      "type":"structure",
221      "required":[
222        "FeatureGroupName",
223        "RecordIdentifierValueAsString",
224        "EventTime"
225      ],
226      "members":{
227        "FeatureGroupName":{
228          "shape":"FeatureGroupNameOrArn",
229          "documentation":"<p>The name or Amazon Resource Name (ARN) of the feature group to delete the record from. </p>",
230          "location":"uri",
231          "locationName":"FeatureGroupName"
232        },
233        "RecordIdentifierValueAsString":{
234          "shape":"ValueAsString",
235          "documentation":"<p>The value for the <code>RecordIdentifier</code> that uniquely identifies the record, in string format. </p>",
236          "location":"querystring",
237          "locationName":"RecordIdentifierValueAsString"
238        },
239        "EventTime":{
240          "shape":"ValueAsString",
241          "documentation":"<p>Timestamp indicating when the deletion event occurred. <code>EventTime</code> can be used to query data at a certain point in time.</p>",
242          "location":"querystring",
243          "locationName":"EventTime"
244        },
245        "TargetStores":{
246          "shape":"TargetStores",
247          "documentation":"<p>A list of stores from which you're deleting the record. By default, Feature Store deletes the record from all of the stores that you're using for the <code>FeatureGroup</code>.</p>",
248          "location":"querystring",
249          "locationName":"TargetStores"
250        },
251        "DeletionMode":{
252          "shape":"DeletionMode",
253          "documentation":"<p>The name of the deletion mode for deleting the record. By default, the deletion mode is set to <code>SoftDelete</code>.</p>",
254          "location":"querystring",
255          "locationName":"DeletionMode"
256        }
257      }
258    },
259    "DeletionMode":{
260      "type":"string",
261      "enum":[
262        "SoftDelete",
263        "HardDelete"
264      ]
265    },
266    "ExpirationTimeResponse":{
267      "type":"string",
268      "enum":[
269        "Enabled",
270        "Disabled"
271      ]
272    },
273    "ExpiresAt":{"type":"string"},
274    "FeatureGroupNameOrArn":{
275      "type":"string",
276      "max":150,
277      "min":1,
278      "pattern":"(arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:feature-group/)?([a-zA-Z0-9]([-_]*[a-zA-Z0-9]){0,63})"
279    },
280    "FeatureName":{
281      "type":"string",
282      "max":64,
283      "min":1,
284      "pattern":"^[a-zA-Z0-9]([-_]*[a-zA-Z0-9]){0,63}"
285    },
286    "FeatureNames":{
287      "type":"list",
288      "member":{"shape":"FeatureName"},
289      "min":1
290    },
291    "FeatureValue":{
292      "type":"structure",
293      "required":["FeatureName"],
294      "members":{
295        "FeatureName":{
296          "shape":"FeatureName",
297          "documentation":"<p>The name of a feature that a feature value corresponds to.</p>"
298        },
299        "ValueAsString":{
300          "shape":"ValueAsString",
301          "documentation":"<p>The value in string format associated with a feature. Used when your <code>CollectionType</code> is <code>None</code>. Note that features types can be <code>String</code>, <code>Integral</code>, or <code>Fractional</code>. This value represents all three types as a string.</p>"
302        },
303        "ValueAsStringList":{
304          "shape":"ValueAsStringList",
305          "documentation":"<p>The list of values in string format associated with a feature. Used when your <code>CollectionType</code> is a <code>List</code>, <code>Set</code>, or <code>Vector</code>. Note that features types can be <code>String</code>, <code>Integral</code>, or <code>Fractional</code>. These values represents all three types as a string.</p>"
306        }
307      },
308      "documentation":"<p>The value associated with a feature.</p>"
309    },
310    "GetRecordRequest":{
311      "type":"structure",
312      "required":[
313        "FeatureGroupName",
314        "RecordIdentifierValueAsString"
315      ],
316      "members":{
317        "FeatureGroupName":{
318          "shape":"FeatureGroupNameOrArn",
319          "documentation":"<p>The name or Amazon Resource Name (ARN) of the feature group from which you want to retrieve a record.</p>",
320          "location":"uri",
321          "locationName":"FeatureGroupName"
322        },
323        "RecordIdentifierValueAsString":{
324          "shape":"ValueAsString",
325          "documentation":"<p>The value that corresponds to <code>RecordIdentifier</code> type and uniquely identifies the record in the <code>FeatureGroup</code>. </p>",
326          "location":"querystring",
327          "locationName":"RecordIdentifierValueAsString"
328        },
329        "FeatureNames":{
330          "shape":"FeatureNames",
331          "documentation":"<p>List of names of Features to be retrieved. If not specified, the latest value for all the Features are returned.</p>",
332          "location":"querystring",
333          "locationName":"FeatureName"
334        },
335        "ExpirationTimeResponse":{
336          "shape":"ExpirationTimeResponse",
337          "documentation":"<p>Parameter to request <code>ExpiresAt</code> in response. If <code>Enabled</code>, <code>GetRecord</code> will return the value of <code>ExpiresAt</code>, if it is not null. If <code>Disabled</code> and null, <code>GetRecord</code> will return null.</p>",
338          "location":"querystring",
339          "locationName":"ExpirationTimeResponse"
340        }
341      }
342    },
343    "GetRecordResponse":{
344      "type":"structure",
345      "members":{
346        "Record":{
347          "shape":"Record",
348          "documentation":"<p>The record you requested. A list of <code>FeatureValues</code>.</p>"
349        },
350        "ExpiresAt":{
351          "shape":"ExpiresAt",
352          "documentation":"<p>The <code>ExpiresAt</code> ISO string of the requested record.</p>"
353        }
354      }
355    },
356    "InternalFailure":{
357      "type":"structure",
358      "members":{
359        "Message":{"shape":"Message"}
360      },
361      "documentation":"<p>An internal failure occurred. Try your request again. If the problem persists, contact Amazon Web Services customer support.</p>",
362      "error":{"httpStatusCode":500},
363      "exception":true,
364      "fault":true,
365      "synthetic":true
366    },
367    "Message":{
368      "type":"string",
369      "max":2048
370    },
371    "PutRecordRequest":{
372      "type":"structure",
373      "required":[
374        "FeatureGroupName",
375        "Record"
376      ],
377      "members":{
378        "FeatureGroupName":{
379          "shape":"FeatureGroupNameOrArn",
380          "documentation":"<p>The name or Amazon Resource Name (ARN) of the feature group that you want to insert the record into.</p>",
381          "location":"uri",
382          "locationName":"FeatureGroupName"
383        },
384        "Record":{
385          "shape":"Record",
386          "documentation":"<p>List of FeatureValues to be inserted. This will be a full over-write. If you only want to update few of the feature values, do the following:</p> <ul> <li> <p>Use <code>GetRecord</code> to retrieve the latest record.</p> </li> <li> <p>Update the record returned from <code>GetRecord</code>. </p> </li> <li> <p>Use <code>PutRecord</code> to update feature values.</p> </li> </ul>"
387        },
388        "TargetStores":{
389          "shape":"TargetStores",
390          "documentation":"<p>A list of stores to which you're adding the record. By default, Feature Store adds the record to all of the stores that you're using for the <code>FeatureGroup</code>.</p>"
391        },
392        "TtlDuration":{
393          "shape":"TtlDuration",
394          "documentation":"<p>Time to live duration, where the record is hard deleted after the expiration time is reached; <code>ExpiresAt</code> = <code>EventTime</code> + <code>TtlDuration</code>. For information on HardDelete, see the <a href=\"https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_feature_store_DeleteRecord.html\">DeleteRecord</a> API in the Amazon SageMaker API Reference guide.</p>"
395        }
396      }
397    },
398    "Record":{
399      "type":"list",
400      "member":{"shape":"FeatureValue"},
401      "min":1
402    },
403    "RecordIdentifiers":{
404      "type":"list",
405      "member":{"shape":"ValueAsString"},
406      "max":100,
407      "min":1
408    },
409    "ResourceNotFound":{
410      "type":"structure",
411      "members":{
412        "Message":{"shape":"Message"}
413      },
414      "documentation":"<p>A resource that is required to perform an action was not found.</p>",
415      "error":{"httpStatusCode":404},
416      "exception":true
417    },
418    "ServiceUnavailable":{
419      "type":"structure",
420      "members":{
421        "Message":{"shape":"Message"}
422      },
423      "documentation":"<p>The service is currently unavailable.</p>",
424      "error":{"httpStatusCode":503},
425      "exception":true,
426      "fault":true,
427      "synthetic":true
428    },
429    "TargetStore":{
430      "type":"string",
431      "enum":[
432        "OnlineStore",
433        "OfflineStore"
434      ]
435    },
436    "TargetStores":{
437      "type":"list",
438      "member":{"shape":"TargetStore"},
439      "max":2,
440      "min":1
441    },
442    "TtlDuration":{
443      "type":"structure",
444      "required":[
445        "Unit",
446        "Value"
447      ],
448      "members":{
449        "Unit":{
450          "shape":"TtlDurationUnit",
451          "documentation":"<p> <code>TtlDuration</code> time unit.</p>"
452        },
453        "Value":{
454          "shape":"TtlDurationValue",
455          "documentation":"<p> <code>TtlDuration</code> time value.</p>"
456        }
457      },
458      "documentation":"<p>Time to live duration, where the record is hard deleted after the expiration time is reached; <code>ExpiresAt</code> = <code>EventTime</code> + <code>TtlDuration</code>. For information on HardDelete, see the <a href=\"https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_feature_store_DeleteRecord.html\">DeleteRecord</a> API in the Amazon SageMaker API Reference guide.</p>"
459    },
460    "TtlDurationUnit":{
461      "type":"string",
462      "enum":[
463        "Seconds",
464        "Minutes",
465        "Hours",
466        "Days",
467        "Weeks"
468      ]
469    },
470    "TtlDurationValue":{
471      "type":"integer",
472      "min":1
473    },
474    "UnprocessedIdentifiers":{
475      "type":"list",
476      "member":{"shape":"BatchGetRecordIdentifier"},
477      "min":0
478    },
479    "ValidationError":{
480      "type":"structure",
481      "members":{
482        "Message":{"shape":"Message"}
483      },
484      "documentation":"<p>There was an error validating your request.</p>",
485      "error":{"httpStatusCode":400},
486      "exception":true,
487      "synthetic":true
488    },
489    "ValueAsString":{
490      "type":"string",
491      "max":358400,
492      "pattern":".*"
493    },
494    "ValueAsStringList":{
495      "type":"list",
496      "member":{"shape":"ValueAsString"},
497      "max":358400,
498      "min":0
499    }
500  },
501  "documentation":"<p>Contains all data plane API operations and data types for the Amazon SageMaker Feature Store. Use this API to put, delete, and retrieve (get) features from a feature store.</p> <p>Use the following operations to configure your <code>OnlineStore</code> and <code>OfflineStore</code> features, and to create and manage feature groups:</p> <ul> <li> <p> <a href=\"https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFeatureGroup.html\">CreateFeatureGroup</a> </p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteFeatureGroup.html\">DeleteFeatureGroup</a> </p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeFeatureGroup.html\">DescribeFeatureGroup</a> </p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListFeatureGroups.html\">ListFeatureGroups</a> </p> </li> </ul>"
502}
503