At the heart of the Booking API lies a booking/availability profile. This profile consists of a set of properties that describe calendar availability and the types of meetings that can be booked. It includes the following information:

  1. Work hours
  2. Meeting duration
  3. Meeting subject
  4. Meeting description
  5. Meeting teleconference link
  6. Meeting location
  7. Profile scheduler link
  8. Profile active period
  9. And more…

To create a new booking profile POST json payload to the /book/profiles endpoint:

curl -H 'Authorization: Bearer <access token>' \
    -X POST https://api.aurinko.io/v1/book/profiles \
    -d '{
        "id": 1,
        "name": "aurinkoDemo",
        "durationMinutes": 30,
        "availabilityStep": 15,
        "timeAvailableFor": "30D",
        "subject": "Aurinko Demo",
        "description": "A conference call with Aurinko.",
        "location": "Teleconference",
        "workHours": {
            "timezone": "Americas/New\_York",
            "daySchedules": [
                {
                    "dayOfWeek": "monday",
                    "workingIntervals": [{"start": "14:15:22Z","end": "14:15:22Z"},...]
                },...
            ],
        },
        "context": "string",
        "startConference": true
}'  

You can insert variables like {{name}}, {{comments}} in the meeting description text. They will be passed to a scheduling widget to be filled by an end user booking a meeting (see additionalFields of the availability endpoint below).

Use PATCH request to update existing profiles:

curl -H 'Authorization: Bearer <access token>' \
    -X PATCH https://api.aurinko.io/v1/book/profiles/{id} \
    -d '{
        "name": "aurinkoDemo",
        "durationMinutes": 30,
        "availabilityStep": 15,
        "timeAvailableFor": "30D",
        "subject": "Aurinko Demo",
        "description": "My new event description",
        "location": "Google Hangout",
        "context": "string",
        "startConference": true
}'  

Once a booking profile is created, the Booking API can be used to query a user’s availability for the types of meetings defined in the profile and within the specified work hours.

curl -X GET https://api.aurinko.io/v1/book/{aurinkoClientId}/{profileName}/meeting

This endpoint produces information that can be used to build a public calendar page like Aurinko’s Calendar Page.

Note, that this endpoint does not require any authentication.

{
    "items": [
        {
            "start": "2024-01-27T14:00:00Z",
            "end": "2024-01-27T14:45:00Z"
        },...
    ],
    "startTime": "2024-01-01T00:00:00Z",
    "endTime": "2024-04-01T00:00:00Z",
    "durationMinutes": 45,
    "availabilityStep": 15,
    "subject": "Aurinko Demo",
    "primaryColor":"#303030",
    "secondaryColor":"#30A9EE",
    "additionalFields": [
        {
            "name":"comment",
            "type":"text",
            "default":null
        },...
    ]
}

The additionalFields array contains the {{variables}} that you specified in the meeting description text. If you’re building your own scheduling widget it needs to ask the end user for those inputs. Booking a meeting will require the fields that don’t specify defaults.

Book a meeting by sending json payload to the /book/{auringoClientId}/{profileName}/meeting endpoint:

curl -X POST {aurinkoClientId}/{profileName}/meeting \
    -d '{
    "time": {
        "start": "2024-01-27T14:00:00Z",
        "end": "2024-01-27T14:45:00Z"
    },
    "name": "string",
    "email": "string",
    "substitutionData": {
        "property1": "string",
        "property2": "string"
    }
}'  

A new event will be created on the calendar associated with the booking profile and the person specified by the email and name fields will be invited to the event.