curl --request POST \
--url https://api.letsdothis.com/v0/reserved-entries/participants/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"assignments": [
{
"reservedEntryGroupId": "<string>",
"bookingId": "<string>",
"entryId": "<string>",
"participantId": "<string>",
"reservationCode": "<string>"
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
assignments: [
{
reservedEntryGroupId: '<string>',
bookingId: '<string>',
entryId: '<string>',
participantId: '<string>',
reservationCode: '<string>'
}
]
})
};
fetch('https://api.letsdothis.com/v0/reserved-entries/participants/import', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.letsdothis.com/v0/reserved-entries/participants/import"
payload = { "assignments": [
{
"reservedEntryGroupId": "<string>",
"bookingId": "<string>",
"entryId": "<string>",
"participantId": "<string>",
"reservationCode": "<string>"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"jobId": "664a4b5c6d7e8f901a2b3c4d",
"status": "queued"
}{
"statusCode": 400,
"error": "<string>",
"message": "<string>"
}{
"statusCode": 409,
"error": "<string>",
"message": "<string>"
}{
"statusCode": 413,
"error": "<string>",
"message": "<string>"
}{
"error": "validation_failed",
"message": "<string>",
"totalRows": 123,
"rowsWithErrors": 123,
"errorCount": 123,
"summary": [
{
"code": "<string>",
"count": 1,
"message": "<string>",
"examples": [
{
"rowIndex": 123,
"reservedEntryGroupId": "<string>",
"bookingId": "<string>",
"entryId": "<string>",
"participantId": "<string>",
"value": "<string>"
}
]
}
],
"errors": [
{
"rowIndex": 123,
"errors": [
{
"code": "<string>",
"message": "<string>"
}
],
"reservedEntryGroupId": "<string>"
}
],
"truncated": true
}{
"statusCode": 429,
"error": "<string>",
"message": "<string>"
}Import reserved entry participants
Asynchronously assigns already-imported entries to reserved entry groups. Each row names its group and exactly one of bookingId, entryId or participantId; a bookingId row is expanded to every participant on that booking, so results are reported per participant and can outnumber the rows submitted.
The whole batch is resolved synchronously and either every row resolves (202 with a job to poll) or nothing is imported (422 with every problem).
Assignments are create-once and scoped to (reservedEntryGroupId, participantId): re-importing a participant already holding a place in that group reports alreadyImported and consumes no place, and a participant already placed in a different group is reported as ALREADY_ASSIGNED_ELSEWHERE rather than moved.
Send an Idempotency-Key header to make the submission replayable: retrying the same key and body returns the original job; reusing a key with a different body is rejected (409).
curl --request POST \
--url https://api.letsdothis.com/v0/reserved-entries/participants/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"assignments": [
{
"reservedEntryGroupId": "<string>",
"bookingId": "<string>",
"entryId": "<string>",
"participantId": "<string>",
"reservationCode": "<string>"
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
assignments: [
{
reservedEntryGroupId: '<string>',
bookingId: '<string>',
entryId: '<string>',
participantId: '<string>',
reservationCode: '<string>'
}
]
})
};
fetch('https://api.letsdothis.com/v0/reserved-entries/participants/import', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.letsdothis.com/v0/reserved-entries/participants/import"
payload = { "assignments": [
{
"reservedEntryGroupId": "<string>",
"bookingId": "<string>",
"entryId": "<string>",
"participantId": "<string>",
"reservationCode": "<string>"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"jobId": "664a4b5c6d7e8f901a2b3c4d",
"status": "queued"
}{
"statusCode": 400,
"error": "<string>",
"message": "<string>"
}{
"statusCode": 409,
"error": "<string>",
"message": "<string>"
}{
"statusCode": 413,
"error": "<string>",
"message": "<string>"
}{
"error": "validation_failed",
"message": "<string>",
"totalRows": 123,
"rowsWithErrors": 123,
"errorCount": 123,
"summary": [
{
"code": "<string>",
"count": 1,
"message": "<string>",
"examples": [
{
"rowIndex": 123,
"reservedEntryGroupId": "<string>",
"bookingId": "<string>",
"entryId": "<string>",
"participantId": "<string>",
"value": "<string>"
}
]
}
],
"errors": [
{
"rowIndex": 123,
"errors": [
{
"code": "<string>",
"message": "<string>"
}
],
"reservedEntryGroupId": "<string>"
}
],
"truncated": true
}{
"statusCode": 429,
"error": "<string>",
"message": "<string>"
}403. Contact your Let’s Do This representative if you’d like access.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
An asynchronous request to assign already-imported entries to reserved entry groups: the whole batch validates or none of it is queued.
The assignments to make. A row naming a bookingId expands to one assignment per participant on that booking, so a batch may produce more assignments than it has rows.
1 - 1000 elementsShow child attributes
Show child attributes
Whether to raise a group's maxCapacity to fit the batch rather than rejecting it. Off by default. When several groups are short, each is raised by its own shortfall. A group's capacity is the number of places in it, so raising it creates the additional places.
Every raise is reported in capacityChanges on the job status, so the resulting block sizes can be audited from the API.
Was this page helpful?

