Skip to main content

Get Appointments

This section covers endpoints for retrieving both individual appointments and lists of appointments.

πŸ”Ή Get Single Appointment​

Retrieve detailed information about a specific appointment by its ID.

Endpoint Details​

GET /api/v1/appointments/{appointmentId}

πŸ”’ Authentication​

HeaderRequiredDescription
Content-TypeYesMust be application/json
AuthorizationYesFormat: ONLIVESITE Credential:ONLIVEAccessKeyId, Signature=CalculatedSignature

🧩 Request Example​

curl -X GET "https://openapi.onlive.site/api/v1/appointments/1610c525-f19a-40d0-8cd1-03daba3d2d98" \
-H "Content-Type: application/json" \
-H "Authorization: ONLIVESITE Credential:ONLIVEAccessKeyId, Signature=CalculatedSignature"

πŸ“€ Response Format (HTTP 200)​

{
"id": "1610c525-f19a-40d0-8cd1-03daba3d2d98",
"deletedAt": null,
"createdAt": "2025-03-09T19:32:03.735Z",
"updatedAt": "2025-03-09T19:32:06.669Z",
"title": "Test Drive Standard",
"description": "",
"lang": "es",
"start": "2025-03-10T08:00:00.000Z",
"end": "2025-03-10T08:30:00.000Z",
"event": null,
"reminders": [
{
"time": 10,
"unit": "m"
}
],
"guests": [
{
"email": "[email protected]",
"extraFields": {
"phone": "+34600000000",
"lastName": "Doe",
"firstName": "John"
}
}
],
"extraFields": {
"area": "Madrid",
"city": "Alcobendas",
"street": "Carretera. De Fuencarral, 18",
"country": "Spain"
},
"calendarIds": ["af6c6be0-689a-4cf3-a8c8-550dd97b3a6b"],
"serviceId": "01392598-e4b2-4810-ac7c-8c9cf4286a26",
"state": "pending",
"blocked": false,
"origin": "onlive_public",
"organizationId": "26d47eec-c742-4b1c-9d70-9a1486260abd",
"userGroupId": "1be7bf10-5c72-480b-b0d7-1c2bb023225d"
}

❌ Error Responses​

400 Bad Request​

{
"statusCode": 400,
"message": "Invalid appointment ID format",
"errors": [
{
"field": "appointmentId",
"message": "Must be a valid UUID"
}
]
}

403 Forbidden​

{
"statusCode": 403,
"message": "Insufficient permissions to access the appointment"
}

404 Not Found​

{
"statusCode": 404,
"message": "Appointment not found"
}

πŸ”Ή List Appointments​

Retrieve a paginated list of appointments with optional filtering.

Endpoint Details​

GET /openapi/v1/appointments

πŸ“ Query Parameters​

ParameterTypeRequiredDescriptionExample
startDatestringNoStart of date range (ISO 8601)2025-05-01T00:00:00Z
endDatestringNoEnd of date range (ISO 8601)2025-05-31T23:59:59Z
pagenumberNoPage number for pagination (default: 1)1
limitnumberNoResults per page (default: 20)20
statestringNoFilter by appointment statepending
calendarIdsarrayNoFilter by calendar UUIDs["af6c6be0-689a-4cf3-a8c8-550dd97b3a6b"]
serviceIdstringNoFilter by service UUID01392598-e4b2-4810-ac7c-8c9cf4286a26
userGroupIdstringNoFilter by user group UUID1be7bf10-5c72-480b-b0d7-1c2bb023225d
searchstringNoFull-text search across appointments"Test Drive"

🧩 Request Examples​

Basic List Request​

curl -X GET "https://openapi.onlive.site/api/v1/appointments" \
-H "Content-Type: application/json" \
-H "Authorization: ONLIVESITE Credential:ONLIVEAccessKeyId, Signature=CalculatedSignature"

Filtered List Request​

curl -X GET "https://openapi.onlive.site/api/v1/appointments?state=pending&startDate=2025-05-01T00:00:00Z&endDate=2025-05-31T23:59:59Z" \
-H "Content-Type: application/json" \
-H "Authorization: ONLIVESITE Credential:ONLIVEAccessKeyId, Signature=CalculatedSignature"

πŸ“€ Response Format (HTTP 200)​

{
"items": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"externalId": "EXT-123",
"title": "Product Demo Meeting",
"description": "Demonstration of new product features to the client",
"start": "2025-05-20T14:00:00Z",
"end": "2025-05-20T15:00:00Z",
"lang": "en-US",
"calendarIds": ["123e4567-e89b-12d3-a456-426614174000"],
"serviceId": "123e4567-e89b-12d3-a456-426614174000",
"cancellationToken": "tkn_cancel_123",
"cancellationOrigin": "user",
"state": "pending",
"createdAt": "2025-05-22T10:30:00Z",
"updatedAt": "2025-05-22T10:30:00Z",
"guests": [
{
"email": "[email protected]"
}
],
"extraFields": {
"area": "Madrid",
"city": "Alcobendas",
"street": "Carretera. De Fuencarral, 18",
"country": "Spain"
},
"reminders": [
{
"time": 10,
"unit": "m"
}
],
"event": {
"eventId": "123e4567-e89b-12d3-a456-426614174000",
"iCallUrl": "https://meet.example.com/room/123",
"room": "Demo Room 1"
},
"origin": "web",
"agentComment": null,
"organizationId": "bfc5b6b5-1d67-419e-9025-96336f2330c6",
"cancelledAt": null
}
],
"total": 45,
"count": 10,
"currentPage": 1,
"totalPages": 5
}

❌ Error Responses​

400 Bad Request​

{
"statusCode": 400,
"message": "Invalid input parameters",
"errors": [
{
"field": "startDate",
"message": "Must be a valid ISO 8601 date"
}
]
}

403 Forbidden​

{
"statusCode": 403,
"message": "Insufficient permissions to list appointments"
}

πŸ“˜ Notes​

  1. Date Handling

    • All dates are in ISO 8601 format
    • Times are in UTC timezone
    • Date ranges are inclusive
    • Maximum date range is 6 months
  2. Pagination

    • Default page size is 20
    • Maximum page size is 100
    • Page numbering starts at 1
    • Total count is included in metadata
  3. Filtering

    • Multiple filters can be combined
    • Case-insensitive search
    • Partial matching for text fields
    • Exact matching for IDs

πŸ’‘ Tips​

  1. Use pagination parameters (page and limit) to manage large result sets
  2. Combine multiple filters to narrow down results
  3. Use the search parameter for full-text search across appointments
  4. Use date range filters to limit results to specific time periods
  5. Keep date ranges reasonable to optimize response times
  6. Cache results when appropriate

πŸ” Required Permissions​

  1. View Single Appointment

    • Organization-level read permission
    • Calendar-specific read permission (if applicable)
    • Service-specific read permission (if appointment is tied to a service)
  2. List Appointments

    • Organization-level list permission
    • Calendar-specific list permission (if filtering by calendar)
    • Service-specific list permission (if filtering by service)