curl --request GET \
--url https://api.letsdothis.com/v0/bookings/line-items/import/{jobId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.letsdothis.com/v0/bookings/line-items/import/{jobId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.letsdothis.com/v0/bookings/line-items/import/{jobId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"jobId": "65e5f60718293a4b5c6d7e8f",
"status": "completed",
"counts": {
"pending": 0,
"processing": 0,
"success": 1,
"failure": 0,
"cancelled": 0,
"total": 1
},
"rowCounts": {
"succeeded": 1,
"alreadyImported": 0,
"failed": 1,
"total": 2
},
"results": [
{
"bookingId": "65a1b2c3d4e5f60718293a4b",
"externalLineItemId": "order-1042-tshirt",
"lineItemId": "65b2c3d4e5f60718293a4b5c",
"status": "succeeded",
"outcome": "created",
"errors": [],
"allocationId": "65c3d4e5f60718293a4b5c6d"
},
{
"bookingId": "65a1b2c3d4e5f60718293a4b",
"externalLineItemId": "order-1042-medal",
"status": "failed",
"errors": [
{
"code": "UNKNOWN_BOOKING",
"message": "Booking could not be found for this organiser"
}
]
}
]
}{
"statusCode": 404,
"error": "<string>",
"message": "<string>"
}Get line item import status
Returns the job id, lowercase job status, booking-group progress counts, and available per-item results for an asynchronous line-item import, matching the booking-import polling envelope.
curl --request GET \
--url https://api.letsdothis.com/v0/bookings/line-items/import/{jobId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.letsdothis.com/v0/bookings/line-items/import/{jobId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.letsdothis.com/v0/bookings/line-items/import/{jobId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"jobId": "65e5f60718293a4b5c6d7e8f",
"status": "completed",
"counts": {
"pending": 0,
"processing": 0,
"success": 1,
"failure": 0,
"cancelled": 0,
"total": 1
},
"rowCounts": {
"succeeded": 1,
"alreadyImported": 0,
"failed": 1,
"total": 2
},
"results": [
{
"bookingId": "65a1b2c3d4e5f60718293a4b",
"externalLineItemId": "order-1042-tshirt",
"lineItemId": "65b2c3d4e5f60718293a4b5c",
"status": "succeeded",
"outcome": "created",
"errors": [],
"allocationId": "65c3d4e5f60718293a4b5c6d"
},
{
"bookingId": "65a1b2c3d4e5f60718293a4b",
"externalLineItemId": "order-1042-medal",
"status": "failed",
"errors": [
{
"code": "UNKNOWN_BOOKING",
"message": "Booking could not be found for this organiser"
}
]
}
]
}{
"statusCode": 404,
"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.
Path Parameters
Response
Default Response
Progress and completed row results for an asynchronous line-item import.
results is the outcome: one entry per submitted row, carrying that row's own status and errors. It is the only field that reports whether any data landed, so decide what to action from it.
status and counts describe progress, and neither reports row success. status is completed once the work finished, including work whose every row was rejected. counts is per submitted booking group rather than per row or internal queue task. rowCounts totals the row outcomes in results and accumulates the same way, so a non-zero rowCounts.failed is the signal to inspect results.
queued, processing, completed, cancelled Booking-group progress counts for an import job, matching the booking-import polling envelope. total remains one unit per submitted booking group even when several groups share an internal queue task. A group that runs to completion counts as success even when its rows report validation failures — per-row outcomes (including failures such as UNKNOWN_BOOKING) are reported in results, not here.
Show child attributes
Show child attributes
Outcome totals for an import job, folded from results: one count per reported result, not per submitted row. Most imports report one result per submitted row, but an endpoint can report several — a reserved-entry participant row covering a booking reports one result per participant — so total can legitimately exceed the submitted row count and is not a reconciliation check against it. The totals accumulate the same way results does: a processing job counts the results reported so far. A non-zero failed is the signal to inspect results and act on the failures.
Show child attributes
Show child attributes
- LineItemImportJobResult
- LineItemImportJobResult
Show child attributes
Show child attributes
Was this page helpful?

