- The
GetFileUploadUrls
API endpoint was removed. As such theGetFileUpload()
function has been removed. (#125)
- Fixed a bug wherein
GetAssignments()
would error when requesting HITs by HITTypeId and one of the HITs had no assignments. (h/t Tobias Heinrich) - Fixed a bug in
GetBonuses()
that created weird behavior whenpagenumber
was specified along withreturn.all = TRUE
. (#123)
GetAssignments()
now attempts to convert non-character variables to an appropriate R vector type viatype.convert(, as.is = TRUE)
.- Some statistics have been deprecated for the
GetStatistic()
andRequesterReport()
, including "NumberAssignmentsAvailable", "NumberAssignmentsAccepted", "NumberAssignmentsReturned", "TotalFeePayout", and "TotalRewardAndFeePayout". This is reflected in the return value ofListStatistics()
.
- Added two papers (one from The Political Methodologist and one from The R Journal) as supplemental PDF documentation, accessible via
? MTurkR
. (#93) - Documentation now indicates that
GrantBonus()
allows thereason
argument to contain newlines and tabs. (#109)
- Question identifiers used in a Qualification AnswerKey are only checked if
CreateQualificationType()
is called withvalidate.answerkey = TRUE
. (#117, h/t Darrell Penta) - Fixed a bug in
BulkCreateFromHITLayout()
that caused the function to fail. (#114, h/t Tyler Scott) - Fixed a bug in trying to parse already parsed response for
GetBonuses()
. (#113, h/t Andrew Brown) - The simple wizard now correctly respects AWS credentials specified as environment variables instead of the deprecated
credentials()
function. (h/t Kim Gross) - Functions should now all return data frames with character class columns (unless otherwise noted) with sequentially numbered rownames. This corrects potentially some confusing behavior introduced during XML parsing. (#112)
GenerateExternalQuestion
now sets a default value offrame.height = 400
.- The AWS Access Key ID used for requests is now redacted from the error message printing when an API request fails to reduce the risk of accidentally disclosing the credential. (#105)
- AWS removed the Categorization and Photo Moderation QualificationTypes on December 18th, 2015. Use of these QualificationTypeIds will trigger warnings in some cases and the "generic" Masters QualificationTypeId will be substituted automatically. Users should not need to update any code, though they may be receive warnings. These have also been removed from
ListQualificationTypes()
. (#104) - The use of
credentials()
, andoptions("MTurkR.keypair")
are completely deprecated. A warning will now be issued if trying to supply credentials in this way. AWS credentials should be specified in environment variablesAWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
. Messages are triggered on package load if environment variables are not set. (#102) HITStatus()
will now display any non-empty RequesterAnnotation field for a HIT. (#101)- The deprecated argument
print
, which was removed in v0.5, has been fully removed. Useverbose
instead. (#97) - The deprecated functions
mturkrhelp
andAPIReference
have been removed. (#96) MTurkR.Wizard
has been removed from MTurkR and has been recreated as a separate package called MTurkRGUI. (#95)HITStatus
now reports condensed column names better suited for narrow displays.- Correctly handle multiple
response.group
arguments passed to HIT-related functions. (#89) authenticate
, which was deprecated in v0.5, is removed.- Use of RCurl has been replaced by curl. This necessitated a new dependency, base64enc. (#86)
- In lieu of
credentials
, AWS credentials should be specified via environment variablesAWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
.credentials
will be deprecated. SufficientFunds()
reflects the new commission structure effective July 21, 2015. (#87)BulkCreateFromTemplate
andBulkCreateFromURLs
now have aframe.height
argument with a default of 450.
- A small test suite has been added to help ensure correct package functionality. It is only executed in the sandbox in the presence of valid AWS credentials. (#100)
- The package now includes pages describing common use cases for MTurk (surveys, categorization, sentiment analysis, and webscraping). (#98)
- Descriptions of global package options have been added to MTurkR-package.Rd. (#103)
- The package now includes additional HTMLQuestion templates including examples for image categorization and sentiment rating. (#94)
- Documentation for
GenerateHITReviewPolicy
andGenerateAssignmentReviewPolicy
was expanded and tested, and a related HTMLQuestion HIT template is now installed.
- Fixed a bug in checking for a valid AWS keypair in
request()
. (h/t Sean Murphy, #106) - When ttk widgets were added to the graphical wizard in v0.6, scrollbar calls retained tk-only options. Those have been removed. (h/t Justin Koch)
- State-level locales are now correctly supported in QualificationRequirements, including in complex combinations with country locales with no subdivision (so mixing U.S. states with other countries is possible). This feature was added in v0.6.5 but had a critical bug. (h/t Ricky Bilakhia)
- Closing the graphical wizard crashed RStudio due to
bringToTop(-1)
. This is fixed. (h/t Carolina Kuepper-Tetzel)
- Added
BulkCreate
,BulkCreateFromTemplate
,BulkCreateFromURLs
, andBulkCreateFromHITLayout
functions that can be used to create multiple HITs of the same HITType with identical properties but different question content. Thehitsfromtemplate
function has been removed. (#76) - The graphical wizard now supports creating HIT- and Assignment-level ReviewPolicies during HIT creation. (#55)
CreateHIT
now only warns about duplicated arguments (passing bothhit.type
and arguments forRegisterHITType
) ifverbose = TRUE
.- The graphical wizard now allows users to create an Qualification AnswerKey Template (via
AnswerKeyTemplate
) from a manually entered Qualification Test. (#73) GrantBonus
now accepts aunique.request.token
argument. (#75)- The unused
format
argument toGenerateNotification
has been removed. (#71)
- Examples have been added to demonstrate functionality of
AnswerKeyTemplate
. - Documentation for
GrantQualification
andRejectQualification
has been merged to clarify the use of these functions. Documentation has been expanded with complete examples of both functions. (#72) GenerateQualificationRequirement
now notes that U.S. state locale values (following ISO 3166-2 format) are allows. (#74)GenerateHITsFromTemplate
now has a more complete example that includes an installed template HTML file. (#72)- Several small changes have been made to correct documentation and fix bad formatting in the PDF version of the manual. (#72)
- Fixed a bug in the CreateQualification dialog of the graphical wizard related to destroying the dialog. (h/t Sean Murphy)
- Fixed a bug in the AssignQualification dialog of the graphical wizard. (h/t Carolina Kuepper-Tetzel)
- Loading MTurkR no longer overwrites existing MRurkR
options
. (#83) GetStatistic
now consistently returns a three-column data frame containing the name of the requested statistic, its value, and the date of the statistic. If the request fails, this data frame has zero rows. Printing of request information (ifverbose = TRUE
) has further been fixed to prevent incorrect printing whencount
was specified. (#78)- Fixed a bug in
ExtendHIT
wherein specifying bothadd.assignments
andadd.seconds
caused only assignments to be incremented. (#79)
GetReviewResults
should now be able to return all results. This is untested due to the large page size of ReviewResults (65,535). (#54)- The graphical wizard now uses "themed" tk (ttk) widgets where possible, in order to improve the appearance. This creates a dependency on tcl >= 8.5.
- The graphical wizard now allows retrieval of assignments by requester annotation (or batch) field.
- The graphical and text-based wizards now allow you to preview the email that will be sent to workers using the
ContactWorkers
function. (#53) - The graphical and text-based wizards now allow users to assign qualifications to workers. (#61)
- The graphical user interface (
mturkr.wizard
) has a significantly cleaned up code base aimed at simplifying future bug fixes. A user-visible side effect of this is modified aesthetics that should make the interface more attractive and more uniform. (#56) mturkr.wizard
now allows users to enter multiple WorkerIds for several functions by simply pasting one WorkerId per line into a multi-line textbox. (#52, h/t Justin Weigand)GetReviewResultsForHIT
now haspagenumber
andpagesize
arguments to control pagination of results. (#54)
- Documentation for
CreateHIT
andCreateQualificationType
now include examples using template files installed with the package. (#40) - Documentation of generating a Masters QualificationRequirement has been slightly clarified.
- Examples of Amazon Simple Queue Service (SQS) notifications have been added, along with a detailed tutorial on the MTurk wiki. (#60)
- Fixed a bug in the wizard that prevented the user from clearing and viewing QualificationRequirements that had been added to a HITType.
- Numerous related bug fixes in the wizard related to populating HITId, HITTypeId, and QualificationTypeId fields were fixed. (#69)
- Wizard balance checking message box now reports balance correctly. (#67)
- Wizard dialogs for adding question data structures to a HIT did not close on accepting "OK". (#65)
GetAssignments
only returned the first answer option when multiple selection answers were chosen by a worker. (#63, h/t Kyle Harms)- Fixed a possible bug in
ContactWorkers
batch mode that sent multiple emails to the same worker(s). (#58, h/t Andy Guess) - Fixed a few XML-related bugs in
as.data frame.QuestionForm
andas.data frame.AnswerKey
.
GenerateReviewPolicy
is removed in lieu of two new functions:GenerateHITReviewPolicy
andGenerateAssignmentReviewPolicy
, both of which have a simplified function API and include extensive examples in the documentation. The previous code never worked correctly, so this change should be unimportant. The use ofCreateHIT
remains unchanged. (#47)HITStatus
,ApproveAllAssignments
,ChangeHITType
,DisposeHIT
,DisableHIT
,ExpireHIT
,ExtendHIT
,GetAssignment
,GetBonuses
,SetHITAsReviewing
now include an optionalannotation
argument that can be used to apply the function to all HITs of a given "batch" created in the online Requester User Interface. (#51)GetFileUpload
no longer has afile.ext
argument. Instead the file extension is taken from the uploaded file itself. The format of the filename for the downloaded file has also been clarified. (#45)
- Examples for all functions have been substantially expanded and checked for accuracy.
- The MTurkR wiki (https://github.com/leeper/MTurkR/wiki) includes numerous updated code examples, including full documentation for both
wizard.simple
andmturkr.wizard
, the MTurkR interactive interfaces.
- Fixed a bug in
SearchHITs
that was not passing...
arguments otGetQualificationType
- Fixed a small bug in the batch (pagination) of
SearchQualificationTypes
. - Functions for QualificationTypes now return a data frame containing character variables rather than factor variables, as this could cause unintended coercion when using
GenerateQualifiationType
. (h/t Haotian Zhou) - Corrected several related bugs (API version number, LocaleValue specification) that prevented the "In" comparator in a QualificationRequirement from working with multiple LocaleValues in API version 2013-11-15. (#50, h/t Haotian Zhou)
GenerateQualificationRequirement
now supports new comparators (given MTurk API update on 2014-07-17): "DoesNotExist", "In", and "NotIn". The "DoesNotExist" comparator allows requesters to effectively block workers who do not have, e.g., a requester-defined qualification. The "In" and "NotIn" comparators allow a boolean OR logical in QualificationRequirements (e.g., allowing a worker to be from the US or the UK) rather than having to create two separate HITs with different Locale restrictions.- The
qual.number
argument toGenerateQualificationRequirement
has been removed. - The
return.hit.dataframe
argument toGetHITsForQualificationType
has been removed. - Functions of the form
*ToDataFrame
have been replaced withas.data frame
S3 methods, which are handled by a globalas.data frame.MTurkResponse
function. (#36) ParseErrorCodes
is removed (now used internally inrequest
).options('MTurkR.print')
is deleted and replaced byoptions('MTurkR.verbose')
. All functions will, temporarily, acceptprint
arguments. All code should be updated to reflect the new terminology moving forward.- When
validation.test=TRUE
orbrowser=TRUE
, functions now return an object of class "MTurkResponse" for the purpose of debugging. - The ability to execute requests in a web browser, via the
options('MTurkR.browser')
is removed from all functions exceptrequest
. It can, however, still be passed via...
torequest
. (#38) APIReference
,mturkhelp
, andgenericmturkr
are deprecated.GetBonuses
no longer supports thereturn.bonus.dataframe
logical. All bonuses are automatically returned. To just retrieve details on number of bonuses per HIT, request only the first page withpage.number=1
andverbose=TRUE
.MTurkR.Wizard
now allows batch emails usingContactWorkers
. WorkerIds can be specified as a comma-separated list. (#4)- The
credentials
function has now been changed to create and/or retrieve a global optionMTurkR.keypair
. This is a backwards compatible change that allows users to specifyoptions(MTurkR.keypair=c(accesskey, secretkey))
directly without usingcredentials
. All functions now point directly to the global option, so thatcredentials
can be deprecated in a future release. - In many functions that return a data frame with a
Valid
column (e.g.,ContactWorkers
, etc.),Valid
is now a factor. (#28) - Using
ContactWorkers
in batch mode now returns a data frame identical in structure to using it in regular mode, with one row per worker. (#32) - The
signature
argument torequest
now defaults toNULL
and is generated automatically. HITsToDataFrame
(nowas.data frame.HITs
) now returns, for the QualificationRequirements list element, an empty data frame rather a singleNA
missing value if a given HIT does not have any QualificationRequirements attached to it.request
now generates the API authentication signature automatically, eliminating the need forauthenticate
, which is deprecated.request
no longer acceptssignature
ortimestamp
arguments and has a new argument order. Arguments can be passed torequest
via a new...
argument in all functions.request
now usescurlPerform
instead ofgetURL
to gain finer control over API requests.request
now attempts totryCatch
any errors on writing the MTurkR log file. (#9)request
now returns an object of S3 class "MTurkResponse" and an associated print method has been added.
GenerateQualificationRequirement
now correctly handles the "Exists" comparator by requiring an empty character string for the correspondingvalue
argument.HITStatus
now prints correctly when only one HIT is retrieved.ApproveAllAssignments
now only attempts to approved assignments with AssignmentStatus "Submitted".as.data frame.QuestionForm
now returns "Overview" elements and "Question" elements as one data frame, distinguished by a new column:Element
. (#8)GetQualifications
andGetQualificationRequests
now respect thereturn.all
argument.- The
return.qual.dataframe
argument inGetQualificationType
andGetQualifications
is removed. - Fixed a bug in
GetBonuses
whereby the defaultreturn.all=TRUE
argument overwrote manually specifiedpagenumber
andpagesize
arguments. WhenGetBonuses
is called with ahit.type
,return.all
is used recursively, such thatreturn.all=FALSE
returns the requested page for each HIT of the requested HITType. (h/t Dane Wendell, #37) - Corrected the API operation name in
SendTestEventNotification
. - Fixed a bug in
GetBonuses
using a HITTypeId that caused the function to fail catastrophically.
- The
return.qual.dataframe
argument inGetQualificationType
andGetQualifications
is removed. - All functions now reflect the new
...
argument, the contents of which are passed torequest
. (#38) - All references to the
browser
options are removed given removal of the feature from all functions. - Documentation for
mturkhelp
andAPIReference
now reflect deprecated status. - Documentation file for
authenticate
now reflect its deprecated status. - Documentation file for
request
has been updated to reflect its now non-exported status.request
notes that it no longer acceptssignature
ortimestamp
arguments, which are now generated internally. Documentation forParseErrorCodes
is removed. - Work on the MTurkR wiki (https://github.com/leeper/MTurkR/wiki) has begun, with contributions from Kyle Hamilton.
- The
add.seconds
parameter was incorrectly calledadd.time
in theExtendHIT
documentation.
- Functions that accept a
hit.type
argument can now generally accept a vector of HITTypeIds rather than just a single character string. See documentation. GetBonuses
now allows requests to be opened in the default browser, like most other API functions.- From version 0.3.7, global options (
MTurkR.log
,MTurkR.test
,MTurkR.browser
,andMTurkR.print
) have been added to all functions. Defaults for these remain the same in all places. - From version 0.3.65,
SearchHITs
returns a named list of QualificationRequirements. This is a consequence of some significant changes to now the names of user-defined QualificationTypes are added to this list (moving that functionality fromQualificationRequirementsToDataFrame
toSearchHITs
. - From version 0.3.6, a global option
options('MTurkR.sandbox'=FALSE)
has been added to allow easier reuse of code between testing in the sandbox and the live server. The default behavior remains to use the live server, but using an option, which is called by all functions, allows one to toggle the global option and then recycle code verbatim. - Per API changes on April 8, 2013, several built-in QualificationTypes were removed. See
ListQualificationTypes
for the available types. - Improved error, warning, and message handling by converting calls to
cat
towarning
andmessage
, where appropriate. - Most API query functions now include a
validation.test
parameter that, when TRUE, runs pre-query checks on the MTurkR call and returns the full API query URL. The call is not executed. This can be used for pre- or post-request debugging. - The 'MTurkRlog.tsv' file is now located according to a global option, specified by
options(MTurkR.logdir = getwd())
. The previous default behavior (to store the file in the working directory) is preserved but can now be globally modified for all requests. This might be useful for storing all requests (from all MTurk projects) in a single directory.
ContactWorkers
now supplies additional information when attempting to contact ineligible workers (i.e., those who have not worked for the requester previously). These workers are indicated by a value ofHardFailure
in theValid
column of the response data frame. (#29)- All functions now explicitly convert factor arguments (e.g., for
worker
,qual
,hit
, etc.) to character in order to prevent some unintended side effects. (#26) - New versions of libcurl (>7.28) deprecate boolean values for SSL_VERIFYPEER and SSL_VERIFYHOST options.
request
was returning errors due to this and has been updated. Everything is backwards compatible to earlier versions of libcurl. (#31, h/t James Ben Taylor) GenerateHITLayoutParameter
now replaces any non-XML ampersands with&
, which had previously caused failures when creating HITs. (#30, h/t Eric Lin)- In
GetAssignment
, made a small change to prevent a warning and coercion of a one-assignment vector to a list. (h/t Eric Lin) - Two HITReviewPolicy names weres changed per a discussion on the AWS developer forum. Details here: https://forums.aws.amazon.com/thread.jspa?threadID=135285.
- In
HITStatus
andHITsToDataFrame
the correct capitalization of "Of" (from lower to upper) has been corrected throughout. - A series of related changes were made to
GetAssignment
,AssignmentsToDataFrame
andQuestionFormAnswersToDataFrame
to handle Answer data structures with differing QuestionIdentifiers. (h/t Robert Vesco and Solomon Messing) - Eliminated several
response.group
options fromGetHITsForQualificationType
due to personal communication with AWS. - Fixed bug in
GetReviewableHITs
that correctly queried the API but returned an incomplete data frame. (h/t Eric Lin) - Fixed bug in
CreateHIT
, sayingtype
was not defined, that occurred whenhit.type
was non-NULL. (h/t Eric Lin) - Fixed bug in
GetHIT
, which trickled down throughHITsToDataFrame
andQualificationRequirementsToDataFrame
that caused error when retrieving HITs from the sandbox with user-defined qualifications. (h/t Eric Lin) - Fixed bug in
GenerateHTMLQuestion
related to XML encoding. (h/t Alex Neustädter) - In
request
and several convenience functions, correctedshell.exec
tobrowseURL
to be platform-independent. - Added filters to
request
to handle a variety of problematic characters (that might emerge from FreeText responses in assignments). (h/t and contributions from Solomon Messing) - removed references to
shell.exec
and replaced withbrowseURL
.
- Where appropriate, functions using
hit.type
parameters are now described (correctly) as allowing vectors of HITTypeIds rather than just a single HITTypeId. See documentation. - Documentation for
ContactWorkers
now describes in greater detail what happens when attempting to contact ineligible workers. (#29)
CreateHIT
now provides an option to validate the 'question' parameter for HTMLQuestion, ExternalQuestion, and QuestionForm HIT structures.CreateQualificationType
now provides options to validate the 'test' and/or 'answerkey' parameters for QuestionForm and AnswerKey structures, respectively.GenerateAnswerKey
was modified to accept slightly different inputs for the 'questions' parameter. A new function,AnswerKeyTemplate
, produces a user-modifiable template (as a list) for that parameter based on a QuestionForm data structure for which an AnswerKey is desired.- When internal functions (described in the documentation of
XMLToDataFrame
) that normally return named lists have nothing to translate to a data frame, they now return named lists with NULL values rather than simply a single NULL.
- Fixed bug in
GetAssignments
that prevented the return of assignments for an entire HITType or for multiple HITs. Specifically, previous version was retrieving assignments via the API but not returning them to the user. (h/t Robert Vesco)
- To improve speed and reduce the number of API calls,
HITsToDataFrame
, which is called bySearchHITs
,GetHIT
, etc., now uses the convenience functionListQualificationTypes
to return the name of QualificationRequirements when applicable. - Expanded the functionality of
ContactWorkers
to allow a 'batch' mode, wherein workers are contacted with generic (i.e., not customized) email messages and subject lines in batches of 100. - Text sent to console when
print=TRUE
modified slightly, so that iteration numbers are printed for each iteration (to monitor progress of mutli-item requests). - ResponseGroups updated to current API specifications for
CreateHIT
,GetAssignments
,GetHIT
,GetStatistic
,GetWorkerStatistic
, andSearchHITs
. These now include an optional "Request" ResponseGroup to simply return information about the API call without executing that call. AssignmentsToDataFrame
now returns a "RequesterFeedback" variable, providing access to feedback supplied to workers whenGetAssignments
is called with the "AssignmentFeedback" ResponseGroup.- Updates were made to
GenerateAnswerKey
(see documentation) and a new functionAnswerKeyToDataFrame
was released. QuestionFormToDataFrame
created. See documentation for details.
- MTurk API operation 'ChangeHITTypeofHIT' typo was fixed to 'ChangeHITTypeOfHIT'.
- A small change was made to
BlockWorkers
to allow a single reason to be used for multiple workers, as originally intended. - Fixed bug in
GetAssignments
to allow retrieval of assignments by status, as originally intended. - Fixed bug in
AssignmentsToDataFrame
to correctly store 'ApprovalTime' or 'RejectionTime' in 'ApprovalRejectionTime' - Bug fixes to
CreateQualificationType
related to parsing of XML in 'test' and 'answerkey' parameters. - Modified
credentials
to pass CRAN checks.
- Documentation for
CreateQualificationType
notes web browser-dependent constraints on URL length that may produce unintended behavior when 'browser=TRUE' and a 'test' parameter is specified. - Added documentation for
AnswerKeyToDataFrame
. - Various copyedits.
- A completely new GUI interface for managing MTurkR, which now suggests library(tcltk), has been added. The previous, text-based wizard remains available by calling
mturkr.wizard("simple")
. - Support for ReviewPolicies has been added, both creating them using
GenerateReviewPolicy
and retrieving their results usingGetReviewResultsForHIT
. - Support for AnswerKey data structures has been added, for use in
CreateQualificationType
. - Added simple checks for 'sortproperty', 'sortdirection', 'pagesize', and 'pagenumber' parameters in relevant functions.
- Expanded support for QuestionForm data structures is currently under development and should be available in the next release.
- A number of bug fixes have been corrected throughout the package. Most were minor and related to output, but some like the 'return.all' parameter in
GetAssignments
, were producing unintended behavior. - Various mislabeled function parameters (used within functions) have been corrected (some were creating notes on R CMD check).
request
was modified to remove problematic whitespace characters when writing log entries (which made reading the log file into R problematic).
- Fixed a number of minor errors in documentation.
- Expanded documentation for functions associated with AnswerKey and ReviewPolicy data structures.
- Expanded documentation for 'sortproperty' and 'sortdirection' parameters in relevant functions.