sendBonus method
The SendBonus
operation issues a payment of money from your
account to a Worker. This payment happens separately from the reward you
pay to the Worker when you approve the Worker's assignment. The SendBonus
operation requires the Worker's ID and the assignment ID as parameters to
initiate payment of the bonus. You must include a message that explains
the reason for the bonus payment, as the Worker may not be expecting the
payment. Amazon Mechanical Turk collects a fee for bonus payments, similar
to the HIT listing fee. This operation fails if your account does not have
enough funds to pay for both the bonus and the fees.
May throw ServiceFault. May throw RequestError.
Parameter assignmentId
:
The ID of the assignment for which this bonus is paid.
Parameter bonusAmount
:
The Bonus amount is a US Dollar amount specified using a string (for
example, "5" represents $5.00 USD and "101.42" represents $101.42 USD). Do
not include currency symbols or currency codes.
Parameter reason
:
A message that explains the reason for the bonus payment. The Worker
receiving the bonus can see this message.
Parameter workerId
:
The ID of the Worker being paid the bonus.
Parameter uniqueRequestToken
:
A unique identifier for this request, which allows you to retry the call
on error without granting multiple bonuses. This is useful in cases such
as network timeouts where it is unclear whether or not the call succeeded
on the server. If the bonus already exists in the system from a previous
call using the same UniqueRequestToken, subsequent calls will return an
error with a message containing the request ID.
Implementation
Future<void> sendBonus({
required String assignmentId,
required String bonusAmount,
required String reason,
required String workerId,
String? uniqueRequestToken,
}) async {
ArgumentError.checkNotNull(assignmentId, 'assignmentId');
_s.validateStringLength(
'assignmentId',
assignmentId,
1,
64,
isRequired: true,
);
ArgumentError.checkNotNull(bonusAmount, 'bonusAmount');
ArgumentError.checkNotNull(reason, 'reason');
ArgumentError.checkNotNull(workerId, 'workerId');
_s.validateStringLength(
'workerId',
workerId,
1,
64,
isRequired: true,
);
_s.validateStringLength(
'uniqueRequestToken',
uniqueRequestToken,
1,
64,
);
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'MTurkRequesterServiceV20170117.SendBonus'
};
await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'AssignmentId': assignmentId,
'BonusAmount': bonusAmount,
'Reason': reason,
'WorkerId': workerId,
if (uniqueRequestToken != null)
'UniqueRequestToken': uniqueRequestToken,
},
);
}