updateRecords method

Future<UpdateRecordsResponse> updateRecords({
  1. required String datasetName,
  2. required String identityId,
  3. required String identityPoolId,
  4. required String syncSessionToken,
  5. String? clientContext,
  6. String? deviceId,
  7. List<RecordPatch>? recordPatches,
})

Posts updates to records and adds and deletes records for a dataset and user.

The sync count in the record patch is your last known sync count for that record. The server will reject an UpdateRecords request with a ResourceConflictException if you try to patch a record with a new value but a stale sync count.

For example, if the sync count on the server is 5 for a key called highScore and you try and submit a new highScore with sync count of 4, the request will be rejected. To obtain the current sync count for a record, call ListRecords. On a successful update of the record, the response returns the new sync count for that record. You should present that sync count the next time you try to update that same record. When the record does not exist, specify the sync count as 0.

This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials.

May throw InvalidParameterException. May throw LimitExceededException. May throw NotAuthorizedException. May throw ResourceNotFoundException. May throw ResourceConflictException. May throw InvalidLambdaFunctionOutputException. May throw LambdaThrottledException. May throw TooManyRequestsException. May throw InternalErrorException.

Parameter datasetName : A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot).

Parameter identityId : A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.

Parameter identityPoolId : A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.

Parameter syncSessionToken : The SyncSessionToken returned by a previous call to ListRecords for this dataset and identity.

Parameter clientContext : Intended to supply a device ID that will populate the lastModifiedBy field referenced in other methods. The ClientContext field is not yet implemented.

Parameter deviceId : The unique ID generated for this device by Cognito.

Parameter recordPatches : A list of patch operations.

Implementation

Future<UpdateRecordsResponse> updateRecords({
  required String datasetName,
  required String identityId,
  required String identityPoolId,
  required String syncSessionToken,
  String? clientContext,
  String? deviceId,
  List<RecordPatch>? recordPatches,
}) async {
  ArgumentError.checkNotNull(datasetName, 'datasetName');
  _s.validateStringLength(
    'datasetName',
    datasetName,
    1,
    128,
    isRequired: true,
  );
  ArgumentError.checkNotNull(identityId, 'identityId');
  _s.validateStringLength(
    'identityId',
    identityId,
    1,
    55,
    isRequired: true,
  );
  ArgumentError.checkNotNull(identityPoolId, 'identityPoolId');
  _s.validateStringLength(
    'identityPoolId',
    identityPoolId,
    1,
    55,
    isRequired: true,
  );
  ArgumentError.checkNotNull(syncSessionToken, 'syncSessionToken');
  _s.validateStringLength(
    'deviceId',
    deviceId,
    1,
    256,
  );
  final headers = <String, String>{
    if (clientContext != null)
      'x-amz-Client-Context': clientContext.toString(),
  };
  final $payload = <String, dynamic>{
    'SyncSessionToken': syncSessionToken,
    if (deviceId != null) 'DeviceId': deviceId,
    if (recordPatches != null) 'RecordPatches': recordPatches,
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'POST',
    requestUri:
        '/identitypools/${Uri.encodeComponent(identityPoolId)}/identities/${Uri.encodeComponent(identityId)}/datasets/${Uri.encodeComponent(datasetName)}',
    headers: headers,
    exceptionFnMap: _exceptionFns,
  );
  return UpdateRecordsResponse.fromJson(response);
}