Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Position is one of the base type which we are using in Queue system. It includes This document outlines the structure of the "Position" object used in the Queue System. Positions, including dates, labels, language and more information that can be used. General (or walk in or A-type) tickets are first level of implementation, Bookings using the same interface but also have bookings property in body.

Schema:

...

id - internal ticket identifier

...

location - queue display name (store, department and others info)

...

type - ticket type, possible values: anonymous (walk-in ticket), booking (pre-booking), manual (tickets issued by staff)

...

priority - internal value

...

locale - customer preferred language (en, ar, sv)

registrationData - an array of captured information during registration process.

...

name - value specified in Console. Will be used for analytics

...

value - value of the input or selectable field

...

label - label presented to the customer so customer can understand what is it

type - type of the field. Might be

Code Block
TEXTAREA = 'textarea',
INPUT = 'input',
CHECKBOX = 'checkbox',
RADIO = 'radio',
PHONE = 'phone',
EMAIL = 'email',
CATEGORY = 'category',

...

placeholder - optional, for input will be used as a text for placeholder

...

validationRules -

  • required

  • regexp - used for customer verifion of the value. Mostly appliable for inputs

  • phone - if it’s phone type, phone rule validations will be used

  • email - if it’s email type, email rule validations will be used

notification - customer contact information

...

type - type of notifications that customer subscribed to (phoneNumber or email)

...

settings.from - not relevant/internal use

...

settings.to - customer phone number. Optional, won’t be presented if native notifications are enabled.

...

settings?.recipient - customer email (in case of email or phone notifications)

status -

...

'notifiedToApproach' - ticket is called to enter the location

...

'notifiedToLeaveSoon' - we sent sms with “It is your turn to leave soon” content

...

‘notifiedToLeave' - we sent a message with “It’s time to leave“ content

...

'remindedAboutBooking' - used for curbside pickup only. A reminder for curbisde appointment

...

'notifiedAboutBooking' - used for curbside pickup only. We sent at appointment time

'notifiedToReschedule' - used for curbside pickup only. Send sms if timeslot for pickup is missed.

...

booking

  • start - timeslot start in case of bookings, local timezone

  • end - timeslot end in case of bookings, local timezone

  • appointment

    1. displayName - display name for the manager like "Alexey Khorev"

    2. eventId - id in outlook calendar for the event

    3. managerEmail - email for the manager

    4. managerId - id from AD database

  • virtualAppointment - keep information if it’s a virtual appointment or not. Optional

    • isEnabled - shows if it’s a virtual appointment or not (true \ false). In case of false all other fields in virtualAppointment are omitted.

    • eventId - event id specified in MS Graph api. Default user for the organisation is associated with this event.

    • url - link to ms teams call for joining

    • managerId - manager id from AD

    • managerEmail - manager email (if not specified, default manager for organisation will be used)

...

servedBy - info about the person who actually served the ticket. The point of truth in case of differences

  • id - id from Ombori database

  • email - person’s email, should be used for third parties for identification. Should be used as an identifier for third parties

  • firstName - name for the person, could be omitted

  • lastName - person’s lastName, could be omitted

  • displayName - full name for the person, could be omitted

...

status - ticket status, possible values: draft (pre-booking created but not active), pending (ticket is inside queue), notified (ticket called out by staff), fulfilled (ticket checked in by the staff), completed (ticket has been served), rejected (ticket was cancelled either by customer or staff)

...

extraStatus:

  • goToEntrance - ticket should approach the entrance (“yellow state” on the screen for ticket)

  • rejectedByCustomer - is used for understanding if ticket was rejected by customer or not

...

station information

  • id - internal id

  • label - label which is shown for customers and in admin

...

label - assigned ticket number (A1, B2 and such)

...

category - present information about selected category

  • id

  • title - how customer sees it

  • labelPrefix - what is the prefix used for this category (and for this ticket accordingly)

  • color - with which color ticket was marked in the Console

...

queue - queue identifier, can be used to correlate data

...

createdAt - ticket creation time, ISO string

...

fulfilledAt - time when customer checked-in datetime, ISO string

...

calledAt - customer called next (by pressing call next of selecting the ticket from the list of pending tickets), ISO string

...

completedAt - time when ticket was moved to completed state (after ticket was fulfilled, the terminate state), ISO string

...

rejectedAt - time when ticket was rejected, ISO string

...

bookingReminderAt - if configured, when the booking reminder will be sent to customer, ISO string

...

activatedAt - time when ticket was activated (order pickup, the terminate state), ISO string

...

fulfilledBy - who actually checked the ticket in

...

servedById - who actually served the ticket (id in Active Directory database on in Ombori database, depends on setup)

...

QRCodeCheckInPositionId - value of the QR code to render to allow check-in by the staff

Info

Changelog 23-09-2021:

  1. Added category property specification

  2. Updated registrationData specification

Info

Changelog 21-04-2021:

  1. Added servedBy property specification

  2. Added booking.appointment property specification

Info

Changelog 22-02-2021:

  1. Added station property specification

Info

Changelog 28-01-2021:

  1. Added calledAt, completedAt, rejectedAt

, and additional details, are central to managing queue interactions. These include general walk-in tickets and bookings, both utilizing similar interfaces but with specific properties related to reservations.

Schema Overview

Field

Type

Description

id

string

Internal ticket identifier.

location

string

Queue display name, such as store or department.

type

string

Type of ticket (e.g., 'anonymous' for walk-in, 'booking' for pre-booking, 'manual' for staff-issued).

priority

integer

Internal priority value.

locale

string

Customer's preferred language (e.g., 'en', 'ar', 'sv').

registrationData

array

Captures information during the ticket creation process. Detailed below.

notification

object

Customer contact information for notifications. Detailed below.

status

string

Current status of the ticket. Detailed below.

booking

object

Information related to bookings. Detailed below.

servedBy

object

Information about the person who served the ticket. Detailed below.

station

object

Information about the station where the ticket was served. Detailed below.

queue

string

Identifier for the queue.

createdAt

datetime

ISO string indicating when the ticket was created.

fulfilledAt

datetime

Time when customer checked in.

calledAt

datetime

Time when customer was called next.

completedAt

datetime

Time when the ticket moved to completed status.

rejectedAt

datetime

Time when the ticket was rejected.

bookingReminderAt

datetime

Time when the booking reminder will be sent, if configured.

activatedAt

datetime

Time when the ticket was activated (e.g., for order pickup).

fulfilledBy

string

Identifier of the staff who checked the ticket in.

servedById

string

Identifier of the staff who served the ticket, from AD or Ombori database.

QRCodeCheckInPositionId

string

Value of the QR code for staff to allow check-in.

Registration Data:

Field

Type

Description

name

string

Field name as specified in Console.

value

string

Value entered by the user.

label

string

Label presented to the customer.

type

string

Type of field (e.g., 'input', 'checkbox').

placeholder

string

Optional placeholder text for input fields.

validationRules

object

Contains 'required', 'regexp' for validation.

Notification:

Field

Type

Description

type

string

Notification type (e.g., 'phoneNumber', 'email').

settings

object

Settings for the notification (detailed below).

Notification Settings:

Field

Type

Description

from

string

Internal use, typically not presented.

to

string

Customer phone number in E.164 format.

recipient

string

Customer email address.

Booking:

Field

Type

Description

start

datetime

Start time of the booking, local timezone.

end

datetime

End time of the booking, local timezone.

appointment

object

Details of the appointment (detailed below).

virtualAppointment

object

Virtual appointment details if applicable.

Virtual Appointment:

Field

Type

Description

displayName

string

Display name of the manager.

eventId

string

ID of the event in the calendar.

managerEmail

string

Email of the manager.

managerId

string

ID of the manager from AD database.

Served By:

Field

Type

Description

id

string

User ID from the database.

email

string

Email of the person who served.

firstName

string

First name (optional).

lastName

string

Last name (optional).

displayName

string

Full name (optional).

Station Information:

Field

Type

Description

id

string

Internal ID of the station.

label

string

Label shown to customers and in the admin panel.

labelPrefix

string

Prefix used for this ticket category.

color

string

Color used to mark the ticket in the Console.

Example:

Code Block
  {
    "id": "_id_",
    "location": null,
    "type": "booking",
    "priority": 100,
    "locale": "en",
    "notification": {
        "type": "phoneNumber",
        "settings": {
            "from": "",
            "to": "+phoneNumber",
            "recipient": "test@email.com"
        },
    },
    "registrationData": {
      "phone": { value: "+48888888888" },
    },
    "booking": {
        "start": "yyyy-MM-dd HH:mm", // with respect to timezone
        "end": "yyyy-MM-dd HH:mm", // with respect to timezone
        "appointment": {
          displayName: "AlexeyJohn Khorev"Doe
          eventId: "****"
          managerEmail: "manager@ombori.com"
          managerId: "f31c6a56-........"
        },
        "virtualAppointment": {
          eventId: "AAMkADExYWZmYjI4LTMxMjIt......="
          isEnabled: true
          managerEmail: "virtual-booking@some-domen.com"
          managerId: "9cd376b6-......."
          url: "https://teams.microsoft.com/l/meetup-join/19....."
        }
    },
    "servedBy": {
      id: "fc13d10c-.......",
      email: "manager@ombori.com",
      firstName: "",
      lastName: ""
    },
    "station": {
      "id": "1234_id",
      "label": "A"
    },
    "status": "draft",
    "label": "", // label will generated when time comes
    "queue": "_queue_id_",
    "createdAt": "2020-05-26T08:47:37.1700000Z",
    "calledAt": "2020-05-26T15:30:37.1700000Z",
    "fulfilledAt": "2020-05-26T17:15:59.6100000Z",
    "completedAt": "2020-05-26T17:16:59.6100000Z",
    "bookingReminderAt": null,
    "QRCodeCheckInPositionId": "{"type":"check-in-position","positionId":"ce4a66df-51ff-47af-bf5e-4e26f82d266b"}"
  }

...