Every field returned by GET /api/tickets — 3/14 & 3/25 events combined
origin. Online purchases (yourticket) have full customer info. POS tickets have zero customer data. Transfers lose the transaction link but gain originTicketId. There is no scan/check-in data on the ticket object — gate scans live on a separate endpoint.
| Field | Type | Example | Notes |
|---|---|---|---|
| _id | string | 69b5f6d51f1cc6ec13c6ebd8 | Unique ticket ID (MongoDB ObjectId) |
| secret | string | 30ca3817-c0de-44ce-acd1-... | UUID for ticket validation |
| barcode | string | 1433503567256775 | Scannable barcode number |
| __v | int | 1 | MongoDB document version |
| Field | Type | Example / Values | Notes |
|---|---|---|---|
| ticketName | string |
Match Day Ticket
BOGO Ticket
Season Ticket Holder Ticket
CESA Ticket
Furman Student Ticket
Group Ticket
United FC Ticket - $4 Giveback
|
Human-readable ticket type |
| ticketTypeId | string | 697a7b5803160cf4e7ee25d8 | Links to ticket type definition |
| type | string | SINGLE | Always SINGLE for these events |
| categoryName | string | GA Seating | Seating category label |
| categoryRef | string | 4fedfce9-f8b9-4fcb-b26f-... | UUID reference to category |
| status | string |
VALID
INVALID
|
Current ticket status |
| expired | bool | false | Whether ticket has expired |
| Field | Type | Example | Notes |
|---|---|---|---|
| realPrice | int | 15 | Actual price paid (whole dollars, not cents) |
| regularPrice | int | 15 | Face value / list price |
| currency | string | USD | Always USD |
| Field | Type | Example | Notes |
|---|---|---|---|
| name | string | Mateo Sánchez | Full display name empty on POS |
| firstname | string | Mateo | missing on POS |
| lastname | string | Sánchez | missing on POS |
| string | mateosanchez6310@gmail.com | missing on POS | |
| company | string | Kellee Patterson | Often just the buyer's name repeated |
| customerId | string | 69b5f6f37da4764d7466659b | Vivenu customer record missing on POS |
| street | string | 113 Leach St | missing on POS |
| line2 | string | (usually empty) | Address line 2 |
| city | string | Greer | missing on POS |
| state | string | SC | missing on POS |
| postal | string | 29651 | missing on POS |
| country | string | US | missing on POS |
| Field | Type | Example / Values | Notes |
|---|---|---|---|
| origin | string |
yourticket
pos
transfer
|
How the ticket was created |
| salesChannelId | string |
sch-web
sch-pos
|
Sales channel identifier |
| transactionId | string | 69b5f71e89c3e3ef2b8ec3a2 | Links to transaction empty on transfers |
| checkoutId | string | 69b5f6d51f1cc6ec13c6ebd5 | Checkout session missing on transfers |
| checkoutItemId | string | 730f0fd0-fcdf-4154-... | Item within the checkout |
| cartItemId | string | 5fd810bf-d91c-469b-... | Item within the cart |
| underShopId | string | 69b465049bbb76896f7746c2 | Sub-shop / distribution channel conditional |
| posId | string | 6818f31fa0f594ab0922526d | POS only — which terminal |
| originTicketId | string | 69b4c6dfb3f29d8063c212d8 | transfer only — original ticket ID |
| batch / batchCount | string / int | 973d1157-621d-4912-... | conditional — batch-created tickets (STH allocations) |
| Field | Type | Example | Notes |
|---|---|---|---|
| eventId | string | 697a6b270b5edcfc03ba5171 | Which event this ticket belongs to |
| sellerId | string | 6761e106670b20878028f5af | Your org's seller ID |
| Field | Type | Example | Notes |
|---|---|---|---|
| seatingInfo._id | string | vazP2iqCP0j5Xh | Seat/section ID in seatmap |
| seatingInfo._type | int | 7 | Seat type (7 = GA) |
| seatingInfo.categoryId | string | rEnklPoaFo7AS6 | Category within seatmap |
| seatingInfo.statusId | string | z1v2V5ZXdkmrh1 | Seat status |
| seatingInfo.name | string | GA Seating | Human-readable seat label |
| Field | Type | Values / Example | Notes |
|---|---|---|---|
| history[] | array | Array of lifecycle event objects. Each ticket has 1–4 entries. | |
| history[].type | string |
ticket.created
ticket.validated
ticket.invalidated
ticket.transferred
ticket.createdFromTransfer
ticket.printStatusChanged
ticket.mail
|
Event type |
| history[].date | string | 2026-03-15T00:01:25.157Z | ISO timestamp |
| history[].userId | string | 68221060626354b28327fd82 | Staff user who performed the action (not always present) |
| history[].data.* | object | {email: "..."} or {status: "..."} | Extra data on ticket.mail and ticket.printStatusChanged |
| Field | Type | Example | Notes |
|---|---|---|---|
| deliveryType | string | VIRTUAL | All digital delivery |
| personalized | bool | false | Whether ticket is personalized |
| personalizations | array | [] | Always empty on these events |
| claimed | bool | false | Whether ticket has been claimed |
| printStatus | string | — | conditional — only after printStatusChanged event |
| createdAt | string | 2026-03-15T00:01:25.158Z | When ticket was created |
| updatedAt | string | 2026-03-15T00:02:38.476Z | Last modification timestamp |
| entryPermissions | array | [] | Always empty |
| excludedEventIds | array | [] | Always empty |
| triggeredBy | array | [] | Always empty |
| addOns | array | [] | Always empty |
| capabilities / _locks | array | [] | Always empty |
Separate API: GET https://portier.vivenu.com/api/scans — gate scan records
vivenu.com/api (Main API). Scans live on portier.vivenu.com/api (Portier API). They link via ticketId and barcode. The Portier scan record is much simpler — 15 fields vs. 60 on a ticket.
| Field | Type | Example | Notes |
|---|---|---|---|
| _id | string | 69b5fe04d027cc3860f2af96 | Unique scan record ID |
| ticketId | string | 69b474fce1f6901b6401bc54 | Links to ticket._id on Main API |
| barcode | string | 3813055558178802 | Barcode that was scanned |
| name | string | Pita Yanga | Ticket holder name at scan time |
| eventId | string | 697a6b270b5edcfc03ba5171 | Which event |
| ticketTypeId | string | 69a887a2c543309f52a8fd61 | Ticket type definition ID |
| ticketName | string | Away Player Ticket | Human-readable ticket type at scan time |
| type | string |
checkin
checkout
|
checkin = entry gate, checkout = exit gate (71 total checkout scans across all events) |
| scanResult | string |
approved
declined
|
All current scans are approved; 0 declined found |
| time | string | 2026-03-15T00:32:04.938Z | Exact moment the scan happened (ISO timestamp) |
| deviceId | string | 68af55dbcb3efc61e2602a7b | Which scanning device / phone was used |
| sellerId | string | 6761e106670b20878028f5af | Your org's seller ID |
| parentEventId | string | 67781b9cddf518bf9a58bcab | checkout only — parent event (e.g., season ticket event) |
| createdAt | string | 2026-03-15T00:32:05.058Z | When record was created in DB |
| updatedAt | string | 2026-03-15T00:32:05.058Z | Last update timestamp |
| Param | Values | Notes |
|---|---|---|
| top | 1–200 | Number of results per page |
| eventId | 697a6b270b5edcfc03ba5171 | Filter by event |
| type |
checkin
checkout
|
Filter by scan direction |
| scanResult |
approved
declined
|
Filter by outcome |
ticketId → ticket._id. The scan gives you when and which device; the ticket gives you who, how much, and how they bought.